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

如何在Logstash中从文本+JSON混合日志提取有效JSON部分

解决方案

1. 调整Logstash输入配置

先去掉原来的codec => json,改用plain codec(默认即为plain,也可显式声明),确保整个混合日志内容被完整接收为message字段:

input {
  syslog {
    port => 5044
    codec => plain
  }
}

2. 配置Filter组件提取并解析JSON

用grok先把日志里的JSON部分单独提取出来,再通过json过滤器将其解析为独立业务字段,最后清理掉无用的文本字段:

filter {
  # 匹配日志结构:前面是可丢弃的文本(日期),后面是JSON内容
  # 如果你的日期有固定格式,可替换为更精准的grok模式,比如%{TIMESTAMP_ISO8601}
  grok {
    match => { "message" => "%{GREEDYDATA:discard_text}%{JSON:json_payload}" }
    # 关闭匹配失败的标记(日志格式固定时建议开启,方便排查异常)
    tag_on_failure => []
  }

  # 将提取到的JSON字符串解析为独立字段
  json {
    source => "json_payload"
    # 可选:如果希望业务字段统一放在某个命名空间下,可指定target,比如target => "business_data"
  }

  # 清理不需要的字段
  mutate {
    remove_field => ["message", "discard_text", "json_payload"]
  }
}

3. 验证与微调

  • 如果日志中文本部分(日期)有固定格式,比如YYYY-MM-DD HH:mm:ss,可以把%{GREEDYDATA:discard_text}替换为%{TIMESTAMP_ISO8601:log_timestamp},后续可选择保留或删除这个时间戳字段。
  • 可以用Logstash自带的logstash-plugin inspect grok工具本地调试grok规则,确保匹配准确。
  • 配置完成后重启Logstash,查看Kibana中是否已生成独立的业务字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 09:11:54