如果您需要对日志内容做更多个性化的字段提取设置,可选择完整正则模式。本文介绍如何通过日志服务控制台创建完整正则模式的Logtail配置采集日志。
前提条件
- 已创建Project和Logstore。更多信息,请参见 创建Project 和 创建Logstore 。
- 用于安装Logtail的服务器具备访问远端服务器80端口和443端口的能力。
-
目标服务器持续产生日志。
重要 Logtail只采集增量日志。如果下发Logtail配置后,日志文件无更新,则Logtail不会采集该文件中的日志。更多信息,请参见 读取文件 。
背景信息
在完整正则模式下,Logtail会将日志内容结构化,即根据您所设置的正则表达式将日志内容提取为多个key-value对。更多信息,请参见 单行日志采集案例 、 多行日志采集案例 。-
单行文本日志
一行日志内容为一条日志,即在日志文件中,以换行符分隔两条日志。该模式下,您需要设置日志样例,并根据日志样例指定正则表达式。Logtail会根据正则表达式提取对应的key-value对。
-
多行文本日志
一条日志有多行内容。该模式下,您需要设置日志样例,并根据日志样例指定正则表达式和行首正则表达式。Logtail会根据正则表达式提取对应的key-value对,根据行首正则表达式匹配一条日志的行首,即确认一条日志的开头,将未匹配部分作为该条日志的一部分,直到下一个行首出现。
操作步骤
- 登录 日志服务控制台 。
- 在 接入数据 区域,选择 正则-文本日志 。
- 选择目标Project和Logstore,单击 下一步 。
-
创建机器组。
- 如果您已有可用的机器组,请单击 使用现有机器组 。
-
如果您还没有可用的机器组,请执行以下操作(以ECS为例)。
-
在
ECS机器
页签中,通过手动选择实例方式选择目标ECS实例,单击
创建
。
具体操作,请参见 安装Logtail(ECS实例) 。
重要 如果您的服务器是与日志服务属于不同账号的ECS、其他云厂商的服务器和自建IDC时,您需要手动安装Logtail。更多信息,请参见 安装Logtail(Linux系统) 或 安装Logtail(Windows系统) 。手动安装Logtail后,您必须在该服务器上手动配置用户标识。具体操作,请参见 配置用户标识 。
- 安装完成后,单击 确认安装完毕 。
-
在
创建机器组
页面,输入
名称
,单击
下一步
。
日志服务支持创建IP地址机器组和用户自定义标识机器组,详细参数说明请参见 创建IP地址机器组 和 创建用户自定义标识机器组 。
-
在
ECS机器
页签中,通过手动选择实例方式选择目标ECS实例,单击
创建
。
-
选中目标机器组,将该机器组从
源机器组
移动到
应用机器组
,单击
下一步
。
-
创建Logtail配置,单击
下一步
。
参数 描述 配置名称 Logtail配置名称,在其所属Project内必须唯一。创建Logtail配置成功后,无法修改其名称。 您也可以单击 导入其他配置 ,导入已创建的Logtail配置。
日志路径 根据日志在服务器上的位置,设置日志目录和文件名称。 - 如果是Linux系统中的日志路径,必须以正斜线(/)开头,例如 /apsara/nuwa/.../app.Log 。
- 如果是Windows系统中的日志路径,必须以盘符开头,例如 C:\Program Files\Intel\...\*.Log 。
目录名和文件名支持完整名称和通配符模式,文件名规则请参见 Wildcard matching 。日志文件查找模式为多层目录匹配,即指定目录(包含所有层级的目录)下所有符合条件的文件都会被查找到。例如:- /apsara/nuwa/**/*.log 表示 /apsara/nuwa 目录(包含该目录的递归子目录)中后缀名为 .log 的文件。
- /var/logs/app_*/**/*.log 表示 /var/logs 目录下所有符合 app_* 格式的目录(包含该目录的递归子目录)中后缀名为 .log 的文件。
- /var/log/nginx/**/access* 表示 /var/log/nginx 目录(包含该目录的递归子目录)中以 access 开头的文件。
说明 日志路径通配符只支持星号(*)和半角问号(?)。- 星号(*)表示匹配多个任意字符。
- 半角问号(?)表示匹配单个任意字符。
设置采集黑名单 打开 设置采集黑名单 开关后,可进行黑名单配置,即可在采集时忽略指定的目录或文件。支持完整匹配和通配符模式匹配目录和文件名。例如: - 选择 按目录路径 ,配置路径为 /home/admin/dir1 ,则表示在采集时忽略 /home/admin/dir1 目录下的所有内容。
- 选择 按目录路径 ,配置路径为 /home/admin/dir* ,则表示在采集时忽略 /home/admin/ 目录下所有以dir开头的子目录下的内容。
-
选择
按目录路径
,配置路径为
/home/admin/*/dir
,则表示在采集时忽略
/home/admin/
目录下二级目录名为dir的子目录下的所有内容。
例如 /home/admin/a/dir 目录下的内容被忽略, /home/admin/a/b/dir 目录下的内容被采集。
- 选择 按文件路径 ,配置路径为 /home/admin/private*.log ,则表示在采集时忽略 /home/admin/ 目录下所有以private开头,以.log结尾的文件。
-
选择
按文件路径
,配置路径为
/home/admin/private*/*_inner.log
,则表示在采集时忽略
/home/admin/
目录下以private开头的目录内,以_inner.log结尾的文件。
例如 /home/admin/private/app_inner.log 文件被忽略, /home/admin/private/app.log 文件被采集。
说明-
目录通配符只支持星号(*)和半角问号(?)。
- 星号(*)表示匹配多个任意字符。
- 半角问号(?)表示匹配单个任意字符。
-
如果您在配置
日志路径
时使用了通配符,但又需要过滤掉其中部分路径时,需在黑名单中填写对应的完整路径来保证过滤生效。
例如您配置 日志路径 为 /home/admin/app*/log/*.log ,但要过滤 /home/admin/app1* 目录下的所有子目录,则需配置黑名单,即选择 按目录路径 ,配置路径为 /home/admin/app1*/** 。如果配置为 /home/admin/app1* ,则黑名单不会生效。
- 匹配黑名单过程存在计算开销,建议黑名单条目数在10条内。
- 目录路径不能以正斜线(/)结尾,例如将设置路径为 /home/admin/dir1/ ,目录黑名单不会生效。
是否为Docker文件 如果是Docker容器中的文件,您可打开 是否为Docker文件 开关,配置内部路径与容器Tag。Logtail会自动监测容器的创建和销毁,并根据Tag进行容器过滤,采集指定容器的日志。具体操作,请参见 通过DaemonSet-控制台方式采集容器文本日志 。 模式 采集模式,默认为 完整正则模式 ,可修改为其它模式。 单行模式 - 如果待采集的日志是单行日志,请打开 单行模式 开关,日志服务将逐行采集日志。
- 如果待采集的日志是多行日志(例如Java程序日志),请关闭 单行模式 开关,使用多行正则模式采集。
日志样例 请务必使用实际场景的日志,便于日志服务自动提取其中的正则表达式。日志样例请参见 单行日志采集案例 、 多行日志采集案例 。 行首正则表达式 如果您要采集多行日志,在关闭 单行模式 开关后,还需配置行首正则表达式。日志服务支持自动生成和手动输入行首正则表达式。 -
自动生成行首正则表达式
填写日志样例后,单击 自动生成 ,生成行首正则表达式。
-
手动输入行首正则表达式
填写日志样例后,单击 手动输入正则表达式 ,手动配置。配置完成后,单击 验证 即可验证您输入的正则表达式是否正确。更多信息,请参见 如何调试正则表达式 。
提取字段 打开 提取字段 开关后,可通过正则表达式将日志内容提取为键值对(Key:Value)。 正则 打开 提取字段 开关后,需要配置。 -
自动生成正则表达式
在 日志样例 文本框中,选中需要提取的日志内容,单击 生成正则 ,自动生成正则表达式。
-
手动输入正则表达式
单击 手动输入正则表达式 ,手动配置正则表达式。配置完成后,单击 验证 即可验证您输入的正则表达式是否可以解析、提取日志样例。更多信息,请参见 如何调试正则表达式 。
日志抽取内容 打开 提取字段 开关后,需要配置。 通过正则表达式将日志内容提取为Value后,您需要为每个Value设置对应的Key。
Key只能包括字母、数字或下划线(_),且只能以字母或下划线(_)开头。最大长度为128字节。
使用系统时间 打开 提取字段 开关后,需要配置。 具体说明如下: - 打开 使用系统时间 开关,则日志时间为采集日志时,Logtail所在主机或容器的系统时间。
-
关闭
使用系统时间
开关,则日志时间为原始日志中自带的时间,即您需要在
日志抽取内容
中将时间内容对应的
Key
设置为
time
。
您还需根据时间内容设置对应的时间转换格式。例如原始日志中的时间为 10/Sep/2022:12:36:49 ,对应的时间转换格式为 %d/%b/%Y:%H:%M:%S 。更多信息,请参见 时间格式 。
重要- 当使用DaemonSet方式采集容器日志时,由于Logtail容器的时区为UTC,如果业务容器的时区为非UTC(例如设置了 容器与节点使用相同时区 ),则必须在本Logtail配置的 高级选项 中,设置 时区属性 为 自定义时区 ,并选择时区为业务容器的时区,否则日志时间将错误偏移。
- 默认情况下,日志服务中的日志时间戳精确到秒。如果原始日志中的时间具备更高的时间精度(毫秒、微秒或纳秒),并希望在日志服务中保留该时间精度,可在Logtail采集配置的 扩展配置 中添加 enable_precise_timestamp 参数完成设置。
丢弃解析失败日志 是否丢弃解析失败的日志,具体说明如下: - 打开 丢弃解析失败日志 开关,解析失败的日志不上传到日志服务。
- 关闭 丢弃解析失败日志 开关,日志解析失败时,原始日志将作为 __raw_log__ 字段的值上传到日志服务。
最大监控目录深度 设置日志目录被监控的最大深度。取值范围:0~1000,0代表只监控本层目录。 请根据您的需求选择高级配置。如果没有特殊需求,建议保持默认配置。参数 描述 启用插件处理 当您的业务日志太复杂或不固定,固定解析模式(Nginx模式、完整正则模式、JSON模式等)无法满足日志解析需求时,您可以打开 启用插件处理 开关,添加Logtail插件解析日志。 日志服务会根据您选择的采集模式生成默认的插件配置,您可以在默认配置后面添加其他插件配置,即您可以添加多个processors配置。更多信息,请参见 概述 。重要 打开 启用插件处理 开关后,上传原始日志、时区属性、丢弃解析失败日志、过滤器配置、接受部分字段(分隔符模式)等功能不可用。上传原始日志 打开 上传原始日志 开关后,原始日志将作为 __raw__ 字段的值与解析过的日志一起上传到日志服务。 Topic生成方式 设置Topic生成方式。更多信息,请参见 日志主题 。 - 空-不生成Topic :默认选项,表示设置Topic为空字符串,在查询日志时不需要输入Topic即可查询。
- 机器组Topic属性 :设置为机器组Topic属性,用于明确区分不同服务器产生的日志数据。
- 文件路径正则 :设置为文件路径正则,则需要设置 自定义正则 ,用正则表达式从路径里提取一部分内容作为Topic。用于区分不同用户或实例产生的日志数据。
日志文件编码 设置日志文件编码格式,取值为utf8、gbk。 时区属性 采集日志时,日志时间的时区属性。 - 机器时区:默认为Logtail所在主机或容器的时区。
- 自定义时区:手动选择时区。
超时属性 如果一个日志文件在指定时间内没有任何更新,则认为监控已超时。 - 永不超时:持续监控所有日志文件,永不超时。
-
30分钟超时:如果日志文件在30分钟内没有更新,则认为监控超时,Logtail不再监控该文件。
选择 30分钟超时 时,还需设置 最大超时目录深度 ,范围为1~3。
过滤器配置 只采集符合过滤条件的日志,过滤条件包括 key 和 Regex 字段,分别为目标字段的名称和用于过滤的正则表达式。各个过滤条件之间为与关系。 重要- 极简模式下,只生成 content 字段。如果您要设置过滤条件,只能将 Key 设置为 content 。
- 此处的正则表达式仅支持全文匹配,不支持关键词部分匹配。
相关示例如下:
-
过滤出符合条件的日志。
- 设置 Key 为 level , Regex 为 WARNING|ERROR ,表示只采集 level 字段值为WARNING或ERROR的日志。
- 设置 Key 为 content , Regex 为 .*05\/Jan\/2023.* ,表示只采集 content 字段值包含05/Jan/2023的日志。
-
过滤掉不符合条件的日志。
- 设置 Key 为 level , Regex 为 ^(?!.*(INFO|DEBUG)).* ,表示不采集 level 字段值中包含INFO或DEBUG的日志。
- 设置 Key 为 level , Regex 为 ^(?!(INFO|DEBUG)$).* ,表示不采集 level 字段值为INFO或DEBUG的日志。
- 设置 Key 为 url , Regex 为 .*^(?!.*(healthcheck)).* ,表示不采集 url 字段值中包含healthcheck的日志。
如何配置正则表达式,请参见 正则表达式入门教程 。
首次采集大小 通过 首次采集大小 ,可以确认首次采集的新文件的内容位置。首次采集大小默认为1024 KB。 - 首次采集时,如果文件小于1024 KB,则从文件内容起始位置开始采集。
- 首次采集时,如果文件大于1024 KB,则从距离文件末尾1024 KB的位置开始采集。
您可以通过此处修改 首次采集大小 ,取值范围为0~10485760,单位为KB。
扩展配置 Logtail的扩展配置。更多信息,请参见 advanced参数说明 。 例如您要通过当前Logtail配置去采集其他Logtail配置已匹配的文件,并指定聚合发送周期,可添加如下配置。
{ "force_multiconfig": true, "batch_send_interval": 3 }
单击 下一步 表示创建Logtail配置,日志服务开始采集日志。说明- Logtail配置生效时间最长需要3分钟,请耐心等待。
- 如果遇到Logtail采集报错,请参见 如何查看Logtail采集错误信息 、 日志服务采集数据常见的错误类型 。
-
预览数据及创建索引,然后单击
下一步
。
日志服务默认开启全文索引。您也可以根据采集到的日志,手动创建字段索引,或者单击 自动生成索引 ,日志服务将自动生成字段索引。更多信息,请参见 创建索引 。重要 如果您要查询和分析日志,那么全文索引和字段索引必须至少启用一种。同时启用时,以字段索引为准。
-
单击
查询日志
,系统将跳转至Logstore查询分析页面。
您需要等待1分钟左右,待索引生效后,才能在 原始日志 页签中,查看已采集到的日志。更多信息,请参见 查询和分析日志 。
单行日志采集案例
-
日志样例
127.0.0.1 - - [10/Sep/2018:12:36:49 +0800] "GET /index.html HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"
-
正则表达式
(\S+)\s-\s(\S+)\s\[([^]]+)]\s"(\w+)\s(\S+)\s([^"]+)"\s(\d+)(\s\d+)[^-]+([^"]+)"\s"([^"]+).*
- 被采集到日志服务后的日志
-
操作视频
多行日志采集案例
-
日志样例
[2018-10-01T10:30:01,000] [INFO] java.lang.Exception: exception happened at TestPrintStackTrace.f(TestPrintStackTrace.java:3) at TestPrintStackTrace.g(TestPrintStackTrace.java:7) at TestPrintStackTrace.main(TestPrintStackTrace.java:16)
-
行首正则表达式
\[\d+-\d+-\w+:\d+:\d+,\d+]\s\[\w+]\s.*
-
正则表达式
\[(\S+)]\s\[(\S+)]\s(.*)
- 被采集到日志服务后的日志
-
操作视频
问题排查
使用Logtail采集日志后,如果预览页面或查询页面无数据,您可以参见 Logtail采集日志失败的排查思路 进行排查。