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传递,而非明文环境变量
总结
环境变量提供了:
- 灵活的部署时配置
- 与容器编排系统的天然集成
- 版本控制友好的配置方式
延伸学习
- 官方环境变量参考文档
- 尝试修改保留策略观察存储变化
- 比较环境变量与配置文件方式的优缺点