iLogtail

1756
下载
iLogtail 是阿里云日志服务(Log Service)中的一款高性能、可扩展的日志采集工具。它被设计用于实时收集、解析和传输各类日志数据,支持多种数据源和复杂的日志处理场景,广泛应用于分布式系统、Web 服务器、应用程序等环境中的日志管理。

键值对


简介

processor_split_key_value processor插件可以通过切分键值对的方式提取字段。

版本

Stable

配置参数

参数类型是否必选说明
TypeString插件类型。
SourceKeyString原始字段名。
DelimiterString键值对之间的分隔符。如果未添加该参数,则默认使用制表符\t。
SeparatorString单个键值对中键与值之间的分隔符。如果未添加该参数,则默认使用冒号(:)。
KeepSourceBoolean是否保留原始字段。如果未添加该参数,则默认使用true,表示保留。
ErrIfKeyIsEmptyBoolean当key为空字符串时是否告警。如果未添加该参数,则默认使用true,表示告警。
EmptyKeyPrefixString如果key是空字符串,可通过该参数设置key的前缀,默认为”empty_key_“,最终key的格式为前缀+序号,比如”empty_key_0”。
DiscardWhenSeparatorNotFoundBoolean无匹配的原始字段时是否丢弃该键值对。如果未添加该参数,则默认使用false,表示不丢弃。
NoSeparatorKeyPrefixBoolean无匹配的原始字段时,如果保留该键值对,可通过该参数设置key的前缀,默认为”no_separator_key_”, 最终保存下来的格式为前缀+序号:报错键值对,比如”no_separator_key_0”:“报错键值对”
ErrIfSourceKeyNotFoundBoolean无匹配的原始字段时是否告警。如果未添加该参数,则默认使用true,表示告警。
ErrIfSeparatorNotFoundBoolean当指定的分隔符(Separator)不存在时是否告警。如果未添加该参数,则默认使用true,表示告警。
QuoteString引用符,当设定后若值被引用符包含,就提取引用符内的值。 注意引用符若为双引号,需要加转义符\。 当引用符内包含\字符与引用连用的情况,作为值的一部分输出。 引用符支持多字符。 默认不开启引用符功能。

样例

切分键值对1

采集/home/test-log/路径下的key_value.log文件,并按照键值对间分隔符为制表符\t,键值对中的分隔符为冒号: 的格式进行日志解析。

  • 输入
Terminal window
echo -e 'class:main\tuserid:123456\tmethod:get\tmessage:\"wrong user\"' >> /home/test-log/key_value.log
  • 采集配置
enable: true
inputs:
- Type: input_file
FilePaths:
- /home/test-log/*.log
processors:
- Type: processor_split_key_value
SourceKey: content
Delimiter: "\t"
Separator: ":"
flushers:
- Type: flusher_stdout
OnlyStdout: true
  • 输出
{
"__tag__:__path__": "/home/test_log/key_value.log",
"class": "main",
"userid": "123456",
"method": "get",
"message": "\"wrong user\"",
"__time__": "1657354602"
}

包含引用符的切分键值对

采集/home/test-log/路径下的key_value.log文件,并按照键值对间分隔符为制表符\t,键值对中的分隔符为冒号: 的格式进行日志解析。

  • 输入
Terminal window
echo -e 'class:main http_user_agent:"User Agent" "中文" "hello\t\"ilogtail\"\tworld"' >> /home/test-log/key_value.log
  • 采集配置
enable: true
inputs:
- Type: input_file
FilePaths:
- /home/test-log/*.log
processors:
- Type: processor_split_key_value
SourceKey: content
Delimiter: " "
Separator: ":"
Quote: "\""
flushers:
- Type: flusher_stdout
OnlyStdout: true
  • 输出
{
"__tag__:__path__": "/home/test_log/key_value.log",
"class": "main",
"http_user_agent": "User Agent",
"no_separator_key_0": "中文",
"no_separator_key_1": "hello\t\"ilogtail\"\tworld",
"__time__": "1657354602"
}

包含多字符引用符的切分键值对

采集/home/test-log/路径下的key_value.log文件,并按照键值对间分隔符为制表符\t,键值对中的分隔符为冒号: 的格式进行日志解析。

  • 输入
Terminal window
echo -e 'class:main http_user_agent:"""User Agent""" """中文"""' >> /home/test-log/key_value.log
  • 采集配置
enable: true
inputs:
- Type: input_file
FilePaths:
- /home/test-log/*.log
processors:
- Type: processor_split_key_value
SourceKey: content
Delimiter: " "
Separator: ":"
Quote: "\"\"\""
flushers:
- Type: flusher_stdout
OnlyStdout: true
  • 输出
{
"__tag__:__path__": "/home/test_log/key_value.log",
"class": "main",
"http_user_agent": "User Agent",
"no_separator_key_0": "中文",
"__time__": "1657354602"
}

observability.cn Authors 2024 | Documentation Distributed under CC-BY-4.0
Copyright © 2017-2024, Alibaba. All rights reserved. Alibaba has registered trademarks and uses trademarks.
浙ICP备2021005855号-32