当您的业务日志太复杂或不固定,固定解析模式(Nginx模式、完整正则模式、JSON模式等)无法满足日志解析需求时,您可以使用Logtail插件解析日志。您可添加一个或多个Logtail插件处理配置,Logtail会根据处理配置顺序逐一执行。
使用限制
- 性能限制
使用Logtail插件进行日志处理时,Logtail会消耗更多的资源(以CPU为主),请根据实际情况调整Logtail的参数配置。更多信息,请参见设置Logtail启动参数。当原始数据量的生成速度超过5 MB/s时,不建议您使用过于复杂的插件组合来处理日志,您可以使用Logtail插件进行简单处理,再通过数据加工完成进一步处理。
- 文本日志限制在固定解析模式基础上,日志服务支持通过插件处理采集到的文本日志,但存在以下限制:
- 启用插件处理后,部分文本模式的高级功能将失效,包括过滤器配置、上传原始日志、机器时区、丢弃解析失败日志、接受部分字段(分隔符模式)等,但其中部分功能可通过相关插件实现。
- Processors插件对文本日志的处理采用行模式,即文件级别的元数据(例如__tag__:__path__、__topic__等)会被存放到每条日志中,启用插件处理后会影响和Tag相关的功能,包括:
- 默认情况下,上下文查询和LiveTail功能不可用。
如果您要使用这些功能,需要额外添加aggregators配置。更多信息,请参见aggregators配置。
- 默认情况下,__topic__字段会被重命名为__log_topic__。
如果您添加了aggregators配置,日志中将同时存在__topic__字段和__log_topic__字段。如果您不需要__log_topic__字段,可使用processor_drop插件删除该字段。
- __tag__:__path__等字段不再具备原生字段索引,需单独创建索引。
- 默认情况下,上下文查询和LiveTail功能不可用。
配置说明
{
...
"processors" : [
{
"type": "plugin_name",
"detail": {...}
},
...
],
"aggregators": [
{
"type": "plugin_name",
"detail": {...}
},
...
]
}
processors配置
在Logtail插件配置中,processors字段是必选项。目前,您可以使用如下插件对数据处理。
功能 | Logtail插件 | 说明 |
---|---|---|
提取字段 | processor_regex | 您可以使用processor_regex插件(正则模式)提取字段。更多信息,请参见正则模式。 |
processor_anchor | 您可以使用processor_anchor插件(标定模式)提取字段。更多信息,请参见标定模式。 | |
processor_csv | 您可以使用processor_csv插件(CSV模式)提取字段。更多信息,请参见CSV模式。 | |
processor_split_char | 您可以使用processor_split_char插件(单字符分隔符模式)提取字段。更多信息,请参见单字符分隔符模式。 | |
processor_split_string | 您可以使用processor_split_string插件(多字符分隔符模式)提取字段。更多信息,请参见多字符分隔符模式。 | |
processor_split_key_value | 您可以使用processor_split_key_value插件(键值对模式)提取字段。更多信息,请参见键值对模式。 | |
processor_grok | 您可以使用processor_grok插件(Grok模式)提取字段。更多信息,请参见Grok模式。 | |
添加字段 | processor_add_fields | 您可以使用processor_add_fields插件添加字段。更多信息,请参见添加字段。 |
丢弃字段 | processor_drop | 您可以使用processor_drop插件丢弃字段。更多信息,请参见丢弃字段。 |
重命名字段 | processor_rename | 您可以使用processor_rename插件重命名字段。更多信息,请参见重命名字段。 |
打包字段 | processor_packjson | 您可以使用processor_packjson插件将一个或多个字段打包为一个JSON Object格式的字段。更多信息,请参见打包字段。 |
展开JSON字段 | processor_json | 您可以使用processor_json插件对字段值进行JSON展开。更多信息,请参见展开JSON字段。 |
过滤日志 | processor_filter_regex | 您可以使用processor_filter_regex插件过滤日志。更多信息,请参见processor_filter_regex。 |
processor_filter_key_regex | 您可以使用processor_filter_key_regex插件过滤日志。更多信息,请参见processor_filter_key_regex。 | |
提取日志时间 | processor_gotime | 使用processor_gotime插件(Go语言时间格式)解析原始日志中的时间字段,并可将解析结果设置为日志时间。更多信息,请参见Go语言时间格式。 |
转换IP地址 | processor_geoip | 您可以使用processor_geoip插件将日志中的IP地址转换为地理位置(国家、省份、城市、经纬度)。更多信息,请参见转换IP地址。 |
数据脱敏 | processor_desensitize | 您可以使用processor_desensitize插件将日志中的敏感数据替换为指定字符串或MD5值。更多信息,请参见数据脱敏。 |
字段值映射 | processor_dict_map | 您可以使用processor_dict_map插件对字段值进行映射。更多信息,请参见字段值映射处理。 |
字段加密 | processor_encrypt | 您可以使用processor_encrypt插件对指定字段进行加密。更多信息,请参见字段加密。 |
数据编码与解码 | processor_base64_decoding | 您可以使用processor_base64_decoding插件对字段值进行解码。更多信息,请参见BASE64解码。 |
processor_base64_encoding | 您可以使用processor_base64_encoding插件对字段值进行编码。更多信息,请参见BASE64编码。 | |
processor_md5 | 您可以使用processor_md5插件对字段值进行MD5编码。更多信息,请参见MD5编码。 |
aggregators配置
如果您使用Logtail插件方式处理日志,且只添加了processors配置,则日志中的__topic__字段将被重命名为__log_topic__,且查询分析日志时,该日志对应的上下文查询及LiveTail功能不可用。如果您要使用这些功能,需在Logtail插件配置中添加processors配置和aggregators配置,即需要额外添加日志上下文聚合插件(aggregator_context插件),配置示例如下所示。
{
...
"processors" : [...],
"aggregators": [
{
"type": "aggregator_context",
"detail": {}
}
]
}
增加aggregators配置后,日志中将同时存在__topic__字段和__log_topic__字段,两个字段的值相同。
功能入口
当您需要使用Logtail插件处理日志时,您可以在创建或修改Logtail配置时,添加插件配置。
在修改Logtail配置时添加插件配置
- 登录日志服务控制台。
- 在Project列表区域,单击目标Project。
- 在>,依次选择 。 页签中,单击目标日志库前面的
- 在Logtail配置列表中,单击目标Logtail配置。
- 在Logtail配置页面,单击修改。
- 添加Logtail插件处理配置,然后单击保存。采集不同数据源时,对应的配置项有所不同。具体说明如下:
- 使用Logtail采集文本日志时,您可以在高级选项区域,打开启用插件处理开关,然后在插件配置中,添加插件配置。更多信息,请参见高级配置。
- 使用Logtail插件采集日志时,您可以在插件配置中,添加插件配置。更多信息,请参见通过Logtail插件采集数据。
- 使用Logtail插件采集Kubernetes标准输出时,支持界面化配置,即您可以在数据处理区域,单击新增,添加插件配置。更多信息,请参见通过DaemonSet-控制台方式采集容器标准输出。
- 使用Logtail采集文本日志时,您可以在高级选项区域,打开启用插件处理开关,然后在插件配置中,添加插件配置。更多信息,请参见高级配置。
在创建Logtail配置时添加插件配置
在创建Logtail配置时,您也可以添加Logtail插件配置,即您在接入数据区域的自建开源/商业软件页签下,选择目标数据源,完成选择日志空间、创建机器组、机器组配置等步骤后,可以在Logtail配置或数据源设置步骤中,添加插件配置。具体操作,请参见采集文本日志、通过Logtail插件采集数据等。
该插件配置与在修改Logtail配置时的插件配置相同。