结构化原始日志
通过对日志流添加提取规则将日志流中的原始日志按一定的规律进行提取,并将提取 后的日志整合到一起,以便进行SQL查询与分析。
下面详细介绍原始日志结构化的操作步骤:
步骤1 登录LTS控制台,在左侧导航栏中选择“日志管理”。
步骤2 结构化日志以日志流为单位,请在“日志管理”页面选择目标日志组和日志流。
步骤3 在日志流详情页面,单击左侧导航栏“配置中心”,选择“结构化配置”,进入日志 结构化配置页面,选择对应的日志提取方法进行配置。
● 正则分析:使用正则表达式提取字段。
●
JSON:通过提取JSON字段将其拆分为键值对。
● 分隔符:使用分隔符(例如:逗号、空格或字符)提取字段。
●
Nginx:通过log_format指令来自定义访问日志的格式。
● 结构化模板:包括自定义模板和系统内置的ELB、VPC、CTS云服务模板。
tag字段:LTS支持对tag字段进行结构化处理,包括日志的维度信息,如采集器所在的
主机IP、采集路径等,也支持用户自定义配置。结构化配置时正则分析、JSON、分隔 符、Nginx支持使用tag字段。图5-2 日志结构化
结构化后的日志数据可理解为数据库中的二维表,接下来就可以使用SQL语句对提取 的字段进行查询与分析。
说明
● 如果结构化后的字段长度超过20k字节时,仅会保留前20k字节长度。
● 结构化不支持的系统字段包括:groupName、logStream、lineNum、content、
logContent、logContentSize、collectTime、category、clusterId、clusterName、
containerName、hostIP、hostId、hostName、nameSpace、pathFile、podName。
----结束
正则分析
– (?<name>exp):表示命名分组,分组的正则表达式为exp,分组名为
name。分组名必须以字母开始,且仅包含字母和数字,可以通过分组名或分
● 分词符指将日志内容切分为多个单词的符号,默认分词符包括, '";=()[]{}@&<>/:\n\t\r,在日 志搜索或者对日志进行结构化时,可以选取相邻两分词符之间的单词。
步骤3 单击“保存”,完成日志结构化,初次设置完成后将不能对字段类型编辑修改。
图5-4 指定分隔符
步骤3 字段提取。可将输入或选择的日志自动提取为以一个示例字段对应一个字段名称的格 式的日志解析结果。
在“步骤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
配置通过智能提取结果如下图。
说明
当日志提取字段的类型为float时,精确度为7位有效数字。
如果超过7位有效数字的话,则会导致提取字段内容不准确,从而影响可视化查看和快速分析,
因此建议将字段类型修改为String。
在字段提取完成后,可对日志模板进行设置。结构化字段设置规则请参考结构化字段 设置。
步骤4 单击“保存”,完成日志结构化,初次设置完成后将不能对字段类型编辑修改。
----结束
Nginx
步骤1 选择示例日志:应选择一条比较典型的日志作为示例日志。在“步骤1 选择示例日 志”中,可单击“从已有日志中选择”,在弹出框中根据业务需求选择待操作的日 志,也可以直接在输入框中输入待操作的日志,单击“确定”。通过选择不同时间段
“近1分钟”、“近5分钟”、“近15分钟”、“近1小时”、“近6小时”、“近1 天”、“近1周”或者“自定义时间段”筛选日志。
步骤2 在“步骤2 输入Nginx日志配置”中需要输入Nginx日志配置,根据输入或选择的日志 进行配置。其中有默认配置可使用,单击“默认Nginx配置”即可。默认如图5-5所 示。
图5-5 输入 Nginx 日志配置
说明
标准Nginx配置文件中,日志配置的部分通常以log_format开头。
日志格式
● 默认配置如下所示。
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
● 用户也可进行自定义配置,具体配置格式要求如下所示。
– 使用Nginx配置,不可为空
– 以log_format开头,并且包含(')和字段名称 – 长度最大限制为1000
– 需要与示例日志内容匹配
– 以空格间隔(log_format字段之间用空格间隔)
– 以(')或者(';)结尾
步骤3 字段提取。可将输入或选择的日志自动提取为以一个示例字段对应一个字段名称的格 式的日志解析结果。
在“步骤3 字段提取”下单击“智能提取”。以如下原始日志为例进行分析:
将以下原始日志输入待操作框中。
39.149.31.187 - - [12/Mar/2020:12:24:02 +0800] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36" "-"
并使用如下Nginx日志配置。
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
通过智能提取结果如下图。
说明
当日志提取字段的类型为float时,精确度为7位有效数字。
如果超过7位有效数字的话,则会导致提取字段内容不准确,从而影响可视化查看和快速分析,
因此建议将字段类型修改为String。
在字段提取完成后,可对日志模板进行设置。结构化字段设置规则请参考结构化字段 设置。
步骤4 单击“保存”,完成日志结构化,初次设置完成后将不能对字段类型编辑修改。
----结束
结构化模板
系统模板
步骤1 在“选择模板”下,选择“系统模板”,选择对应的ELB、VPC、CTS系统模板,模板 日志从对应的云服务接入,可以直接应用模板的数据模型作为示例日志。
步骤2 选择模板后“模板详情”中会自动显示对应的日志解析结果。单击“保存”完成结构 化配置。
需要进行快速分析设置的可在结构化配置完成界面进行设置。如下图所示。
----结束 自定义模板
步骤1 在“选择模板”下,选择“自定义模板”,选择已有的结构化模板。模板来源有以下 两个方式:
● 在配置正则分析、JSON、分隔符或Nginx方式时单击左下角的“另存为模板”,
系统会弹出“另存模板”页面,输入模板名称,单击“确定”,完成自定义模板 的保存,会在“自定义模板”下的模板列表看到该模板。
● 新增结构化模板,具体操作如下:
在“选择模板”下,选择“自定义模板”,单击“新增结构化模板”,在“新增 结构化模板”界面选择正则分析、JSON、分隔符或Nginx方式,进行配置,配置 完成后输入模板名称,单击“确定”。完成自定义模板的保存,会在“自定义模 板”下的模板列表看到该模板。
步骤2 选择模板后“模板详情”中会自动显示对应的日志解析结果。单击“保存”完成结构 化配置。
需要进行快速分析设置的可在结构化配置完成界面进行设置。
说明
当日志提取字段的类型为float时,精确度为7位有效数字。
如果超过7位有效数字的话,则会导致提取字段内容不准确,从而影响可视化查看和快速分析,
因此建议将字段类型修改为String。
----结束
tag 字段
设置结构化配置时,可以对日志维度信息进行tag字段设置,设置完成后可以在可视化 界面对设置字段进行SQL查询。
步骤1 在字段提取步骤中选择“tag字段”页签。
步骤2 单击“添加字段”。
步骤3 在tag字段列表中“字段名称”,输入需要设置 tag字段名称,如“hostIP”。
步骤4 单击字段名称后的对号,如果输入的字段名称为系统tag,则来源会自动识别为系统 tag。
说明
● tag支持的系统字段包括:category、clusterId、clusterName、containerName、hostIP、
hostId、hostName、nameSpace、pathFile、podName。
● tag不支持的系统字段包括:groupName、logStream、lineNum、content、logContent、
logContentSize、collectTime。
分隔符 默认名称field1、
field2、field3……,可 进行修改。
是 是 是
日志提取方式 字段名称 字段类型是 Nginx 根据Nginx配置生成,可
定义别名。
是 是 是
ELB模板 根据ELB资料中提供的日 志字段被定义。
否 否 是
VPC模板 根据VPC资料中提供的日 志字段被定义。
否 否 是
CTS模板 字段名称为json日志中的
key。 否 否 是