入门教程 - Dashboard 设计与多数据源

知识库
知识库文档
/tech-stacks/grafana/tutorial/入门教程 - Dashboard 设计与多数据源.md

文档

Grafana 入门教程:Dashboard 设计与多数据源

1. Grafana 在可观测性中的位置

数据采集层:Prometheus / Telegraf / Filebeat
      ↓
存储层:Prometheus TSDB / Elasticsearch / InfluxDB
      ↓
可视化层:Grafana ← 你在这一层
      ↓
告警层:Grafana Alerting / Alertmanager

2. Dashboard 设计原则

RED 方法论(服务监控)

  • Rate:请求速率
  • Errors:错误率
  • Duration:延迟分布

USE 方法论(资源监控)

  • Utilization:资源利用率
  • Saturation:饱和度(排队长度)
  • Errors:错误数

黄金信号

  1. 延迟(Latency)
  2. 流量(Traffic)
  3. 错误(Errors)
  4. 饱和度(Saturation)

3. 模板变量

# 变量定义(Dashboard Settings → Variables)
# 名称: instance
# 类型: Query
# 查询: label_values(node_cpu_seconds_total, instance)

# 面板中使用
rate(node_cpu_seconds_total{instance=~"$instance"}[5m])

常用变量类型:

  • Query:从数据源动态获取值
  • Custom:手动定义静态列表
  • Constant:固定值(如环境名)
  • Interval:时间间隔

4. 多数据源混合查询

Grafana 支持在一个面板中混合多个数据源:

// 面板 A 用 Prometheus(应用指标)
// 面板 B 用 Elasticsearch(日志统计)
// 面板 C 用 MySQL(业务指标)

MySQL 数据源示例

SELECT
  UNIX_TIMESTAMP(created_at) as time,
  COUNT(*) as orders,
  SUM(amount) as revenue
FROM orders
WHERE created_at >= $__from AND created_at <= $__to
GROUP BY DATE(created_at)
ORDER BY time

5. Provisioning(基础设施即代码)

# datasources/prometheus.yaml
apiVersion: 1
datasources:
  - name: Prometheus
    type: prometheus
    url: http://prometheus:9090
    access: proxy
    isDefault: true

# dashboards/dashboard.yaml
apiVersion: 1
providers:
  - name: 'default'
    folder: ''
    type: file
    options:
      path: /etc/grafana/provisioning/dashboards

6. 思考题

  1. Grafana Dashboard 里 Stat / Gauge / Time-series 面板各自适合什么场景?
  2. 模板变量 $__rate_interval[5m] 有什么区别?
  3. 如何用 Grafana 监控业务指标(如注册用户数、订单量)?

信息

路径
/tech-stacks/grafana/tutorial/入门教程 - Dashboard 设计与多数据源.md
更新时间
2026/5/31