文档首页 > > 用户指南> 日志管理>

日志结构化

日志结构化

分享
更新时间:2021/01/19 GMT+08:00

日志数据可分为结构化数据和非结构化数据。结构化数据指能够用数字或统一的数据模型加以描述的数据,具有严格的长度和格式。非结构化数据指不便于用数据库二维逻辑表来表现的数据,数据结构不规则或不完整,没有预定义的数据模型。

日志结构化是以日志流为单位,通过不同的日志提取方式将日志流中的日志进行结构化,提取出有固定格式或者相似程度较高的日志,过滤掉不相关的日志,以便对结构化后的日志按照SQL语法进行查询与分析。

目前仅“拉美-圣地亚哥”区域不支持日志结构化功能。

注意事项

  • 日志结构化是以日志流为单位,请先创建一个日志流。
  • 日志流中的大部分日志需有一定的规则,否则结构化是无意义的。

结构化原始日志

通过对日志流添加提取规则将日志流中的原始日志按一定的规律进行提取,并将提取后的日志整合到一起,以便进行SQL查询与分析。

下面详细介绍原始日志结构化的操作步骤:

  1. 登录LTS控制台,在左侧导航栏中选择“日志管理”。
  2. 结构化日志以日志流为单位,请在“日志管理”页面选择目标日志组和日志流。
  3. 在日志流详情页面,单击左侧导航栏“配置中心”,选择“结构化配置”,进入日志结构化配置页面,选择日志提取方法,如下图所示。

    • 正则分析:使用正则表达式提取字段。
    • JSON:通过提取JSON字段将其拆分为键值对。
    • 分隔符:使用分隔符(例如:逗号、空格或字符)提取字段。
    • 结构化模板:系统内置ELB、VPC、CTS云服务的结构化模板。
    图1 日志结构化

  4. 选择示例日志:应选择一条比较典型的日志作为示例日志。在“步骤1 选择示例日志”中,可单击“从已有日志中选择”,在弹出框中根据业务需求选择待操作的日志,单击“确定”。通过选择不同时间段“近1小时”、“近1天”、“近1周”或者“自定义时间段”筛选日志。

    “JSON”和“分隔符”方式可以直接在输入框中输入待操作的日志。

    “结构化模板”方式提取日志时,日志从对应的云服务接入,可以直接应用模板的数据模型作为示例日志。

  5. 当选择“分隔符”方式提取日志时,需要根据原始日志内容选择分隔符,或自定义其他需要的特殊字符作为分隔符,如下图所示。

    图2 指定分隔符

  1. 字段提取。可将输入或选择的日志自动提取为以一个示例字段对应一个字段名称的格式的日志解析结果。

    • 正则分析日志。在示例日志中,用鼠标选中待结构化的日志内容,在弹出的对话框中为选中内容设置一个名称,并单击“添加”。如下图所示。
      图3 选择字段

      分词符指将日志内容切分为多个单词的符号,默认分词符包括, '";=()[]{}@&<>/:\n\t\r,在日志搜索或者对日志进行结构化时,可以选取相邻两分词符之间的单词。

    • JSON格式日志。在“步骤2 字段提取”下单击“智能提取”。以如下原始日志为例进行分析:

      将以下原始日志输入待操作框中。

      {"code":"201","source_ip":"10.10.1.10","trace_type":"ApiCall","event_type":"global","project_id":"221123nsada3sda3231das3111ndsab","trace_id":"1eesdd-dad6-11dsaea-edaxfeqdf","trace_name":"demodemodemo","resource_type":"token","trace_rating":"normal","service_type":"IAM","resource_id":"98763hkjhdteoi03861732hjh7983bhd","tracker_name":"global","time":"1597042369296","resource_name":"demodemodemo/demo","record_time":"1597042370464","user":{"domain":{"name":"testdemo","id":"21185d8818e443e1ryjkh71622f09212b"},"name":"testdemo/demo","id":"6hfakl86faqw87dsasasadf09ajbml"}}

      通过智能提取结果如下图。

    • 分隔符格式日志。在“步骤3字段提取”下单击“智能提取”。以如下原始日志为例进行分析:

      将以下原始日志输入待操作框中。

      1 5f67944957444bd6bb4fe3b367de8f3d 1d515d18-1b36-47dc-a983-bd6512aed4bd 192.168.0.154 192.168.3.25 38929 53 17 1 96 1548752136 1548752736 ACCEPT OK

      通过智能提取结果如下图。

    在字段提取完成后,可对日志模板进行设置。日志模板设置规则如下表。
    表1 模板设置规则

    日志提取方式

    字段名称

    字段类型是否可修改

    字段是否可删除

    是否支持创建快速分析

    正则分析

    用户自定义。

    JSON格式

    智能提取字段名称,可设置别名。

    分隔符

    默认名称field1、field2、field3……,可进行修改。

    ELB模板

    根据ELB资料中提供的日志字段被定义。

    VPC模板

    根据VPC资料中提供的日志字段被定义。

    CTS模板

    字段名称为json日志中的key。

  2. 单击“保存”,完成日志结构化,初次设置完成后将不能对字段类型编辑修改。

    结构化后的日志数据可理解为数据库中的二维表,接下来就可以使用SQL语句对提取的字段进行查询与分析。

SQL查询与分析

对原始日志结构化后,等待1~2分钟左右即可对结构化后的日志进行SQL查询与分析。

日志结构化后字段名称与系统内置函数字段名称相同时,SQL查询需要加双引号。系统内置函数字段名称包括:"time"、 "lineNum"、"content"、"collectTime"、"logContentSize"、"hostIP"、"pathFile"、"hostName"、"hostId"。

在日志流页面中的SQL查询与分析

下面以一个日志流中结构化后的日志为例进行SQL查询与分析,定位出服务器运行异常的原因。

  1. 在左侧导航栏中选择“日志管理 ”。
  2. SQL查询以日志流为单位,请在“日志管理”页面选择目标日志组和日志流。
  3. 在日志流详情页面,单击“可视化”页签,进行SQL查询与分析。

    SQL查询与分析:选择时间范围和输入查询条件。查询条件请输入SQL语句,目前LTS支持的SQL语句详见SQL查询语法

    例如,需查询最近1小时HTTP返回码大于等于500的请求数,则可执行如下操作:

    在右上角选择“近1小时”,在搜索框中输入SQL语句:select count(*) where code >= 500。

    图4 可视化查询

在可视化页面中的SQL查询与分析

  1. 登录LTS控制台,在左侧导航栏中选择“日志管理 ”。
  2. 在“日志管理”页面选择目标日志组和日志流,进入日志流管理页面。
  3. 选择“可视化”,在SQL查询条件框中选择对应时间,输入SQL语句,单击“执行查询”进行搜索,目前LTS支持的SQL语句详见SQL查询语法

  4. 可根据SQL查询返回的数据,依照业务需求选择不同图表类型,呈现查询结果。

    当前LTS仅支持以下五种图表类型:

    表2 图表参数说明

    图表类型

    参数说明

    表格

    • 每页显示:当前页表可显示的日志数,有10、20、30、50可供选择,默认显示10条。
    • 开启搜索:开启搜索功能后,将光标移至表中待操作的字段名称后,单击,可进行搜索。LTS当前仅支持单列搜索。
    • 开启排序:开启排序功能后,将光标移至表中待操作的字段名称后,单击,可对查询结果进行排序。

    柱状图

    • X轴、Y轴:在下拉框中选择字段数据作为X轴、Y轴,其中,X轴可选择字符串与数字类数据;Y轴仅可选择一个或多个数字类字段数据。
    • X轴名称、Y轴名称:用户可根据需求设置柱状图的X轴名称、Y轴名称。
    • Y轴范围:用户可根据需求设置Y轴的最小值和最大值。
    • 最大展示数:用户可根据需求设置展示的数据条数,有20、40、50、80、100可供选择,默认展示50条。

      例如,总数为100条的日志数据需要展示20条日志,则将100条日志分为20组,每组5条日志,在每组中取中位数汇成20条展示数,最后形成最大展示数结果。

    • 显示标签:用户可根据需求开启显示标签功能,
    • 是否堆叠:用户可根据需求是否开启堆叠功能,开启堆叠功能后,显示标签功能将不可用。
    • 高级设置:在高级设置中,用户可根据需求设置柱状图的图例位置、上边距、下边距、右边距、左边距。

    折线图

    • X轴数据、Y轴数据:在下拉框中选择字段数据作为X轴数据、Y轴数据,其中,X轴可选择字符串与数字类数据;Y轴数据可选择一个或多个字段数据,当前LTS推荐用户在设置Y轴数据时,使用数字类型数据。
    • X轴名称、Y轴名称:用户可根据需求设置折线图的X轴名称、Y轴名称。
    • Y轴范围:用户可根据需求设置Y轴的最小值和最大值。
    • 单选项:用户根据需求可选择“曲线”或“直线”。
    • 是否显示点:用户可根据需求是否设置显示点。
    • 高级设置:在高级设置中,用户可根据需求设置折线图的图例位置、上边距、下边距、右边距、左边距、右Y轴数据、右Y轴名称、单位数据。其中单位数据有数字类型、百分比类型(%)、流量单位类型(Kb,Mb,Gb)可供选择,当数值超过100000000时,LTS将自动采用科学计数法对数字进行简写,保留到小数点后两位。例如,当数字为100000000是,将自动缩写为10e8。

    饼图

    • 类目、数据:在下拉框中选择字段数据作为类目、数据,其中,LTS推荐用户使用字符串作为类目,当数据选择非数据类型的字段数据时,图中会显示“NaN”。
    • 标签位置:用户可根据需求设置标签位置为“内部”或者“外部”。开启标签后,才能使用标签位置。
    • 展示数量:饼图可展示的数量,默认值10,用户可根据需求选择5、10、20、30、40。

      例如,总数为20条的日志数据需要展示10条日志,则只展示现有排序日志中的前10条,后面10条日志则全部归为其他类的扇形图展示在饼图中。

    • 南丁格尔模式:根据饼图中每个扇形所代表的数据百分比绘制每个扇形的大小,用户可根据需求决定是否开启南丁格尔模式。
    • 开启标签:用户可根据需求开启标签功能。
    • 高级设置:在高级设置中,用户可根据需求设置饼图的图例位置、上边距、下边距、右边距、左边距、半径。

    数字

    • 数值列:下拉框中选择字段数据作为数值列,建议选择数值类型。选择数值列后,图中将显示已选择的数据字段列的第一个数据。
    • 添加同比值:用户可根据需求是否设置同比值。
    • 同比数据:在下拉框中选择字段数据作为同比数据,建议选择数值类型。选择同比数据后,图中将显示与已选择的数据字段列的差值。设置同比值后,才能使用同比数据。
    • 描述:用户可根据需求对相应数值进行描述。
    • 数值单位、对比值单位:用户可自定义设置数值单位、对比值单位。
    • 高级设置:在高级设置中,用户可根据需求设置数字的数据格式、数值字号、对比值字号、单位字号。

  5. 单击“保存”或“另存为”,在弹出的“保存可视化图表”中,根据业务需求填写“图表名称”、“同时添加到仪表盘”,单击“确定”,可视化图表保存成功。

SQL查询语法

LTS支持使用SQL语句(其中包括了聚合函数和数学函数)对结构化后的日志进行查询与分析。例如,使用MIN函数计算num列中的最小值。

  • SQL语句
    LTS目前支持的SQL语句如表3所示。
    表3 SQL语句说明

    语句

    说明

    示例

    GROUP BY

    根据一个或多个列对结果集进行分组,经常与聚合函数一起使用。

    select * group by (year),(month)

    LIKE

    在WHERE子句中搜索列中的指定模式。

    select * where name like 'zhang%'

    WHERE

    用于规定选择的标准。

    select * where num > 11 or num <= 10

  • 聚合函数

    聚合函数是对结构化后的日志的指定列进行的统计运算。聚合函数返回的是单个值,经常与SELECT语句和GROUP BY语句一起使用。LTS目前支持的聚合函数如表4所示。

    表4 聚合函数说明

    函数

    含义

    示例

    count(*)

    计算元组的个数。

    select count(*)

    count(<列名>)

    计算一列值的个数。

    select count(num)

    min(<列名>)

    计算一列值的最小值。

    select min(num)

    max(<列名>)

    计算一列值的最大值。

    select max(num)

    avg(<列名>)

    计算一列值的平均值。

    select avg(num)

    sum(<列名>)

    计算一列值的总和。

    select sum(num)

分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!非常感谢您的反馈,我们会继续努力做到更好!
反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

智能客服提问云社区提问