SuperAPI AI 工具集

loki-logging

部署与运维

查看项目

更新于 10-23 02:19

技能介绍

用途

Grafana Loki 是一个受 Prometheus 启发的日志聚合与查询系统。本技能用于配置 Loki 进行日志聚合与分析,适合以下场景:

  • 实现高性价比的日志聚合
  • 为 Kubernetes 环境构建日志系统
  • 将日志与 Grafana 仪表盘集成
  • 使用基于标签的过滤方式查询日志
  • 寻找比 ELK 更轻量的替代方案

前置条件

  • Docker 或 Kubernetes
  • Grafana(用于可视化)
  • Promtail 或其他日志采集器

架构概览

应用日志经 Promtail 采集后推送至 Loki,再由 Grafana 进行查询与展示。

主要能力

Docker 部署

通过 docker-compose 同时启动 loki、promtail 和 grafana 三个服务,并挂载各自的配置文件与数据卷。

Loki 配置

loki-config.yaml 中可配置监听端口、存储路径、schema、索引、查询限制、数据保留策略等。示例中启用了 reject_old_samples、max_query_series、max_query_parallelism 等限制,并设置 168 小时(7 天)的保留期。

Promtail 配置

promtail-config.yaml 支持采集系统日志、Docker 容器日志以及应用日志。可通过 pipeline_stages 对日志进行 JSON 解析、正则提取、标签添加、时间戳修改等处理。

Kubernetes 部署

可使用 Helm 安装 loki-stack,并启用 grafana 与 promtail。Promtail 以 DaemonSet 形式部署,挂载 /var/log 与 /var/lib/docker/containers 等路径。

LogQL 查询

支持基础查询(按标签过滤、正则匹配)、日志管道(内容过滤、JSON 解析、line_format)、指标查询(count_over_time、rate、sum by、topk)以及聚合(avg_over_time、quantile_over_time、错误百分比计算)。

管道阶段

Promtail 的 pipeline_stages 支持 json、regex、labels、timestamp、match、static_labels、template 等阶段,用于在采集时解析和加工日志。

Grafana 集成

可通过 provisioning 配置 Loki 数据源,并在仪表盘中添加日志面板。

记录规则与告警

支持定义 recording rules 与 alerting rules,例如按 job 统计错误率、当错误率超过阈值时触发告警。

常见问题

  • 内存占用过高:减少 max_query_series,限制查询时间范围
  • 日志未出现:检查 positions 文件、文件路径与标签配置
  • 查询超时:增加更具体的标签过滤,缩小时间范围
  • 摄入速率限制:调整 limits_config 中的 per_stream_rate_limit

最佳实践

  • 使用有意义的标签,避免高基数
  • 先按标签过滤,再按日志内容过滤
  • 在采集时用 Promtail 解析日志
  • 设置合适的保留期
  • 对常用查询使用记录规则
  • 大型部署实现多租户
  • 监控 Loki 自身指标
  • 使用 chunk 缓存提升性能

限制

  • 相关指导会在真实环境中执行:应用任何操作前请确认目标、影响范围与回滚方案。
  • 未经明确批准,切勿部署到生产环境。
  • 本文档为纯文档导入,上游脚本与模板未随附。