如何配置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
配置说明
timestamp阶段:提取Docker日志原生时间戳,确保判断的是日志产生时间而非Agent采集时间drop阶段:older: 7d表示丢弃7天前的日志,需与Loki配置的retention_period保持一致,保证日志时间符合Loki的最小可接受范围
内容的提问来源于stack exchange,提问作者dur
相关产品推荐
相关产品推荐

