监控体系概述
一个完整的监控体系需要覆盖四个层次:基础设施监控、应用性能监控、业务指标监控和用户体验监控。Prometheus + Grafana + Alertmanager是目前最流行的开源监控方案组合。
Prometheus指标收集
架构原理
Prometheus采用拉模式(Pull)采集指标,每个被监控的目标暴露HTTP端点,Prometheus定期拉取数据。
核心概念
Metric类型: - Counter:只增不减的计数器,适合请求数、错误数 - Gauge:可增可减的度量,适合内存使用、连接数 - Histogram:分桶直方图,适合请求延迟分布 - Summary:分位数统计,类似Histogram但客户端计算
指标暴露
在应用中集成Prometheus客户端库:
from prometheus_client import Counter, Histogram, generate_latest
REQUEST_COUNT = Counter('http_requests_total', 'Total requests', ['method', 'endpoint'])
REQUEST_DURATION = Histogram('http_request_duration_seconds', 'Request duration', ['method'])
@app.route('/api/users')
def get_users():
REQUEST_COUNT.labels(method='GET', endpoint='/api/users').inc()
with REQUEST_DURATION.labels(method='GET').time():
return get_users_from_db()
Grafana可视化
数据源配置
Grafana支持Prometheus、InfluxDB、Elasticsearch等多种数据源。配置Prometheus数据源后即可创建仪表盘。
面板设计原则
- 黄金信号:延迟、流量、错误数、饱和度
- USE方法:使用率、饱和度、错误率(资源视角)
- RED方法:请求速率、错误数、持续时间(服务视角)
常用面板示例
系统概览面板:
CPU使用率: 100 - (avg by(instance)(rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)
内存使用率: (1 - node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) * 100
磁盘IO: rate(node_disk_io_time_seconds_total[5m])
网络流量: rate(node_network_receive_bytes_total[5m])
Alertmanager告警
告警规则配置
groups:
- name: server_alerts
rules:
- alert: HighCPUUsage
expr: 100 - (avg by(instance)(rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80
for: 5m
labels:
severity: warning
annotations:
summary: "实例 {{ $labels.instance }} CPU使用率超过80%"
description: "CPU使用率当前为 {{ $value }}%"
- alert: DiskSpaceLow
expr: (node_filesystem_avail_bytes / node_filesystem_size_bytes) < 0.1
for: 2m
labels:
severity: critical
annotations:
summary: "{{ $labels.instance }} 磁盘空间不足"
告警路由与通知
route:
receiver: 'team-ops'
routes:
- match:
severity: critical
receiver: 'team-ops-critical'
repeat_interval: 5m
receivers:
- name: 'team-ops-critical'
webhook_configs:
- url: 'https://hooks.example.com/alert'
告警管理最佳实践
- 减少告警噪音:避免过度告警,关注真正需要人工介入的事件
- 设置合理的告警级别:Warning(关注)和Critical(立即处理)
- 定义SLA/SLO:基于服务等级目标设置告警阈值
- 告警自愈:对常见问题配置自动化修复脚本
- 告警升级机制:长时间未处理逐级升级通知
实战架构
应用/服务器 → Exporter(节点指标) → Prometheus(存储+查询)
↓
Alertmanager → 通知(飞书/Slack/邮件)
↓
Grafana(可视化 + 告警管理)
完善的监控体系是保障系统稳定性的基础,能够在问题影响用户之前及时发现和处理。
