Logtail正则解析插件支持通过正则表达式提取日志字段,并将日志解析为键值对形式。本文介绍如何通过日志服务控制台创建正则模式的Logtail配置采集日志。
方案概览
假设您的原始日志为:
127.0.0.1 - - [16/Aug/2024:14:37:52 +0800] "GET /wp-admin/admin-ajax.php?action=rest-nonce HTTP/1.1" 200 41 "http://www.example.com/wp-admin/post-new.php?post_type=page" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.0.0"
通过正则解析插件处理后效果展示:
其中使用的正则表达式为:
(\S+)\s-\s(\S+)\s\[([^]]+)]\s"(\w+)\s(\S+)\s([^"]+)"\s(\d+)\s(\d+)\s"([^"]+)"\s"([^"]+).*
前提条件
已创建Logtail机器组并添加相应服务器,创建机器组的步骤,请参见创建用户自定义标识机器组(推荐)或创建IP地址机器组。
安装Logtail的主机需开放80(HTTP)端口和443(HTTPS)端口。ECS实例的端口由安全组规则控制,添加安全组规则的步骤请参见添加安全组规则。
服务器日志的内容持续新增。Logtail只采集增量日志,如果下发Logtail配置后日志文件无更新,则Logtail不会采集该文件中的日志。更多信息,请参见读取日志。
1. 选择Project和Logstore
登录日志服务控制台。
单击控制台右侧的快速接入数据卡片。
在接入数据页面,查找正则 - 文本日志并单击。
选择目标Project和Logstore,日志会被采集到对应的Logstore。
2. 机器组配置
Logtail配置会应用到指定的机器组,从而采集服务器上的数据。无论是否已有机器组,都必须根据实际需求正确选择使用场景和安装环境,这将影响后续的页面配置。
已有机器组
从源机器组列表选择目标机器组,单击下一步。
没有可用机器组
单击创建机器组,在创建机器组面板设置相关参数。机器组标识分为IP地址和用户自定义标识,更多信息请参见创建用户自定义标识机器组(推荐)或创建IP地址机器组。
重要创建机器组后立刻应用,可能因为连接未生效,导致心跳为FAIL,您可单击重试。如果还未解决,请参见Logtail机器组无心跳进行排查。
3. Logtail配置
3.1 全局配置
3.2 输入配置
文件路径
最大目录监控深度
3.3 处理配置
日志样例,支持多条日志;添加日志样例可协助您配置日志处理相关参数,降低配置难度,建议添加。
多行模式,如果日志为多行日志,请使用该选项。
类型,选择自定义,本示例使用的行首正则表达式为:
(\S+)\s-.*
切分失败处理方式,选择保留单行。
处理模式
使用正则解析处理插件。
单击正则解析可进入处理插件详细配置页面,需要在此页面配置正则表达式,以及根据提取的value设置key值。
配置说明
参数名称
说明
原始字段
解析日志前,用于存放日志内容的原始字段,默认值为content。
正则表达式
用于匹配日志的正则表达式。
当您配置了日志样例时,日志服务支持自动生成和手动输入行首正则表达式。
单击自动生成正则表达式,然后在日志样例文本框中,划选需提取的日志内容,单击生成正则,日志服务会根据您划选的内容,生成正则表达式。
单击手动输入正则表达式,输入正则表达式。配置完成后,单击验证即可验证您输入的正则表达式是否可以解析、提取目标日志内容。更多信息,请参见如何调试正则表达式。
当您未配置日志样例时,需根据实际日志输入正则表达式。
日志提取字段
为提取的日志内容(Value),设置对应的字段名(Key)。
解析失败时保留原始字段
选中解析失败时保留原始字段,则解析失败时,将保留原始字段。
解析成功时保留原始字段
选中解析成功时保留原始字段,则解析成功时,将保留原始字段。
重命名的原始字段
选中解析失败时保留原始字段或解析成功时保留原始字段后,可重命名原始字段名,用于存放原始的日志内容。
Logtail配置生效时间最长需要3分钟,请耐心等待。
4. 查询分析配置
日志服务默认开启全文索引。您也可以根据采集到的日志,手动创建字段索引,或者单击自动生成索引,日志服务将自动生成字段索引。更多信息,请参见创建索引。
5. 查询日志
单击查询日志,系统将跳转至Logstore查询分析页面。
您需要等待1分钟左右,待索引生效后,才能在原始日志页签中,查看已采集到的日志。查询和分析日志的详细步骤,请参见查询和分析日志。
如果需要查询日志中的所有字段,建议使用全文索引。如果只需查询部分字段、建议使用字段索引,减少索引流量。如果需要对字段进行分析(SELECT语句),必须创建字段索引。