跳到主要内容

与监控平台集成

介绍

Grafana Loki是一个轻量级的日志聚合系统,专为与监控平台(如Prometheus和Grafana)无缝集成而设计。通过将Loki与这些平台集成,您可以实现日志和指标的关联分析,从而更全面地监控和排查系统问题。本章将介绍如何将Loki与常见的监控平台集成,并提供实际案例和代码示例。

Loki 与Prometheus集成

Prometheus是一个流行的监控工具,专注于指标收集。Loki与Prometheus的集成允许您通过Prometheus的标签(labels)快速跳转到相关的日志数据。

配置步骤

  1. 安装Promtail:Promtail是Loki的日志收集代理,负责将日志发送到Loki。
  2. 配置Prometheus和Loki:确保Prometheus和Loki共享相同的标签(labels),以便关联日志和指标。

示例配置

以下是一个Promtail的配置文件示例,用于将日志发送到Loki:

yaml
server:
http_listen_port: 9080
grpc_listen_port: 0

positions:
filename: /tmp/positions.yaml

clients:
- url: http://loki:3100/loki/api/v1/push

scrape_configs:
- job_name: system
static_configs:
- targets:
- localhost
labels:
job: varlogs
__path__: /var/log/*log

实际案例

假设您有一个Prometheus指标 http_requests_total,您可以通过以下查询在Grafana中关联日志:

promql
sum(rate(http_requests_total[5m])) by (job)

在Grafana中,您可以配置一个链接,直接从指标面板跳转到Loki的日志查询界面,使用相同的标签(如 job)过滤日志。

Loki 与Grafana集成

Grafana是Loki的“最佳搭档”,提供了强大的可视化功能。以下是如何在Grafana中配置Loki数据源:

  1. 添加Loki数据源

    • 导航到Grafana的“Configuration” > “Data Sources”。
    • 点击“Add data source”,选择“Loki”。
    • 输入Loki的URL(如 http://loki:3100)。
  2. 查询日志

    • 在Grafana的“Explore”界面中,选择Loki数据源。
    • 使用LogQL查询日志,例如:{job="varlogs"}

示例:联动查询

以下是一个Grafana仪表板的配置示例,展示如何将Prometheus指标和Loki日志联动显示:

json
{
"panels": [
{
"title": "HTTP Requests",
"type": "graph",
"datasource": "Prometheus",
"targets": [
{
"expr": "sum(rate(http_requests_total[5m])) by (job)"
}
]
},
{
"title": "Related Logs",
"type": "logs",
"datasource": "Loki",
"targets": [
{
"expr": "{job=\"varlogs\"}"
}
]
}
]
}

实际应用场景

场景:排查高延迟问题

  1. 发现问题:Prometheus显示某个服务的延迟指标(如 http_request_duration_seconds)突然升高。
  2. 跳转到日志:在Grafana中,点击延迟指标面板上的链接,跳转到Loki日志查询界面,过滤出相同时间段的日志。
  3. 分析日志:通过日志发现错误信息或异常请求,快速定位问题根源。

总结

将Loki与监控平台(如Prometheus和Grafana)集成,可以实现日志和指标的联动分析,显著提升故障排查效率。以下是关键步骤:

  1. 配置Promtail收集日志并发送到Loki。
  2. 在Grafana中添加Loki数据源。
  3. 使用相同的标签关联Prometheus指标和Loki日志。

附加资源

练习

  1. 部署Promtail并将本地日志发送到Loki。
  2. 在Grafana中创建一个仪表板,展示Prometheus指标和关联的Loki日志。
  3. 尝试使用LogQL查询日志,并与PromQL查询的指标进行对比。