Grafana + Prometheus 监控完整指南
监控是现代系统运维的核心组件。Grafana 和 Prometheus 是当前最流行的开源监控解决方案组合,提供强大的数据收集、存储、可视化和告警功能。
目录
- 监控基础概念
- Prometheus 简介
- Grafana 简介
- 系统架构
- 安装 Prometheus
- 安装 Node Exporter
- 配置 Prometheus
- 安装 Grafana
- 创建监控面板
- 告警配置
- 多节点监控
- 监控指标详解
- 高级配置
- 最佳实践
- 故障排除
- 总结
监控基础概念
为什么需要监控
- 提前发现问题:在用户注意到之前发现系统异常
- 性能优化:识别性能瓶颈,优化系统资源使用
- 容量规划:基于历史数据预测资源需求
- 故障分析:快速定位问题根本原因
- SLA 合规:确保服务满足服务水平协议
监控的四个黄金信号
- 延迟(Latency):请求响应时间
- 流量(Traffic):系统负载情况
- 错误(Errors):错误率和失败率
- 饱和度(Saturation):资源使用情况(CPU、内存、磁盘)
监控层级
基础设施层(Infrastructure)
↓
应用层(Application)
↓
业务层(Business)
Prometheus 简介
什么是 Prometheus
Prometheus 是由 SoundCloud 开发的开源监控系统,具有以下特点:
- 多维度数据模型:时间序列数据通过指标名和键值对标识
- 灵活的查询语言:PromQL 支持复杂的查询和聚合
- 不依赖分布式存储:单个服务器节点即可工作
- 时间序列收集:通过 HTTP 拉取模型进行数据收集
- 支持多种编程语言:提供客户端库支持多种语言
Prometheus 核心组件
| 组件 | 功能 |
|---|---|
| Prometheus Server | 核心服务,负责数据收集和存储 |
| Exporters | 导出器,暴露指标数据的工具 |
| Service Discovery | 服务发现,自动发现监控目标 |
| Alertmanager | 告警管理器,处理和路由告警 |
| Pushgateway | 推送网关,支持短期作业推送指标 |
| Client Libraries | 客户端库,多语言支持 |
数据模型
指标格式:<metric name>{<label name>=<label value>, ...}
示例:
http_requests_total{method="GET", endpoint="/api/users", status="200"}
Grafana 简介
什么是 Grafana
Grafana 是开源的可视化和监控平台,支持多种数据源:
- 丰富的可视化选项:图表、表格、地图、仪表盘等
- 多数据源支持:Prometheus、InfluxDB、Elasticsearch 等
- 告警功能:内置告警引擎,支持多种通知渠道
- 用户权限管理:细粒度的访问控制
- 插件生态:丰富的插件和面板