概述

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


点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部