从用户体验定义指标#
监控不是把所有指标做成图,而是回答“用户是否受影响、影响在哪里、现在要做什么”。服务层用 RED:请求速率、错误率、耗时;基础设施层用 USE:利用率、饱和度、错误。
PromQL 与告警#
promql
# 5 分钟请求速率
sum by (service) (rate(http_requests_total[5m]))
# 5xx 错误率
sum(rate(http_requests_total{status=~"5.."}[5m]))
/
sum(rate(http_requests_total[5m]))
# P95 延迟
histogram_quantile(0.95,
sum by (le, service) (rate(http_request_duration_seconds_bucket[5m]))
)
yaml
groups:
- name: web-slo
rules:
- alert: WebHighErrorRate
expr: job:http_5xx_ratio:rate5m > 0.05
for: 10m
labels:
severity: page
annotations:
summary: "{{ $labels.service }} 5xx 错误率持续高于 5%"
runbook: "https://runbook.example.com/web-high-error-rate"
Grafana 信息架构#
| 第一屏 | 下钻页 | 目的 |
|---|---|---|
| SLO、流量、错误、P95 | 按服务/路由拆分 | 判断用户影响 |
| CPU、内存、磁盘、连接池 | 按实例拆分 | 定位资源瓶颈 |
| 最近发布与告警标记 | 日志与 Trace 链接 | 关联变更 |
- 面板单位和时区明确
- 阈值颜色有业务含义
- 告警包含负责人和 Runbook
- Dashboard JSON 进入版本控制
Grafana 的 Dashboard best practices 建议用变量减少重复仪表盘,并让告警指向可下钻页面。
讨论区 21
分享你的经验、补充或不同观点。支持 Markdown 基础语法。