概述
- 目标:以标签为核心进行日志索引与查询,使用Promtail收集主机/容器日志到Loki,低成本实现检索与聚合。
- 适用:Kubernetes/VM混合环境日志、按服务/环境维度查询与告警。
核心与实战
- Promtail配置示例:
server:
http_listen_port: 9080
grpc_listen_port: 0
clients:
- url: http://loki:3100/loki/api/v1/push
positions:
filename: /tmp/positions.yaml
scrape_configs:
- job_name: varlogs
static_configs:
- targets: [localhost]
labels:
job: varlogs
host: ${HOSTNAME}
app: web
__path__: /var/log/*.log
pipeline_stages:
- match:
selector: '{app="web"}'
stages:
- regex:
expression: '.*level=(?P<level>info|warn|error).*'
- labels:
level:
value: "" # 由regex捕获赋值
- Loki配置简要:
auth_enabled: false
server:
http_listen_port: 3100
ingester:
lifecycler:
ring:
kvstore:
store: inmemory
schema_config:
configs:
- from: 2020-10-24
store: boltdb-shipper
object_store: filesystem
schema: v11
index:
prefix: index_
period: 24h
storage_config:
boltdb_shipper:
active_index_directory: /tmp/loki/index
cache_location: /tmp/loki/cache
filesystem:
directory: /tmp/loki/chunks
示例
- 推送并查询:
curl -G -s "http://loki:3100/loki/api/v1/query" --data-urlencode 'query={app="web"} |= "error"'
- 聚合统计:
curl -G -s "http://loki:3100/loki/api/v1/query" --data-urlencode 'query=sum by (level) (count_over_time({app="web"}[5m]))'
验证与监控
- Promtail与Loki健康:
curl -s http://promtail:9080/metrics | head
curl -s http://loki:3100/ready
- 标签与查询命中:
- 在Grafana中添加Loki数据源,使用Explore检索`{app="web"}`并查看标签展开。
- 资源利用:
- 观察chunk与index目录增长;按保留策略控制存储成本。
常见误区
- 过多/不稳定标签导致高基数与查询慢;需控制标签数量与稳定性。
- 在`pipeline_stages`中过度解析大日志影响吞吐;必要时分级采集或限流。
- 忽视保留与压缩策略导致磁盘膨胀;需设置索引周期与存储后端策略。
结语
- Loki以标签化日志与按时间分片存储实现高效检索,结合Promtail与Grafana可在生产环境低成本落地日志聚合与分析。

发表评论 取消回复