文档简介:
结构化配置
日志数据可分为结构化数据和非结构化数据。结构化数据指能够用数字或统一的数据模型加以描述的数据,具有严格的长度和格式。非结构化数据指不便于用数据库二维逻辑表来表现的数据,数据结构不规则或不完整,没有预定义的数据模型。
日志结构化是以日志流为单位,通过不同的日志提取方式将日志流中的日志进行结构化,提取出有固定格式或者相似程度较高的日志,过滤掉不相关的日志,以便对结构化后的日志按照SQL语法进行查询与分析。
注意事项
- 日志结构化是以日志流为单位,请先创建一个日志流。
- 日志流中的大部分日志需有一定的规则,否则结构化是无意义的。
结构化原始日志
通过对日志流添加提取规则将日志流中的原始日志按一定的规律进行提取,并将提取后的日志整合到一起,以便进行SQL查询与分析。
下面详细介绍原始日志结构化的操作步骤:
步骤 1 登录LTS控制台,在左侧导航栏中选择“日志管理”。
步骤 2 结构化日志以日志流为单位,请在“日志管理”页面选择目标日志组和日志流。
步骤 3 在日志流详情页面,单击右上角 ,在弹出页面中,选择“结构化配置”,进入日志结构化配置页面,选择对应的日志提取方法进行配置。
- 正则分析:使用正则表达式提取字段。
- JSON:通过提取JSON字段将其拆分为键值对。
- 分隔符:使用分隔符(例如:逗号、空格或字符)提取字段。
- Nginx:通过log_format指令来自定义访问日志的格式。
- 结构化模板:包括自定义模板和系统内置的ELB、VPC、CTS、APIG、DCS审计日志、TOMCAT、NGINX、GAUSSV5审计日志、DDS审计日志、DDS错误日志、DDS慢日志、CFW访问控制日志、CFW攻击日志、CFW流量日志、MYSQL错误日志、MYSQL慢日志、POSTGRESQL慢日志、POSTGRESQL错误日志、SQLSERVER错误日志、和GAUSSDB_REDIS慢日志模板。
tag字段:LTS支持对tag字段进行结构化处理,包括日志的维度信息,如采集器所在的主机IP、采集路径等,也支持用户自定义配置。结构化配置时正则分析、JSON、分隔符、Nginx支持使用tag字段。
结构化后的日志数据可理解为数据库中的二维表,接下来就可以使用SQL语句对提取的字段进行查询与分析。
- 如果结构化后的字段长度超过20k字节时,仅会保留前20k字节长度。
- 结构化不支持的系统字段包括:groupName、logStream、lineNum、content、logContent、logContentSize、collectTime、category、clusterId、clusterName、containerName、hostIP、hostId、hostName、nameSpace、pathFile、podName。
正则分析
步骤 1 选择示例日志:应选择一条比较典型的日志作为示例日志。在“步骤1 选择示例日志”中,可单击“从已有日志中选择”,在弹出框中根据业务需求选择待操作的日志,单击“确定”。通过选择不同时间段筛选日志。
时间范围有三种方式,分别是相对时间、整点时间和自定义时间。您可以根据自己的实际需求,选择时间范围。
- 相对时间:表示查询距离当前时间1分钟、5分钟、15分钟等时间区间的日志数据。例如当前时间为19:20:31,设置相对时间1小时,表示查询18:20:31~19:20:31的日志数据。
- 整点时间:表示查询最近整点1分钟、15分钟等时间区间的日志数据。例如当前时间为19:20:31,设置整点时间1小时,表示查询18:00:00~19:00:00的日志数据。
- 自定义时间:表示查询指定时间范围的日志数据
步骤 2 字段提取。包括自动生成和手动输入两种方式,可将选择的日志提取为以一个示例字段对应一个字段名称的格式的日志解析结果。
- 自动生成:当用户选择自动生成时,可以用鼠标选中示例日志中待结构化的日志内容,在弹出的对话框中为选中内容设置一个名称,名称必须以字母开始,且仅包含字母和数字。单击“添加”,如下图所示。
手动输入:当用户选择手动输入时,可以在输入框中输入正则表达式,单击“生成字段”来进行字段提取。正则表达式通过分组来捕获字段,分组指用圆括号"()"括起来的正则表达式,匹配出的内容就表示一个分组,分组包含如下三种形式:
− (exp):把括号内的正则作为一个分组,系统自动分配组号,规则为从正则表达式的左边开始,第一个左括号”(”对应第一个分组,第二个”(”对应第二个分组,依次类推,组号从1开始,从左向右,依次累加。
− (?exp):表示命名分组,分组的正则表达式为exp,分组名为name。分组名必须以字母开始,且仅包含字母和数字,可以通过分组名或分组号引用该分组。
− (?:exp):表示不捕获分组,该分组只在当前位置匹配文本,在该分组之后,无法引用该分组,因为该分组没有分组名,没有分组号,也不会占用分组编号。
说明:
- 分词符指将日志内容切分为多个单词的符号,默认分词符包括, '";=()[]{}@&<>/:\n\t\r,在日志搜索或者对日志进行结构化时,可以选取相邻两分词符之间的单词。
- 在手工输入方式中,正则表达式的长度不能超过5000个字符,不强制要求用户在输入正则表达式时对分组进行命名,单击“生成字段”会以命名分组中的分组名作为字段名称,对于非命名分组会提取出对应的字段,并给字段名称默认命名field1、field2、field3……。
在字段提取完成后,可对日志模板进行设置。结构化字段设置规则请参考结构化字段设置。
步骤 3 单击“保存”,完成日志结构化配置,初次设置完成后将不能对字段类型编辑修改。
JSON
步骤 1 选择示例日志:应选择一条比较典型的日志作为示例日志。在“步骤1 选择示例日志”中,可单击“从已有日志中选择”,在弹出框中根据业务需求选择待操作的日志,也可以直接在输入框中输入待操作的日志,单击“确定”。通过选择不同时间段筛选日志。
时间范围有三种方式,分别是相对时间、整点时间和自定义时间。您可以根据自己的实际需求,选择时间范围。
- 相对时间:表示查询距离当前时间1分钟、5分钟、15分钟等时间区间的日志数据。例如当前时间为19:20:31,设置相对时间1小时,表示查询18:20:31~19:20:31的日志数据。
- 整点时间:表示查询最近整点1分钟、15分钟等时间区间的日志数据。例如当前时间为19:20:31,设置整点时间1小时,表示查询18:00:00~19:00:00的日志数据。
- 自定义时间:表示查询指定时间范围的日志数据。
步骤 2 字段提取。可将输入或选择的日志自动提取为以一个示例字段对应一个字段名称的格式的日志解析结果。
在“步骤2 字段提取”下单击“智能提取”。以如下原始日志为例进行分析:
将以下原始日志输入待操作框中。
{"record_time":"1632904298988","user":{"domain":{"name":"paas_apm_z00418070_01","id":"1d26cc8c86a840e28a4f8d0d07852f1d"},"assumedBy":{"user":{"domain":{"name":"xxxx","id":"xxxx"},"name":"xxxx","id":"xxxx"}},"name":"paas_apm_z00418070_01/cce_admin_trust"}}
通过智能提取结果如下图。
说明:
当日志提取字段的类型为float时,精确度为7位有效数字。
如果超过7位有效数字的话,则会导致提取字段内容不准确,从而影响可视化查看和快速分析,因此建议将字段类型修改为String。
在字段提取完成后,可对日志模板进行设置。结构化字段设置规则请参考结构化字段设置。
步骤 3 单击“保存”,完成日志结构化配置,初次设置完成后将不能对字段类型编辑修改。
分隔符
步骤 1 选择示例日志:应选择一条比较典型的日志作为示例日志。在“步骤1 选择示例日志”中,可单击“从已有日志中选择”,在弹出框中根据业务需求选择待操作的日志,也可以直接在输入框中输入待操作的日志,单击“确定”。通过选择不同时间段筛选日志。
说明:
时间范围有三种方式,分别是相对时间、整点时间和自定义时间。您可以根据自己的实际需求,选择时间范围。
- 相对时间:表示查询距离当前时间1分钟、5分钟、15分钟等时间区间的日志数据。例如当前时间为19:20:31,设置相对时间1小时,表示查询18:20:31~19:20:31的日志数据。
- 整点时间:表示查询最近整点1分钟、15分钟等时间区间的日志数据。例如当前时间为19:20:31,设置整点时间1小时,表示查询18:00:00~19:00:00的日志数据。
- 自定义时间:表示查询指定时间范围的日志数据
步骤 2 在“步骤2 指定分隔符”需要根据原始日志内容选择分隔符,或自定义其他需要的特殊字符作为分隔符,如图所示。
步骤 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分钟等时间区间的日志数据。例如当前时间为19:20:31,设置相对时间1小时,表示查询18:20:31~19:20:31的日志数据。
- 整点时间:表示查询最近整点1分钟、15分钟等时间区间的日志数据。例如当前时间为19:20:31,设置整点时间1小时,表示查询18:00:00~19:00:00的日志数据。
- 自定义时间:表示查询指定时间范围的日志数据
步骤 2 在“步骤2 输入Nginx日志配置”中需要输入Nginx日志配置,根据输入或选择的日志进行配置。其中有默认配置可使用,单击“默认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开头,并且包含(')和字段名称
- 长度最大限制为5000
- 需要与示例日志内容匹配
- 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、APIG、DCS审计日志、TOMCAT、NGINX、GAUSSV5审计日志、DDS审计日志、DDS错误日志、DDS慢日志、CFW访问控制日志、CFW攻击日志、CFW流量日志、MYSQL错误日志、MYSQL慢日志、POSTGRESQL错误日志、SQLSERVER错误日志和GAUSSDB_REDIS慢日志系统模板,模板日志从对应的云服务接入,可以直接应用模板的数据模型作为示例日志。
步骤 2 选择模板后“模板详情”中会自动显示对应的日志解析结果。单击“保存”完成结构化配置。
新增结构化模板,具体操作如下:
在“选择模板”下,选择“自定义模板”,单击“新增结构化模板”,在“新增结构化模板”界面选择正则分析、JSON、分隔符或Nginx方式,进行配置,配置完成后输入模板名称,单击“确定”。完成自定义模板的保存,会在“自定义模板”下的模板列表看到该模板。
步骤 2 选择模板后“模板详情”中会自动显示对应的日志解析结果。单击“保存”完成结构化配置。
需要进行快速分析设置的可在结构化配置完成界面进行设置。
说明:
当日志提取字段的类型为float时,精确度为7位有效数字。
如果超过7位有效数字的话,则会导致提取字段内容不准确,从而影响可视化查看和快速分析,因此建议将字段类型修改为String。
tag字段
设置结构化配置时,可以对日志维度信息进行tag字段设置,设置完成后可以在可视化界面对设置字段进行SQL查询。
步骤 1 在字段提取步骤中选择“tag字段”页签。
步骤 2 单击“添加字段”。
步骤 3 在tag字段列表中“字段名称”,输入需要设置 tag字段名称,如“hostIP”。
步骤 4 单击字段名称后的对号,如果输入的字段名称为系统tag,则来源会自动识别为系统tag。
tag字段功能上线前设置的结构化配置,在修改结构化配置进行tag字段设置时,系统tag不会带出示例字段。
步骤 5 如需添加多个字段可单击“添加字段”,继续添加。
步骤 6 设置完成后单击“保存”。
说明:
- tag支持的系统字段包括:category、clusterId、clusterName、containerName、hostIP、hostId、hostName、nameSpace、pathFile、podName。
- tag不支持的系统字段包括:groupName、logStream、lineNum、content、logContent、logContentSize、collectTime。
- 设置的tag字段默认关闭快速分析,可开启。
- 日志提取字段和tag字段可以同时设置。
结构化字段设置
在进行结构化配置字段提取之后,可对结构化字段进行设置,具体设置规则如下表。
日志提取方式 | 字段名称 | 字段类型是否可修改 | 字段是否可删除 |
---|---|---|---|
正则分析(自动生成) |
用户自定义。 名称必须以字母开始,且仅包含字母和数字。 |
是 | 是 |
正则分析(手动输入) |
l 支持在输入正则表达式时进行命名。 l 支持使用系统默认命名field1、field2、field3……,或对其修改后的名称。 |
是 | 是 |
JSON格式 | 智能提取字段名称,可定义别名。 | 是 | 是 |
分隔符 | 默认名称field1、field2、field3……,可进行修改。 | 是 | 是 |
Nginx | 根据Nginx配置生成,可定义别名。 | 是 | 是 |
ELB模板 | 根据ELB资料中提供的日志字段被定义。 | 否 | 否 |
VPC模板 | 根据VPC资料中提供的日志字段被定义。 | 否 | 否 |
CTS模板 | 字段名称为json日志中的key。 | 否 | 否 |
APIG模板 | 根据APIG资料中提供的日志字段被定义。 | 否 | 否 |
DCS审计日志 | 根据DCS资料中提供的日志字段被定义。 | 否 | 否 |
TOMCAT | 根据TOMCAT官网提供的字段名称进行nginx解析的名称 | 否 | 否 |
NGINX | 根据NGINX资料中提供的日志字段被定义。 | 否 | 否 |
GAUSSV5审计日志 | 根据GAUSSV5资料中提供的日志字段被定义。 | 否 | 否 |
DDS审计日志 | 根据DDS资料中提供的日志字段被定义。 | 否 | 否 |
DDS错误日志 | 根据DDS资料中提供的日志字段被定义。 | 否 | 否 |
DDS慢日志 | 根据DDS资料中提供的日志字段被定义。 | 否 | 否 |
CFW访问控制日志 | 根据CFW资料中提供的日志字段被定义。 | 否 | 否 |
CFW攻击日志 | 根据CFW资料中提供的日志字段被定义。 | 否 | 否 |
CFW流量日志 | 根据CFW资料中提供的日志字段被定义。 | 否 | 否 |
MYSQL错误日志 | 根据MYSQL资料中提供的日志字段被定义。 | 否 | 否 |
MYSQL慢日志 | 根据MYSQL资料中提供的日志字段被定义。 | 否 | 否 |
POSTGRESQL错误日志 | 根据POSTGRESQL资料中提供的日志字段被定义。 | 否 | 否 |
SQLSERVER错误日志 | 根据SQLSERVER资料中提供的日志字段被定义。 | 否 | 否 |
GAUSSDB_REDIS慢日志 | 根据GAUSSDB_REDIS资料中提供的日志字段被定义。 | 否 | 否 |
自定义模板 | 用户自定义。 | 是 | 是 |
说明:
正则分析(手动输入)、JSON格式、分隔符、Nginx和自定义模板的字段名称需要满足如下要求:
- 只支持输入英文、数字、中划线、下划线及小数点。
- 不能以小数点、下划线开头或以小数点结尾。
- 长度为1-64个字符。