Skip to content

Grafana 指标看板

Grafana 在指标体系里负责连接数据源、查询数据和展示看板。它自己不去抓 Exporter,也不存指标——指标在 Prometheus 的 TSDB 里,Grafana 通过配置好的 Prometheus 数据源执行 PromQL 查询,再把结果用 Time series、Stat、Table 等面板呈现出来。

排查 Grafana 看板上没数据时,按这个顺序往下查通常效率更高:面板的 PromQL 和时间范围 → Grafana 数据源的 URL 和 Save & test → Prometheus Query 页面执行同一条 PromQL → Prometheus Targets 看 exporter 是否 UP → exporter 到真实服务的连通性。链路上任何一层断,Grafana 页面都没数据。

Grafana 和 Prometheus 都跑在 mon01 上。Grafana 数据源里填的 http://127.0.0.1:9090 是 Grafana 服务端去访问 Prometheus 的地址,不是浏览器本机访问 Prometheus 的地址。

安装 Grafana

版本固定为 13.0.1+security-01,通过 Yum 仓库安装:

bash
# 实验环境临时关闭 gpgcheck,生产更适合导入并校验 GPG key
cat >/etc/yum.repos.d/grafana.repo <<'EOF'
[grafana]
name=grafana
baseurl=https://rpm.grafana.com
repo_gpgcheck=0
enabled=1
gpgcheck=0
EOF

dnf install -y grafana
systemctl enable --now grafana-server
systemctl is-active grafana-server

Grafana 监听在 3000 端口,初始账号 admin/admin。浏览器访问 http://192.168.10.11:3000

接入 Prometheus 数据源

实验用 provisioning 文件固化数据源配置,路径是 /etc/grafana/provisioning/datasources/prometheus.yml

yaml
apiVersion: 1

datasources:
  - uid: Prometheus
    name: Prometheus
    type: prometheus
    access: proxy           # 浏览器请求 Grafana,Grafana 后端去查 Prometheus
    url: http://127.0.0.1:9090
    isDefault: true
    editable: true

手工创建数据源时,页面路径:Connections → Data sources → Add data source → Prometheus(中文:连接 → 数据源 → 添加数据源 → Prometheus)

操作步骤:

  1. 进入 Connections → Data sources,点击 Add data source
  2. 选择 Prometheus
  3. 填写数据源名称、Prometheus server URL、认证方式和 Scrape interval
  4. 点击 Save & test

关键字段:

字段说明
NamePrometheus数据源名称,Dashboard 导入时用来映射
Defaultenabled作为默认数据源
Prometheus server URLhttp://127.0.0.1:9090Grafana 服务端访问 Prometheus 的地址
AuthenticationNo Authentication实验环境 Prometheus 未开启认证
Scrape interval15s和 Prometheus 抓取间隔一致

Grafana Prometheus 数据源字段

保存后进入 Explore(中文:探索)选 Prometheus 数据源,执行 sum by (job) (up) 有结果,说明数据源配置成功。

Save & test 失败时,在 mon01 上确认:

bash
# Grafana 服务端能否访问到 Prometheus
curl -s http://127.0.0.1:9090/-/ready

# 通过 Grafana API 看当前数据源列表
curl -s -u admin:admin http://127.0.0.1:3000/api/datasources

浏览器能访问 http://192.168.10.11:9090 不代表 http://127.0.0.1:9090 一定能通——两者网络视角完全不同。

导入 Linux 节点大屏

实验 Dashboard 文件 grafana-linux-node-overview-lab.json 包含几个基础面板:

面板类型用到的 PromQL
UP 主机数Statsum(up{job="node"})
CPU 使用率Time series按 instance 聚合的 idle CPU 反算
Node Exporter 状态Tableup{job="node"} 按 hostname 展示
内存使用率Time seriesMemAvailable / MemTotal

导入路径:Dashboards → New → Import(中文:仪表盘 → 新建 → 导入)

操作步骤:

  1. 进入 Dashboards,点击 New,选择 Import
  2. 上传或粘贴 Dashboard JSON
  3. DS_PROMETHEUS 下拉框选当前 Grafana 里的 Prometheus 数据源
  4. 点击 Import
字段说明
NameLinux Node Overview Lab导入后的看板名称
FolderDashboards看板保存目录
DS_PROMETHEUSPrometheus把 JSON 模板里的数据源变量映射到真实数据源

Grafana 导入 Dashboard 数据源映射

导入后进入看板,时间范围选最近 30 分钟。UP 主机数显示 3,CPU 和内存面板有 mon01db01cache01 的数据,说明数据源映射和 PromQL 都能正常工作。

Grafana Linux 节点大屏真实数据

面板 PromQL 配置

排查或修改看板时,经常要打开面板编辑器确认 PromQL、Legend 和面板配置。以 CPU 面板为例,编辑路径:Dashboards → Linux Node Overview Lab → CPU 使用率 → Panel menu → Edit(中文:仪表盘 → Linux Node Overview Lab → CPU 使用率 → 面板菜单 → 编辑)

操作步骤:

  1. 打开 Linux Node Overview Lab,CPU 面板标题处打开面板菜单
  2. 点击 Edit 进入面板编辑器
  3. Queries 区域确认数据源是 Prometheus,切到 Code 模式
  4. 右侧面板配置里确认标题、单位(Percent)和图例
字段说明
VisualizationTime seriesCPU 合适看趋势
Data sourcePrometheus查询 Prometheus
QueryCPU 使用率 PromQLinstance 聚合
Legend{{instance}} CPU图例保留实例地址
UnitPercent按百分比展示

CPU 面板使用的表达式:

promql
100 - (
  avg by (instance) (
    rate(node_cpu_seconds_total{job="node",mode="idle"}[5m])
  ) * 100
)

Grafana CPU 面板 PromQL 配置

验证:编辑器上方预览区能看到三台实例的曲线,保存后回到看板仍能显示。

面板没数据时,Query inspector 可以看 Grafana 发给 Prometheus 的请求和返回错误。排查按这几个点依次过:

检查点看什么
Data source是不是选了 Prometheus
PromQL指标名、标签、聚合维度对不对
时间范围是否覆盖到有数据的时间段
Legend是否保留了定位需要的 instance/hostname
UnitCPU 和内存用 Percent,流量用 bytes/sec

CPU 面板如果一台机器出了几十条线——说明没做 avg by (instance),每个 CPU 核心各出一条线。磁盘面板出现很多奇怪挂载点——没有过滤 tmpfsoverlay

看板组织

按对象拆看板比按技术拆更自然:

看板关注内容
Linux 主机CPU、内存、磁盘、网络、负载
Prometheus 自身target 数、抓取耗时、规则计算、TSDB 状态
MySQL连接数、QPS、慢查询、锁等待、复制
Redis连接数、内存、命中率、淘汰、慢命令
Nginx活跃连接、请求量、stub_status 可用性
业务服务请求量、错误率、延迟、队列、下游依赖

主机看板能说明资源状态,但接口超时、数据库慢、缓存命中率下降这些问题,通常还要配合服务指标和日志一起来看。

常见问题

现象常见原因先看什么
数据源测试失败URL 写错、Grafana 到 Prometheus 不通在 Grafana 机器上 curl http://127.0.0.1:9090/-/ready
导入后看板空白DS_PROMETHEUS 没映射回到导入页或 JSON 里看数据源变量
Explore 有数据,面板没数据面板 PromQL、变量或时间范围不对打开面板编辑器看查询预览
某台机器没数据对应 target 不在 UP 或标签没匹配up{instance="..."} 和 Targets 页面
CPU 曲线太多没按 instance 聚合avg by (instance)
单位显示奇怪Panel unit 没设对Percent、bytes/sec、seconds 按指标类型选

Grafana 是展示层,Prometheus 才是指标来源。看板排查时把 PromQL、数据源、Prometheus Targets 和 exporter 状态放在一起看。