You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Logstash配置过滤丢弃无userId字段日志规则不生效问题求助

Logstash过滤规则不生效问题解决

错误原因

你的配置存在两处核心问题导致过滤规则未生效:

  • 过滤器执行顺序颠倒:你先执行了userId存在性判断,之后才调用json插件解析message字段的内容。如果原始输入是完整JSON字符串存放在message字段中,执行判断逻辑时contextMap字段还没有被解析生成,判断规则自然无法命中。
  • 字段存在性判断语法错误:if "userId" not in [contextMap]是用于判断数组contextMap中是否包含"userId"这个值的语法,而你需要判断的是contextMap对象(哈希结构)下是否存在userId这个键,二者逻辑完全不符。

修正后的配置

你只需要调整filter块的逻辑顺序和判断语法即可,参考配置如下:

filter {
    # 优先解析message字段中的JSON内容,生成结构化字段
    json {
        source => "message"
    }

    # 判断contextMap存在、且其下没有userId字段时,丢弃当前日志
    if [contextMap] and !([contextMap][userId]) {
        drop {}
    }
}

可选优化

如果你的TCP输入接收的就是标准JSON格式数据,也可以直接在tcp输入中启用json编解码,省去filter阶段的JSON解析步骤:

input {
    tcp {
        port => 5000
        codec => json { charset=>"UTF-8" }           
    }
    stdin {}
}

内容的提问来源于stack exchange,提问作者Navigator

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 17:18:04