Logstash 中如何判断某个 tag 是否存在?

Logstash 判断 tag 用 in 运算符:if "tagname" in [tags];判断不存在用 not in 或否定。本文给出语法示例与 tags 数组的常用操作。

最佳实践
Logstash 中如何判断某个 tag 是否存在?封面

in 运算符:if "urgent" in [tags] { ... }——tags 是数组,in 检查元素是否在其中;取反用 if "urgent" not in [tags](或 !(...))。

基本用法

filter {
  if "grokparsefailure" in [tags] {
    # 解析失败的日志分流
    mutate { add_field => { "parse_ok" => "false" } }
  }

  if "production" not in [tags] {
    drop { }    # 非生产日志直接丢弃
  }
}

tags 的常用操作

# 添加 tag
mutate { add_tag => ["processed"] }

# 删除 tag
mutate { remove_tag => ["_dateparsefailure"] }

# 多条件
if ("error" in [tags]) and ("critical" in [tags]) { ... }

典型场景

  • _grokparsefailure 标签兜底处理解析失败的日志;
  • Beats 输入常打 beats_input_codec_plain_applied 等标签;
  • 自打标签做路由:add_tag => ["to_es"],输出端 if "to_es" in [tags]

常见问题(FAQ)

Q:if [tags] == "urgent" 为什么不行? tags 是数组不是字符串——== 比较的是整个数组。

Q:tag 名带特殊字符? in 判断的是精确字符串匹配,含特殊字符照写即可。

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台