iLogtail

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

条件字段处理


简介

processor_fields_with_condition插件支持根据日志部分字段的取值,动态进行字段扩展或删除。源代码

版本

Stable

条件判断

  • 支持多字段取值比较。
  • 关系运算符:equals(默认)、regexp、contains、startwith。
  • 逻辑运算符:and(默认)、or。

过滤能力

  • 默认仅做字段动态处理。
  • 可以开启过滤功能,未命中任意条件则丢弃。

处理能力

  • 与现有插件processor_add_fields、processor_drop保持近似的使用习惯。
  • 可以支持多组条件(Case)进行动态字段处理,但是按顺序匹配上一条后即退出。

配置参数

processor_fields_with_condition配置

参数类型,默认值说明
TypeString,无默认值(必填)插件类型,固定为processor_fields_with_condition
DropIfNotMatchConditionBoolean,false当条均件不满足时,日志是被丢弃(true)还是被保留(false)。
SwitchArray,其中value为Condition,无默认值(必填)切换行动的条件。

Condition类型说明

参数类型,默认值说明
CaseConditionCase,无默认值(必填)日志数据满足的条件。
ActionsArray,其中value为ConditionAction,无默认值(必填)满足条件时执行的动作。

ConditionCase类型说明

参数类型,默认值说明
LogicalOperatorString,and多个条件字段之间的逻辑运算符(and/or)。
RelationOperatorString,equals条件字段的关系运算符(equals/regexp/contains/startwith)。
FieldConditionsMap,其中fieldKey和fieldValue为String类型,无默认值(必填)字段名和表达式的键值对。

ConditionAction类型说明

参数类型,默认值说明
typeString,无默认值(必填)行动类型,可选值是processor_add_fields/processor_drop
IgnoreIfExistBoolean,false当相同的键存在时是否要忽略。
FieldsMap,其中fieldKey和fieldValue为String类型,无默认值(必填)附加字段的键值对。
DropKeysArray,其中value为String,无默认值(必填)丢弃字段。

样例

  • 采集配置(使用metric_mock插件模拟输入)
enable: true
inputs:
- Type: metric_mock
Fields:
content : "{\"t1\": \"2022-07-22 12:50:08.571218122\", \"t2\": \"2022-07-22 12:50:08\", \"a\":\"b\",\"c\":2,\"d\":10, \"seq\": 20}"
t1 : "2022-07-22 12:50:08.571218122"
t2 : "2022-07-22 12:50:08"
a : b
c : "2"
d : "10"
seq : "20"
processors:
- Type: processor_fields_with_condition
DropIfNotMatchCondition: true
Switch:
- Case:
FieldConditions:
seq: "10"
d: "10"
Actions:
- type: processor_add_fields
IgnoreIfExist: false
Fields:
eventCode: event_00001
name: error_oom
- type: processor_drop
DropKeys:
- c
- Case:
FieldConditions:
seq: "20"
d: "10"
Actions:
- type: processor_add_fields
IgnoreIfExist: false
Fields:
eventCode: event_00002
name: error_oom2
flushers:
- Type: flusher_stdout
OnlyStdout: true
  • 输出
{
"Index":"1",
"a":"b",
"c":"2",
"content":"{\"t1\": \"2022-07-22 12:50:08.571218122\", \"t2\": \"2022-07-22 12:50:08\", \"a\":\"b\",\"c\":2,\"d\":10, \"seq\": 20}",
"d":"10",
"seq":"20",
"t1":"2022-07-22 12:50:08.571218122",
"t2":"2022-07-22 12:50:08",
"eventCode":"event_00002",
"name":"error_oom2",
"__time__":"1658490721"
}

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