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

Elasticsearch/Kibana显示错误时间戳求助:Filebeat覆盖日志原时间戳

问题分析与解决方案

问题原因

Filebeat默认会将事件的@timestamp字段设置为日志被采集传输的时间,即便原始日志本身包含@timestamp字段,Filebeat也会默认覆盖该字段,这就是你看到原始时间戳丢失、显示传输时间的核心原因。

解决方案

针对你的NDJSON格式日志,有两种高效的处理方式:


方式1:通过Parser直接指定原始时间戳字段

修改filebeat.inputs中的NDJSON解析配置,禁止覆盖原始字段并指定用日志自带的@timestamp作为事件时间:

filebeat.inputs:
  - type: filestream
    id: pls-logs
    paths:
      - /usr/share/filebeat/logs/*.log
    parsers:
      - ndjson:
          target: ""
          overwrite_keys: false  # 关键:禁止覆盖原始日志中的同名字段
          timestamp:
            field: "@timestamp"  # 指定从原始日志的@timestamp字段提取时间
            layouts:
              - "2006-01-02T15:04:05.999Z07:00"  # 匹配你的时间戳格式

方式2:通过处理器保留并替换时间戳

先将原始日志的@timestamp重命名备份,再用备份字段替换Filebeat生成的传输时间:

processors:
  # 第一步:备份原始时间戳字段
  - rename:
      fields:
        - from: "@timestamp"
          to: "log_original_timestamp"
      ignore_missing: true
  # 第二步:用原始时间戳替换Filebeat生成的@timestamp
  - timestamp:
      field: log_original_timestamp
      layouts:
        - "2006-01-02T15:04:05.999Z07:00"
      ignore_missing: true
  - add_cloud_metadata: ~

验证

修改配置后重启Filebeat,在Kibana中查看事件:此时@timestamp会显示日志原始的时间戳,若用方式2还能看到log_original_timestamp字段作为备份。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 07:55:41