部署教程|Grafana Loki + Promtail:轻量日志聚合与检索

1. 方案概览

Loki 是“类 Prometheus 的日志系统”,索引少、存储便宜;Promtail 负责采集并推送到 Loki;Grafana 用来查询/仪表盘/告警。

2. Docker Compose 部署(最小示例)

docker-compose.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
version: "3.8"
services:
loki:
image: grafana/loki:2.9.0
command: -config.file=/etc/loki/local-config.yaml
ports:
- "3100:3100"
volumes:
- ./loki-config.yaml:/etc/loki/local-config.yaml

promtail:
image: grafana/promtail:2.9.0
volumes:
- /var/log:/var/log
- ./promtail-config.yaml:/etc/promtail/config.yaml
command: -config.file=/etc/promtail/config.yaml

loki-config.yaml 使用官方 local-config 即可;promtail-config.yaml 示例:

1
2
3
4
5
6
7
8
9
10
11
server:
http_listen_port: 9080
clients:
- url: http://loki:3100/loki/api/v1/push
scrape_configs:
- job_name: varlogs
static_configs:
- targets: [localhost]
labels:
job: varlogs
__path__: /var/log/*log

启动:

1
docker compose up -d

Grafana 可单独用官方镜像,连接 Loki 数据源:URL = http://loki:3100.

3. Kubernetes 部署(Helm)

1
2
3
4
5
6
7
8
9
10
11
helm repo add grafana https://grafana.github.io/helm-charts
helm repo update

# Loki 单实例最小部署
helm install loki grafana/loki --namespace observability --create-namespace \
--set loki.auth_enabled=false

# Promtail DaemonSet
helm install promtail grafana/promtail -n observability \
--set "loki.serviceName=loki" \
--set "config.clients[0].url=http://loki:3100/loki/api/v1/push"

Promtail 默认会抓取容器日志路径 /var/log/pods,并自动附带 k8s 标签(namespace/pod/container)。

4. 在 Grafana 查询

  1. 添加数据源:Loki → URL 指向 http://loki:3100.
  2. 示例 LogQL:
    • 最近错误:{job="varlogs"} |= "error"
    • 按服务聚合:sum by (service) (count_over_time({service!=""}[$5m]))
  3. 可把 LogQL 转成图表或告警。

5. 生产化提示

  • 存储:为 Loki 配置持久卷;按量级选单实例/微服务模式。
  • 分片与限流:高并发写入时调整 ingester/querier 并发与限流。
  • 标签控制:避免高基数标签(如随机 ID),保持查询高效。
  • 安全:开启 auth,或放到内网;对 Grafana 启用登录/SSO。
  • 备份:对象存储后端(S3/R2/OSS)可直接备份;本地盘需定期快照。

6. 常见故障

  • 日志没入库:检查 Promtail clients.url、网络和标签路径。
  • 查询慢:减少高基数标签,缩短时间范围,检查存储 IO。
  • 磁盘占用猛增:调整保留策略、压缩、下沉冷数据。

7. 总结

Loki + Promtail 用极低成本解决日志聚合,既能跑在 Compose,也能在 Kubernetes 一键部署。加上 Grafana,查询与告警即可闭环。先用最小配置跑通,再按量级调优存储与标签。***