prometheus 不直接处理日志,而是通过采集日志系统(如 fluent bit 或 promtail)暴露的指标(如错误率、行数等)实现日志可观测性;需配置 docker 日志驱动、部署采集器并暴露 /metrics 端点,再由 prometheus 定期拉取,最后结合 grafana 可视化与告警。

Prometheus 本身不处理日志,它只采集指标(metrics),所以“Docker 容器日志对接 Prometheus”不是直接把日志喂给 Prometheus,而是分两步走:
第一步,用日志驱动(如 json-file)或专用采集器(如 Fluent Bit、Loki)收集容器 stdout/stderr 日志;
第二步,把日志系统产生的监控指标(比如日志行数、错误率、采集延迟等)暴露为 Prometheus 可抓取的 metrics 端点,再由 Prometheus 定期拉取。
1. 让 Docker 容器日志可被观测(基础配置)
确保容器日志以结构化方式输出,并限制体积防磁盘打满:
- 全局配置
/etc/docker/daemon.json:
重启 Docker 生效:systemctl restart docker
- 单个容器也可覆盖设置:
docker run --log-driver json-file --log-opt max-size=5m ... - 避免使用
none或syslog驱动(除非后端已配好接收服务)
2. 采集日志并暴露 Prometheus 指标(关键环节)
推荐用 Fluent Bit(轻量、原生支持 Prometheus 输出)或 Loki + Promtail(日志归档+指标联动):
-
Fluent Bit 方案:配置其
prometheus输出插件,自动暴露/api/v1/metrics端点,含fluentbit_input_bytes_total、fluentbit_output_errors_total等指标 -
Loki + Promtail:Promtail 本身会暴露
/metrics,提供promtail_lines_read_total、promtail_positions_loaded等关键采集状态指标 - 不建议直接用 Filebeat 对接 Prometheus——需额外加
metricbeat模块桥接,链路长、易出错
3. Prometheus 抓取日志组件的指标
在 prometheus.yml 中添加 job,指向 Fluent Bit 或 Promtail 的 /metrics 接口:
保存后热重载:curl -X POST http://localhost:9090/-/reload(需启用 --web.enable-lifecycle)
4. 查看与告警(实用收尾)
进入 Prometheus Web UI(:9090),输入类似表达式验证:
-
rate(fluentbit_output_errors_total[1h])→ 看是否有持续写入失败 -
promtail_lines_read_total→ 确认日志行是否在稳定增长 - 搭配 Grafana 做看板,例如绘制「每秒日志行数」趋势图或「最近10分钟解析失败数」告警面板
真正要查日志内容,还是得用 Loki 查询界面或 Kibana —— Prometheus 只管“日志系统是否健康”,不管“日志里写了什么”。











