概述
目标:以标签为核心进行日志索引与查询,使用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=(?Pinfo|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可在生产环境低成本落地日志聚合与分析。

发表评论 取消回复