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

如何为.log与.json日志构建统一处理Pipeline?求解决方案

解决方案

Logstash要同时处理JSON和纯文本.log日志,核心是通过条件判断区分日志类型,分别应用对应的解析逻辑。你之前的配置存在语法错误(Logstash用=>而非=,且json是独立插件而非直接赋值codec),且未覆盖纯文本日志的处理分支,以下是可行配置:

完整Filter配置示例

filter {
    # 先尝试解析JSON格式日志
    json {
        source => "message"
        remove_field => ["message"] # 解析成功后可移除原始message字段,按需选择
    }

    # 若JSON解析失败(说明是.log纯文本日志),使用Grok解析
    if "_jsonparsefailure" in [tags] {
        grok {
            # 替换为你的.log日志对应的Grok模式,这里举通用示例
            match => { "message" => "%{TIMESTAMP_ISO8601:log_time} %{LOGLEVEL:level} %{DATA:logger} - %{GREEDYDATA:content}" }
            remove_field => ["message"] # 按需移除原始字段
        }
        # 可选:移除JSON解析失败标签,避免干扰后续处理
        mutate {
            remove_tag => ["_jsonparsefailure"]
        }
    }
}

关键说明

  • JSON解析分支:使用json插件解析message字段,解析成功后会将JSON结构展开为Logstash字段;若解析失败,Logstash会自动添加_jsonparsefailure标签。
  • 纯文本.log处理分支:通过if "_jsonparsefailure" in [tags]判断进入纯文本逻辑,用grok插件匹配你的.log日志格式。需根据实际.log的结构替换示例中的Grok模式(比如Nginx日志可用预定义的%{NGINXACCESS}模式)。
  • 语法修正:Logstash配置中,插件参数使用=>而非=,且插件需用{}包裹配置块。

如果你的.log日志是自定义格式,可通过Logstash自带的调试工具验证Grok模式的匹配效果,再替换到配置中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 17:53:13