📙
iLogtail用户手册
1.8.4
1.8.4
  • 关于
    • 什么是iLogtail
    • 发展历史
    • 产品优势
    • 开源协议
    • 社区版和企业版的对比说明
  • 安装
    • 快速开始
    • Docker使用
    • Kubernetes使用
    • 守护进程
    • 发布记录
    • 支持的操作系统
    • 源代码
      • 下载
      • 编译
      • Docker镜像
      • 编译依赖
    • 镜像站
  • 概念
    • 关键概念
    • 数据流水线
  • 配置
    • 采集配置
    • 系统参数
    • 日志
  • 数据流水线
    • 概览
    • 插件版本管理
    • 输入
      • 文本日志
      • 脚本执行数据
      • 容器标准输出
      • 文本日志(debug)
      • MetricInput示例插件
      • 主机Meta数据
      • Mock数据-Metric
      • eBPF网络调用数据
      • 主机监控数据
      • MySQL Binlog
      • GO Profile
      • GPU数据
      • HTTP数据
      • ServiceInput示例插件
      • Journal数据
      • Kafka
      • Mock数据-Service
      • SqlServer 查询数据
      • OTLP数据
      • PostgreSQL 查询数据
      • Syslog数据
    • 处理
      • 添加字段
      • 添加云资产信息
      • 原始数据
      • 数据脱敏
      • 丢弃字段
      • 字段加密
      • 条件字段处理
      • 日志过滤
      • Go时间格式解析
      • Grok
      • Json
      • 日志转SLS Metric
      • 正则
      • 重命名字段
      • 分隔符
      • 键值对
      • 多行切分
      • 字符串替换
    • 聚合
      • 基础
      • 上下文
      • 按Key分组
      • 按GroupMetadata分组
    • 输出
      • Kafka(Deprecated)
      • kafkaV2
      • ClickHouse
      • ElasticSearch
      • SLS
      • 标准输出/文件
      • OTLP日志
      • Pulsar
      • HTTP
      • Loki
    • 加速
      • 分隔符加速
      • Json加速
      • 正则加速
  • 工作原理
    • 文件发现
    • 插件系统
  • 可观测性
    • 日志
  • 开发者指南
    • 开发环境
    • 日志协议
      • 协议转换
      • 增加新的日志协议
      • 协议
        • sls协议
        • 单条协议
    • 代码风格
    • 数据模型
    • 插件开发
      • 开源插件开发引导
      • Checkpoint接口
      • Logger接口
      • 如何开发Input插件
      • 如何开发Processor插件
      • 如何开发Aggregator插件
      • 如何开发Flusher插件
      • 如何生成插件文档
      • 插件文档规范
      • 纯插件模式启动
    • 测试
      • 单元测试
      • E2E测试
    • 代码检查
      • 检查代码规范
      • 检查文件许可证
      • 检查依赖包许可证
  • 贡献指南
    • 贡献指南
    • 开发者
    • 成就
  • 性能测试
    • 容器场景iLogtail与Filebeat性能对比测试
  • 管控工具
    • 使用介绍
    • 通信协议
    • 开发指南
  • Awesome iLogtail
    • 走近iLogtail社区版
    • iLogtail社区版使用入门
    • iLogtail社区版开发者指南
    • iLogtail社区版使用案例
Powered by GitBook
On this page
  • 简介
  • 版本
  • 配置参数
  • 样例
  • 切分键值对1
  • 包含引用符的切分键值对
  • 包含多字符引用符的切分键值对
  1. 数据流水线
  2. 处理

键值对

Previous分隔符Next多行切分

Last updated 1 year ago

简介

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

版本

配置参数

参数
类型
是否必选
说明

Type

String

是

插件类型。

SourceKey

String

否

原始字段名。

Delimiter

String

否

键值对之间的分隔符。如果未添加该参数,则默认使用制表符\t。

Separator

String

否

单个键值对中键与值之间的分隔符。如果未添加该参数,则默认使用冒号(:)。

KeepSource

Boolean

否

是否保留原始字段。如果未添加该参数,则默认使用true,表示保留。

ErrIfKeyIsEmpty

Boolean

否

当key为空字符串时是否告警。如果未添加该参数,则默认使用true,表示告警。

EmptyKeyPrefix

String

否

如果key是空字符串,可通过该参数设置key的前缀,默认为"empty_key_",最终key的格式为前缀+序号,比如"empty_key_0"。

DiscardWhenSeparatorNotFound

Boolean

否

无匹配的原始字段时是否丢弃该键值对。如果未添加该参数,则默认使用false,表示不丢弃。

NoSeparatorKeyPrefix

Boolean

否

无匹配的原始字段时,如果保留该键值对,可通过该参数设置key的前缀,默认为"no_separator_key_", 最终保存下来的格式为前缀+序号:报错键值对,比如"no_separator_key_0":"报错键值对"

ErrIfSourceKeyNotFound

Boolean

否

无匹配的原始字段时是否告警。如果未添加该参数,则默认使用true,表示告警。

ErrIfSeparatorNotFound

Boolean

否

当指定的分隔符(Separator)不存在时是否告警。如果未添加该参数,则默认使用true,表示告警。

Quote

String

否

引用符,当设定后若值被引用符包含,就提取引用符内的值。 注意引用符若为双引号,需要加转义符\。 当引用符内包含\字符与引用连用的情况,作为值的一部分输出。 引用符支持多字符。 默认不开启引用符功能。

样例

切分键值对1

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

  • 输入

echo -e 'class:main\tuserid:123456\tmethod:get\tmessage:\"wrong user\"' >> /home/test-log/key_value.log
  • 采集配置

enable: true
inputs:
  - Type: file_log
    LogPath: /home/test-log/
    FilePattern: key_value.log
processors:
  - Type: processor_split_key_value
    SourceKey: content
    Delimiter: "\t"
    Separator: ":"
flushers:
  - Type: flusher_sls
    Endpoint: cn-xxx.log.aliyuncs.com
    ProjectName: test_project
    LogstoreName: test_logstore
  - 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文件,并按照键值对间分隔符为制表符,键值对中的分隔符为冒号: 的格式进行日志解析。

  • 输入

echo -e 'class:main http_user_agent:"User Agent" "中文" "hello\t\"ilogtail\"\tworld"' >> /home/test-log/key_value.log
  • 采集配置

enable: true
inputs:
  - Type: file_log
    LogPath: /home/test-log/
    FilePattern: key_value.log
processors:
  - Type: processor_split_key_value
    SourceKey: content
    Delimiter: " "
    Separator: ":"
    Quote: "\""
flushers:
  - Type: flusher_sls
    Endpoint: cn-xxx.log.aliyuncs.com
    ProjectName: test_project
    LogstoreName: test_logstore
  - 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文件,并按照键值对间分隔符为制表符,键值对中的分隔符为冒号: 的格式进行日志解析。

  • 输入

echo -e 'class:main http_user_agent:"""User Agent""" """中文"""' >> /home/test-log/key_value.log
  • 采集配置

enable: true
inputs:
  - Type: file_log
    LogPath: /home/test-log/
    FilePattern: key_value.log
processors:
  - Type: processor_split_key_value
    SourceKey: content
    Delimiter: " "
    Separator: ":"
    Quote: "\"\"\""
flushers:
  - Type: flusher_sls
    Endpoint: cn-xxx.log.aliyuncs.com
    ProjectName: test_project
    LogstoreName: test_logstore
  - 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"
}
Stable