Promtail 采集配置是什么
Promtail 是 Loki 的日志采集代理:它按 scrape_configs 声明要读取的文件与附加标签,再把读到的日志推送到 Loki 的 push 接口。文件路径通过 __path__ 这个特殊标签传入,labels 里的键值会直接成为 Loki 的流标签,因此配置写法直接决定流的数量与查询体验。
基本信息
| 角色 | Loki 官方日志采集代理 |
|---|---|
| 推送地址 | http://<loki>:3100/loki/api/v1/push |
| 特殊标签 | __path__ 指定采集文件 |
| 读取位置 | positions.yaml 记录偏移 |
| 标签影响 | labels 直接成为 Loki 流标签 |
| 配置文件 | /etc/promtail/config.yml |
典型使用场景
- 采集宿主机上的 Nginx 与应用日志并送到 Loki
- 以 DaemonSet 形式部署,采集每个节点的容器日志目录
- 给不同路径的日志打上 job、app 标签,便于按服务检索
- 用 pipeline_stages 做多行合并与正则提取后再推送
- 多环境部署时用 labels 里的 env 区分测试与生产
- 排查日志缺失时先看 positions 文件与采集路径是否匹配
promtail 配置示例
promtail 配置示例
server:
http_listen_port: 9080 # 自带指标与健康检查端口
positions:
filename: /var/lib/promtail/positions.yaml # 记录读取偏移
clients:
- url: http://loki:3100/loki/api/v1/push # 推送目标
scrape_configs:
- job_name: nginx
static_configs:
- targets: [localhost]
labels:
job: nginx # 会成为 Loki 流标签
env: prod
__path__: /var/log/nginx/*.log关键字段
| 字段 | 作用 | 说明 |
|---|---|---|
| clients.url | 推送地址 | Loki 的 push 接口 |
| positions.filename | 偏移记录 | 保证重启续采不重复 |
| labels | 流标签 | 低基数、稳定维度 |
| __path__ | 采集路径 | 支持通配符 |
| pipeline_stages | 日志加工 | 多行合并、正则提取 |
labels 里的键值直接成为 Loki 流标签;每个通配路径会按匹配到的文件展开成独立流,路径通配范围要控制。
positions 文件相当于采集进度,删除或丢失会导致全量重采;容器化部署时要注意把它挂载到持久目录。
日志量大时 pipeline_stages 里的多行合并与正则同样有 CPU 成本,规则要尽量简单并先缩窄采集范围。
DaemonSet 部署时容器日志路径来自宿主机挂载(常见 /var/log/pods),路径与 labels 要与集群实际情况对齐。
Promtail 自带 9080 端口暴露自身指标,采集是否正常、推送是否失败都可以从这里先看,比只翻 Loki 侧日志更直接。
静态配置适合目标固定的场景;节点或容器频繁变化时应改用 file_sd 或 Kubernetes 服务发现,避免每次扩缩容都要改配置。