跳到主要内容

Loki 环境变量

环境变量是配置Grafana Loki服务的灵活方式,尤其适合容器化部署(如Docker或Kubernete)。它们允许您在不修改配置文件的情况下动态调整Loki的行为。

核心环境变量概览

Loki通过环境变量覆盖配置文件中的参数,命名规则为:

  • 全大写字母
  • 下划线代替配置文件中的点符号
  • 前缀 LOKI_(如 LOKI_SCHEMA_CONFIG 对应配置文件的 schema_config
提示

环境变量优先级高于配置文件,但低于命令行参数。这是12-Factor应用推荐的最佳实践。

常用环境变量详解

1. 存储配置

bash
LOKI_SCHEMA_CONFIG_STORE=boltdb-shipper
LOKI_STORAGE_PREFIX=index_
LOKI_BOLTDB_DIRECTORY=/data/loki/index

2. 日志保留策略

bash
LOKI_TABLE_MANAGER_RETENTION_PERIOD=720h  # 30天
LOKI_TABLE_MANAGER_RETENTION_DELETION_ENABLED=true

3. 分布式部署配置

bash
LOKI_MEMBERLIST_JOIN=microservices:7946
LOKI_RING_KVSTORE_STORE=memberlist

实际应用示例

Docker Compose 部署片段

yaml
services:
loki:
image: grafana/loki:latest
environment:
- LOKI_SCHEMA_CONFIG_STORE=boltdb-shipper
- LOKI_STORAGE_TYPE=s3
- LOKI_STORAGE_S3_ENDPOINT=https://storage.example.com
volumes:
- loki-data:/data

Kubernetes ConfigMap 示例

yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: loki-env
data:
LOKI_SCHEMA_CONFIG_STORE: "boltdb-shipper"
LOKI_STORAGE_PREFIX: "prod_"

调试技巧

查看生效的最终配置:

bash
curl http://localhost:3100/config | jq
警告

敏感信息(如密码)应通过Kubernetes Secrets或Docker secrets传递,而非明文环境变量

总结

环境变量提供了:

  • 灵活的部署时配置
  • 与容器编排系统的天然集成
  • 版本控制友好的配置方式

延伸学习

  1. 官方环境变量参考文档
  2. 尝试修改保留策略观察存储变化
  3. 比较环境变量与配置文件方式的优缺点