Promtail 是什么
Promtail 是 Grafana Labs 开发的日志采集 agent,专门用于从各种来源采集日志并将其发送到 Loki 存储。名称来源于"Prometheus tail"——受 Prometheus 的 pull 模式启发,但针对日志场景做了适配。
主要功能
- 文件 tail:监控本地文件(如
/var/log/*.log),实时采集新增内容 - systemd journal:采集 journald 日志
- syslog 接收:作为 syslog server,接收远端设备通过 UDP/TCP 推送的日志
- Docker/Kubernetes:采集容器日志
- Label 打标:通过 pipeline stages 对日志打 label、做正则提取、过滤等
与 Loki 的关系
Promtail 是 Loki 的配套 agent:
日志源(文件 / syslog / journal)
↓
Promtail(采集、打标、转发)
↓
Loki(存储)
↓
Grafana(查询)
三者组合构成 Grafana 的日志技术栈(类比 Prometheus + node_exporter + Grafana 的 metrics 技术栈)。
配置示例
# promtail-config.yaml
server:
http_listen_port: 9080
positions:
filename: /tmp/positions.yaml
clients:
- url: http://loki:3100/loki/api/v1/push
scrape_configs:
# 采集本地文件
- job_name: system
static_configs:
- targets: [localhost]
labels:
job: varlogs
__path__: /var/log/*.log
# 接收 syslog(UDP)
- job_name: syslog
syslog:
listen_address: 0.0.0.0:5140
listen_protocol: udp
labels:
job: syslog
relabel_configs:
- source_labels: [__syslog_message_hostname]
target_label: host
维护状态
⚠️ Promtail 已进入维护模式
Grafana Labs 在 2024 年宣布 Promtail 进入维护模式,不再新增功能,只做安全修复。官方推荐迁移到 Grafana Alloy,Alloy 是 Promtail 的功能超集,同时支持 metrics、logs 和 traces。
| 项 | Promtail | Grafana Alloy |
|---|---|---|
| 维护状态 | 维护模式 | 主动开发 |
| 功能 | 仅 logs | metrics + logs + traces |
| 推荐用于 | 已有部署维护 | 新建部署 |