Grafana 连接核心数据源详解

Grafana 连接核心数据源详解:Prometheus、Loki、MySQL/PostgreSQL

Grafana 的强大之处在于它能统一接入多种数据源,将监控、日志、业务数据融合在一个可视化平台中。掌握如何连接和使用核心数据源,是构建完整可观测性系统的基石。

本文将详细讲解如何在 Grafana 中配置三大核心数据源:

  • Prometheus(指标监控)
  • Loki(日志聚合)
  • MySQL / PostgreSQL(业务数据)

一、连接 Prometheus:指标监控的黄金组合

Prometheus + Grafana 是云原生监控的事实标准组合

1. 前提条件

  • Prometheus 正在运行(如 http://localhost:9090
  • 已采集指标(如 up, http_requests_total

2. 添加 Prometheus 数据源

步骤:
  1. ⚙️ ConfigurationData SourcesAdd data source
  2. 搜索并选择 Prometheus
  3. 配置连接信息:
字段示例值说明
NamePrometheus数据源名称
URLhttp://prometheus:9090Prometheus Server 地址
AccessServer(推荐)Grafana 代理请求
Scrape interval15s与 Prometheus 保持一致
  1. 点击 Save & Test,显示 “Data source is working” 即成功。

✅ 如果 Prometheus 在 Docker 中,确保网络可达(如 --network 共享)。


3. 使用 PromQL 查询指标

在 Dashboard 的 Panel 中:

  1. 选择数据源:Prometheus
  2. 在 Query 编辑器中输入 PromQL:
# HTTP 请求速率
rate(http_requests_total[5m])

# P99 延迟
histogram_quantile(0.99, sum(rate(http_request_duration_seconds_bucket[5m])) by (le))

# JVM 堆内存使用率
jvm_memory_used_bytes{area="heap"} / jvm_memory_max_bytes{area="heap"}
  1. 选择图表类型(如 Time series、Stat)
  2. 点击 Apply 查看结果

推荐:导入官方 Dashboard(如 Node Exporter ID: 1860,JVM ID: 4701)


二、连接 Loki:日志可视化神器

Loki 是由 Grafana Labs 开发的水平可扩展、高可用、多租户日志聚合系统,专为 Prometheus 和 Grafana 设计。

1. 前提条件

  • Loki 正在运行(如 http://loki:3100
  • 已配置 Promtail 或其他日志采集器

2. 添加 Loki 数据源

步骤:
  1. Add data source → 搜索 Loki
  2. 配置:
字段示例值
URLhttp://loki:3100
Max lines1000
  1. Save & Test

3. 使用 LogQL 查询日志

LogQL 是 Loki 的查询语言,类似 PromQL。

基本语法
{<label filter>} | <pipeline>
示例查询
# 所有来自 job="api" 的日志
{job="api"}

# 过滤特定级别
{job="api"} |= "error"

# 排除健康检查日志
{job="api"} != "/health"

# JSON 日志字段过滤
{job="api"} | json | level="error"

# 统计日志数量
count_over_time({job="api"}[5m])
在 Panel 中使用
  • 选择 Logs 可视化类型
  • 可结合 Bar chart 显示日志量趋势
  • 支持点击日志跳转到上下文

优势:日志与指标在同一平台关联分析。


三、连接关系型数据库:MySQL / PostgreSQL

Grafana 不仅能监控系统,还能将业务数据可视化,用于生成报表、分析趋势。

1. 前提条件

  • MySQL / PostgreSQL 正在运行
  • 有只读用户权限(安全最佳实践)

2. 添加 MySQL 数据源

步骤:
  1. Add data source → 搜索 MySQL
  2. 配置连接信息:
字段示例值
Hostmysql:3306
Databaseanalytics
Usergrafana_reader
Passwordxxx
  1. Save & Test

✅ PostgreSQL 配置类似,选择 PostgreSQL 数据源。


3. 使用 SQL 查询业务数据

在 Panel 中:

  1. 选择数据源:MySQL
  2. 编写 SQL 查询:
-- 订单数量趋势
SELECT
  UNIX_TIMESTAMP(created_at) as time_sec,
  COUNT(*) as orders
FROM orders
WHERE $__timeFilter(created_at)
GROUP BY time_sec
ORDER BY time_sec
-- 支付成功率
SELECT
  DATE(created_at) as time,
  SUM(CASE WHEN status = 'success' THEN 1 ELSE 0 END) / COUNT(*) as success_rate
FROM payments
WHERE $__timeFilter(created_at)
GROUP BY time
$__timeFilter() 说明
  • Grafana 自动替换为当前时间范围过滤条件
  • 如:created_at BETWEEN '2023-01-01' AND '2023-01-02'

4. 可视化业务指标

  • Time series:显示趋势曲线
  • Stat:显示当前值(如“今日订单数”)
  • Table:展示明细数据
  • Gauge:显示完成率、达标率

适用场景

  • 业务日报/周报
  • 用户增长趋势
  • 支付转化率
  • 库存预警

四、多数据源联动:打造统一可观测平台

Grafana 的最大优势是支持混合数据源查询,实现跨维度分析。

示例:指标 + 日志 + 业务数据联动

Prometheus
Grafana
Loki
MySQL
Dashboard
指标: 请求延迟
日志: 错误堆栈
业务: 订单失败数
实战场景:分析支付失败
  1. Panel 1(Prometheus)
    rate(http_requests_total{handler="/pay", status="500"}[5m])
    
  2. Panel 2(Loki)
    {job="payment"} |= "Payment failed" | json
    
  3. Panel 3(MySQL)
    SELECT COUNT(*) as failed_payments 
    FROM payments 
    WHERE status = 'failed' AND $__timeFilter(created_at)
    

✅ 三个 Panel 共享同一时间范围,一键分析根因。


五、数据源配置最佳实践

实践说明
✅ 使用只读账号连接数据库避免误操作
✅ 为数据源添加描述便于团队理解
✅ 合理设置查询超时避免长时间阻塞
✅ 使用变量动态切换数据库/表提升灵活性
✅ 定期测试连接Save & Test
✅ 敏感信息使用Secrets管理如密码

六、总结

Grafana 通过连接三大核心数据源,构建了可观测性的完整闭环

数据源用途查询语言
Prometheus指标监控PromQL
Loki日志聚合LogQL
MySQL/PostgreSQL业务报表SQL

核心价值:

“一个平台,看尽系统、日志、业务。”

掌握这些数据源的连接与查询方法,你就能:

  • ✅ 监控系统健康
  • ✅ 分析日志上下文
  • ✅ 展示业务趋势
  • ✅ 实现跨维度根因定位

这是构建现代可观测性系统的核心技能,建议逐一实践,熟练掌握。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值