概述

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

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部