Grafana:查询、展示与关联分析¶
Grafana 连接指标、日志和 Trace 数据源,提供 Dashboard、Explore、告警和跨信号跳转。Grafana 通常不保存主要遥测数据;页面无数据时要沿数据源继续检查,不能只重启 Grafana。
数据源规划¶
| 信号 | 常见数据源 |
|---|---|
| Metrics | Prometheus、VictoriaMetrics |
| Logs | Loki、Elasticsearch/OpenSearch |
| Traces | Tempo、Jaeger 等 |
数据源配置包括 URL、认证、TLS、租户和默认查询选项。生产凭据放受控 Secret,通过 provisioning 或自动化管理,不手工散落在多个实例中。
Dashboard 结构¶
一个服务 Dashboard 建议从用户到资源分层:
服务信息:环境、版本、负责人、最近发布
RED:请求率、错误率、P50/P95/P99
依赖:数据库、缓存、消息、HTTP 下游
运行时:JVM/进程、线程池、连接池
容器/主机:CPU、内存、重启、网络、磁盘
下钻:日志、Trace、Runbook
先放结论型面板,再放定位细节。几十张无层次折线图会降低排障速度。
变量与查询¶
变量用于选择环境、集群、Namespace、服务和实例。变量查询要限制范围,避免加载数十万 label values。面板查询应:
- 使用合适的
$__rate_interval和时间窗口。 - 聚合前先过滤服务/环境。
- 显示单位、Legend、阈值和无数据含义。
- 区分 0、No data、查询失败。
- 对昂贵公共查询使用 Recording Rule。
关联日志和 Trace¶
通过 Data links、Derived fields 和 Exemplars,可从高延迟指标跳到同时间 Trace,再按 trace_id 找日志。所有后端必须使用一致服务名、环境、版本和实例标签,否则跳转只是形式存在。
Dashboard 即代码¶
Dashboard、Folder、数据源和告警应进入 Git,通过 provisioning/Terraform 等发布。至少记录:
- Dashboard UID 和负责人。
- 适用数据源及必需指标。
- 变量与默认时间范围。
- 变更原因、评审和回滚。
- 生产查看、编辑和管理权限。
Grafana Alerting¶
Grafana Alerting 可跨多个数据源创建规则和通知策略。若同时使用 Prometheus/vmalert 规则,应明确权威来源,避免同一条件重复告警。告警规则不要依赖只在浏览器里存在的临时变量。
常见问题¶
| 现象 | 检查方向 |
|---|---|
| 整个数据源无数据 | 数据源 URL、DNS、TLS、认证、租户和后端健康 |
| 只有某服务无数据 | 标签名称、变量值、采集 Target、时间范围 |
| Dashboard 很慢 | 查询范围、正则、高基数、面板数量、后端并发 |
| 用户能看到不该看的数据 | Folder 权限不等于后端租户隔离,检查数据源权限 |
| 告警与面板结果不同 | 数据源、时间窗口、Reduce/Expression 和评估间隔 |