服务器、网站、Docker 容器和 MySQL 的监控指标接入 Prometheus 后,可以通过 Grafana 集中展示,方便日常巡检和故障排查。要让监控看板持续可用,除了配置数据源和导入 Dashboard,还需要调整指标单位、保存看板备份,并做好访问权限管理。
一、文档目标
本文档介绍 Grafana 数据源配置、Dashboard 导入、看板调整、备份和基础安全管理。
在本文的监控架构中,Prometheus 负责采集和存储指标,Grafana 负责查询与可视化展示。 出现看板无数据时,应先确认 Prometheus 是否已经采集到对应指标,再检查 Grafana 配置。
二、查看数据源
登录 Grafana,在左侧菜单中依次进入:
Connections → Data sources
在数据源列表中,检查是否已添加 Prometheus,并确认数据源名称和类型是否正确。存在多个 Prometheus 数据源时,应注意区分用途,避免看板引用错误的数据源。
三、配置 Prometheus 数据源
如果 Grafana 和 Prometheus 都直接运行在同一台服务器上,Prometheus 数据源的 URL 可以填写:
http://localhost:9090
此时由 Grafana 服务端访问本机 Prometheus,无需通过公网开放的 9090 端口获取数据。
如果使用 Docker 部署,不能仅凭“同一台服务器”就填写 localhost。 在 Grafana 容器内,localhost 指向 Grafana 容器自身。如果两个服务位于同一个 Docker 网络中,应填写 Prometheus 的服务名或可访问地址,例如:
http://prometheus:9090
其中,prometheus 需要与实际的 Docker Compose 服务名或网络别名一致。
填写完成后,点击 Save & test,确认数据源连接成功。
四、导入 Dashboard
进入 Grafana 的 Dashboards 页面,选择 New → Import。不同版本的菜单位置可能略有差异。
可以通过以下方式导入看板:
- 输入 Grafana.com 上的 Dashboard ID。
- 上传本地 Dashboard JSON 文件。
- 粘贴 Dashboard JSON 内容。
建议将本地 JSON 作为看板的主要备份和恢复材料,便于:
- 在无法访问外部网站时导入。
- 保存配置备份。
- 使用版本管理工具记录修改。
- 在服务器重装后快速恢复。
导入时,如果页面要求选择数据源,应将看板关联到已经配置好的 Prometheus 数据源。
五、当前已导入看板
本次部署已导入以下看板:
| 看板名称 | 用途 |
|---|---|
node-exporter-small-site |
查看服务器资源指标 |
web-nginx-blackbox |
查看网站探测与 Nginx 指标 |
docker-cadvisor-small-site |
查看 Docker 容器资源指标 |
mysql-exporter-small-site |
查看 MySQL 运行指标 |
1. 服务器资源看板
用于集中查看服务器 CPU、内存、磁盘和网络等资源使用情况。
2. 网站和 Nginx 看板
用于查看网站可用性、探测响应情况,以及 Nginx 连接等指标。具体展示内容取决于已接入的采集组件和面板查询配置。
3. Docker 容器看板
用于查看容器 CPU、内存和网络等资源指标,辅助定位资源占用异常的容器。
4. MySQL 看板
用于查看 MySQL 查询量、连接数等运行指标,辅助排查数据库负载变化。
六、看板调整建议
1. 时间范围
根据使用场景选择合适的时间范围:
| 使用场景 | 建议时间范围 |
|---|---|
| 日常巡检 | 最近 3 小时或 6 小时 |
| 故障排查 | 最近 15 分钟或 30 分钟 |
| 问题复盘 | 最近 24 小时或 7 天 |
查看较长时间范围的数据时,需要确认 Prometheus 的数据保留时间能够覆盖该时段。
2. 指标单位
面板单位应与 PromQL 查询结果一致:
| 指标 | 建议单位 | 注意事项 |
|---|---|---|
| CPU 使用率 | Percent | 区分查询结果是 0~1 还是 0~100 |
| 内存 | Bytes 或 Percent | 区分内存用量与使用率 |
| 磁盘使用率 | Percent | 如果展示容量,应使用 Bytes |
| 网络传输速率 | Bytes/sec,即 Bps | 不要与 bits/sec,即 bps 混淆 |
| 数据库每秒查询数 | 每秒次数或自定义 QPS | 查询应返回每秒速率 |
| 连接数 | None 或整数格式 | 通常不需要显示小数 |
3. 面板标题
面板标题应写清楚监控对象和指标,方便快速识别。例如:
Container CPU Usage:容器 CPU 使用率。MySQL Queries Per Second:MySQL 每秒查询数。Nginx Active Connections:Nginx 活跃连接数。
七、Dashboard 备份
建议保留以下 Dashboard JSON 文件:
deploy/node_exporter_dashboard.json
deploy/web_nginx_blackbox_dashboard.json
deploy/docker_cadvisor_dashboard.json
deploy/mysql_exporter_dashboard.json
备份主要用于:
- 恢复误删的看板。
- 迁移到新的 Grafana 实例。
- 方便多人维护。
- 在修改出现问题时回滚。
在 Grafana 页面中调整看板后,也需要重新导出 JSON 并更新备份。 只保留最初的导入文件,无法恢复后续修改。
Dashboard JSON 不包含完整的 Grafana 环境配置。数据源配置也应单独备份,相关密码和令牌应采用安全方式保存,避免明文提交到公开代码仓库。
八、Grafana 安全设置
上线前应完成以下检查:
-
默认管理员密码已修改。
-
匿名访问已关闭,或已按业务需求严格限制。
-
公网访问来源已限制。
-
通过域名访问时已启用 HTTPS。
-
Dashboard 和数据源配置已备份。
不建议将 Grafana 管理页面直接开放给所有公网用户。可以结合防火墙、访问来源白名单或受控的内网接入方式限制访问范围。
九、看板无数据排查
建议按以下顺序检查:
- Prometheus Targets 是否为 UP:确认对应采集目标可以正常抓取。
- Prometheus Query 是否有数据:直接查询面板使用的指标,判断数据是否已经进入 Prometheus。
- Grafana 数据源是否测试成功:确认 Grafana 可以连接 Prometheus。
- 面板 PromQL 和标签是否正确:检查指标名称、
job、instance等筛选条件。 - 时间范围是否合适:确认所选时段内存在数据,并检查查询窗口是否适合采集间隔。
如果 Prometheus 的 9090 端口可从服务器本机访问,可以执行:
curl "http://127.0.0.1:9090/api/v1/query?query=up"
返回结果中,status 为 success 表示查询执行成功;up 的值为 1 表示相应目标最近一次抓取成功,值为 0 表示抓取失败。
up 有数据不代表所有业务指标都正常。 如果看板仍然为空,应继续在 Prometheus 中执行对应面板的 PromQL,检查具体指标及标签是否存在。
十、总结
Grafana 日常管理需要同时关注展示效果、数据可验证性、备份恢复和访问权限。生产环境中,应保存 Dashboard JSON 与数据源配置,每次调整后及时更新备份;遇到无数据问题,则沿着“采集目标 → Prometheus 查询 → Grafana 数据源 → 面板配置”的顺序排查。
相关阅读:
-
广告合作
-
QQ群号:4114653











