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

如何配置Grafana Agent仅跳过过旧日志?

问题:Grafana Agent跳过过旧Docker日志的配置方法

我尝试用Grafana Agent 0.35替代Promtail 2.8.4向Loki 2.8.4发送Docker容器日志,配置docker_sd_configs后,Agent启动后Grafana中无法查看日志,Agent日志报错如下:

Aug 25 10:02:15 test grafana-agent[12795]: ts=2023-08-25T10:02:15.806026191Z caller=client.go:430 level=error component=logs logs_config=default component=client host=172.31.11.242:3100 msg="final error sending batch" status=400 tenant= error="server returned HTTP status 400 Bad Request (400): entry for stream '{container=\"keycloak\", host=\"test\", source=\"stdout\"}' has timestamp too old: 2023-08-16T16:20:32Z, oldest acceptable timestamp is:2023-08-18T10:02:15Z"

当前配置

logs:
  configs:
  - name: default

    positions:
      filename: /tmp/positions.yaml

    clients:
      - url: http://172.31.11.242:3100/loki/api/v1/push
        external_labels:
          host: test

    scrape_configs:
    - job_name: docker
      docker_sd_configs:
          - host: unix:///var/run/docker.sock
            refresh_interval: 5s
      relabel_configs:
          - source_labels: ['__meta_docker_container_name']
            regex: '/(.*)'
            target_label: 'container'
          - source_labels: [__meta_docker_container_log_stream]
            target_label: source

调研情况

  • 使用Promtail 2.8.4时无此问题
  • 不想修改Loki配置允许旧日志,仅希望跳过过旧日志
  • 重启Docker容器后Agent可读取新日志,但不想重启所有容器
  • 现有GitHub修复仅适用于journal配置,与Docker日志无关

解决方案

在scrape_config中添加pipeline_stages,通过drop阶段过滤时间戳早于指定阈值的日志条目,无需重启Docker容器即可生效。

修改后的完整配置如下:

logs:
  configs:
  - name: default

    positions:
      filename: /tmp/positions.yaml

    clients:
      - url: http://172.31.11.242:3100/loki/api/v1/push
        external_labels:
          host: test

    scrape_configs:
    - job_name: docker
      docker_sd_configs:
          - host: unix:///var/run/docker.sock
            refresh_interval: 5s
      relabel_configs:
          - source_labels: ['__meta_docker_container_name']
            regex: '/(.*)'
            target_label: 'container'
          - source_labels: [__meta_docker_container_log_stream]
            target_label: source
      pipeline_stages:
        # 解析Docker日志自带的RFC3339格式时间戳
        - timestamp:
            source: time
            format: RFC3339
        # 丢弃早于7天的日志,可根据Loki的retention_period调整时长
        - drop:
            older: 7d

配置说明

  1. timestamp阶段:提取Docker日志原生时间戳,确保判断的是日志产生时间而非Agent采集时间
  2. drop阶段:older: 7d表示丢弃7天前的日志,需与Loki配置的retention_period保持一致,保证日志时间符合Loki的最小可接受范围

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 13:01:10