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

如何使用Filebeat及processors解析自定义混合日志,无需依赖Logstash

完整可实现需求的Filebeat配置如下

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /tmp/a.log
  processors:
    # 第一步:拆分原始日志提取目标字段,避免和根字段重名减少歧义
    - dissect:
        tokenizer: "TID: [-1234] [] [%{log_time}]  INFO {org.wso2.carbon.event.output.adapter.logger.LoggerEventAdapter} - Unique ID: Evento_Teste, Event: %{event_json_str}"
        field: "message"
    # 第二步:用日志提取的时间替换根节点@timestamp
    - timestamp:
        field: dissect.log_time
        # 匹配日志时间格式,采用Golang标准参考时间写法
        layouts:
          - '2006-01-02 15:04:05,000'
        # 若日志不是UTC时区,可修改为对应时区,例如东八区填Asia/Shanghai
        timezone: "UTC"
        remove_field: "dissect.log_time"
    # 第三步:解析Event对应的JSON内容并替换message
    - decode_json_fields:
        fields: ["dissect.event_json_str"]
        # 解析后内容直接放到message字段,如需把JSON字段放到根节点则填空字符串
        target: "message"
        overwrite_keys: true
        remove_field: "dissect.event_json_str"
    # 可选:删除冗余的dissect节点、原始日志message字段
    - drop_fields:
        fields: ["dissect"]
        ignore_missing: true

output.console:
  pretty: true

配置说明

  1. 时间格式匹配采用Golang的标准参考时间2006-01-02 15:04:05,000,完全适配你日志里的年-月-日 时:分:秒,毫秒格式,解析成功后会直接覆盖Filebeat默认生成的采集时间为日志实际打印时间。
  2. 如果你不需要把Event内容解析为结构化JSON,只想把原始JSON字符串作为message的值,可删除decode_json_fields处理器,新增rename处理器直接把dissect.event_json_str重命名为message即可。
  3. 可根据实际存储需求调整drop_fields的配置,决定是否保留原始日志、dissect中间字段等内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 06:30:02