1、prometheus基础理论
监控概论
本章要点:监控分类、指标指标、监控类型、指标类型、原理说明看看
来源:豆包ai,纳米ai,prometheus监控实战一书
监控系统的核心是通过多样化手段采集数据、存储分析、可视化展示并及时告警,保障服务可靠性,需内置于开发部署全流程,具备自动化和自服务能力。
核心定位与目标
- 核心价值:提前发现系统故障、快速定位问题,降低平均修复时间,提升站点可靠性(需结合平均无故障时间衡量)。
- 监控重点:优先监控业务事务的内容或速率,而非仅关注底层服务器运行时间,兼顾表层可用性与内在正确性。
- 运维核心技能:故障管理(SRE 核心,提前扼杀故障)、变更管理、资源管理。
监控分类与手段
-
监控分类
- 按特性分:事后监控、机械式监控(仅 CPU / 内存 / 磁盘)、静态监控(固定阈值)等,不推荐低频(10-20 分钟 / 次)监控,高频监控可获细颗粒度数据。
- 按方式分:黑盒监控(外部探针刺探状态)、白盒监控(利用应用内部接口采集数据)。
-
核心监控手段
监控类型 工作原理 适用场景 技术案例/协议 探针 从外部探测应用状态,通过模拟请求(如ICMP、端口响应)验证服务可用性,不侵入应用内部。 第三方应用监控、黑盒测试、网络设备健康检查,尤其适合无权限修改代码的场景。 内省 应用内置检测逻辑,主动暴露运行时状态(如性能指标、事务详情、错误日志),通过API或接口输出数据。 微服务、自研应用监控,需深度分析内部状态(如线程池、缓存命中率)。支持实时诊断与精细化性能优化。 • Spring Boot Actuator • JMX(Java管理扩展) • Prometheus客户端库 代理程序 在主机或容器内部署轻量级代理,定期采集系统内核(CPU/内存)或应用指标(如Redis的 info接口)。主机级资源监控、数据库/中间件性能采集、云环境基础设施监控。需安装代理但无需修改应用代码。 • Node Exporter(主机指标) • Redis Exporter • Zabbix Agent 特殊场景 通过标准协议(如SNMP)获取网络设备状态信息,或解析设备日志(如交换机流量、防火墙告警)。 网络设备(路由器、交换机)、安全设备(防火墙)监控,以及工业控制设备等专用硬件。 • SNMP协议 • Syslog日志分析 • NetFlow流量监控 - 补充说明
- 互补性:实际监控系统常组合使用多种手段。例如:
- 探针+内省:Kubernetes中同时使用Liveness探针(外部检查)和应用内省接口(如/health)
- 代理+SNMP:Zabbix通过Agent监控主机,通过SNMP监控网络设备
- 数据粒度:
- 探针:仅验证“是否响应”
- 内省/代理:可获取详细指标(如QPS、错误率、内存细节)
- 部署影响:探针与SNMP无需侵入应用,代理需安装程序,内省需应用代码支持。
- 互补性:实际监控系统常组合使用多种手段。例如:
- 补充说明
监控核心机制
- 数据采集模式
- 拉取:服务端主动提取客户端指标数据(如访问指标端点)。
- 推送:客户端主动向监控系统发送事件数据。
- 采集特性:离散性持续采集,按固定频率收集海量指标(单主机可上百个)。
- 指标类型
- 测量型:上下波动的快照数据(如 CPU 使用率、网站在线人数)。
- 计数型:仅增不减(可重置),如系统运行时间、订单量。
- 直方图:展示数据频率分布(如应用延时可视化)。
关键监控方法论
-
USE 方法(主机级监控)
-
资源清单梳理
- 核心监控资源:CPU、内存、磁盘、网络接口、进程队列。
- 梳理原则:覆盖主机所有关键硬件及系统组件,避免遗漏核心资源。
-
三大维度监控配置
监控维度 定义 实操指标 阈值参考(示例) 使用率 资源忙时平均占比(百分比) CPU 使用率、内存使用率、磁盘 IO 使用率、网络带宽使用率 CPU 持续 5 分钟≥85%、内存持续 5 分钟≥90% 饱和度 资源排队任务量 CPU 等待进程数、磁盘 IO 队列长度、内存 Swap 使用量 CPU 等待进程数≥5、Swap 使用量≥1GB 错误数 资源异常事件计数 磁盘读写错误数、网络丢包数、端口连接失败数 5 分钟内错误数≥3 次 -
数据采集与分析
- 采集频率:每 10-30 秒采集 1 次,确保捕捉瞬时峰值。
- 分析方式:结合方差、中位数,避免单一平均值掩盖异常(如 CPU 瞬时 100% 被平均后忽略)。
-
Google 四个黄金法则(应用 / 用户级监控)
-
核心指标定义与采集
指标类型 核心含义 实操采集项 数据来源 延迟 服务请求耗时 接口响应时间、数据库查询耗时、页面加载时间 应用日志、API 网关、前端埋点 流量 系统访问压力 每秒 HTTP 请求数(QPS)、数据库事务数、消息队列吞吐量 服务器日志、中间件监控接口 错误 请求失败情况 5xx 错误码占比、无效响应内容数、超时请求数(≥30 秒) 反向代理日志、应用异常日志 饱和度 应用资源受限程度 线程池占用率、数据库连接池使用率、缓存命中率 应用内置监控接口、中间件状态查询 -
阈值设定与告警配置
- 延迟:P95 延迟(95% 请求的耗时)持续 3 分钟≥500ms 触发告警。
- 流量:流量突增 / 突降超过近 1 小时均值的 50%,触发告警。
- 错误:错误率持续 5 分钟≥1%,或单分钟超时请求数≥10 次。
- 饱和度:线程池占用率持续 3 分钟≥80%、缓存命中率持续 5 分钟≤70%。
-
业务关联优化
- 指标关联:将应用指标与业务场景绑定(如 “支付接口延迟” 关联 “订单成交率”)。
- 优先级划分:核心业务(支付、登录)告警级别高于非核心业务(数据统计)。
-
-
通用落地注意事项
- 告警策略:先软状态(异常持续 1-3 分钟),再转硬状态告警,减少误报。
- 通知媒介:核心告警优先短信 / 钉钉,非核心告警用邮箱,支持告警升级(1 小时未处理通知上级)。
- 自动化适配:通过自动发现功能,新增应用 / 主机时自动接入监控,无需手动配置。
-
监控系统核心组件
-
数据存储
- 核心需求:存储时间序列数据(按时间生成的指标样本),需支持高并发写入。
- 主流方案:优先时序数据库(TSDB,NoSQL 类,性能优),小规模场景可选用 Zabbix + 关系型数据库(需优化性能)。
- 关键操作:数据聚合(含方差、百分位数等,避免异常值被平均掩盖)。
-
可视化展示
- 工具特性:需支持柱状图、线状图等直观呈现,Grafana 为常用工具,可对接 Prometheus、Zabbix 等数十种数据源。
- 原生方案:Zabbix 内置 Web 界面,Prometheus 内置 PromQL 查询但图形效果较差。
-
告警系统
- 核心逻辑:指标超阈值后,先进入软状态,持续异常则转为硬状态并告警,避免误报。
- 扩展功能:支持告警升级(未解决时逐级通知更高层级人员)。
- 通知媒介:邮箱、钉钉、微信、短信等。
-
监控系统核心组件对比表
组件类型 代表工具 / 方案 核心特性 优势 局限性 适用场景 数据采集 监控代理程序 部署于主机 / 应用,主动采集内核或应用指标(如 CPU、Redis info 数据) 数据精准,支持细颗粒度采集 部分现代应用可能需额外适配 主机、常规应用监控 探针(黑盒监控) 外部探针刺探,如 ICMP 检查、端口响应检测 无需侵入应用,适配第三方应用 仅能获取表层状态,无内部数据 第三方应用、网络可用性监控 SNMP 协议 传统网络设备接口,暴露设备内部工作状态 适配多数网络设备(交换机等) 功能粗陋,数据维度有限 传统网络设备监控 数据存储 时序数据库(TSDB) 非关系型数据库,支持高并发写入,按追加方式存储时间序列数据 性能优异,适配大规模监控场景 学习成本略高 分布式、微服务架构,大规模系统 关系型数据库(如 MySQL) 传统存储方案,依赖结构化存储逻辑 兼容性强,部署成熟 高并发写入时易成瓶颈,需额外优化 小规模系统,Zabbix 配套使用 可视化展示 Grafana 支持数十种数据源,提供丰富图表(柱状图、线状图等),支持自定义面板 可视化效果好,适配多场景 需搭配数据源使用,无独立采集功能 各类监控系统的可视化需求 Zabbix Web 界面 内置界面,与 Zabbix 存储、采集深度集成 开箱即用,操作便捷 定制化能力较弱,图表样式单一 小规模 Zabbix 监控场景 Prometheus 原生界面 支持 PromQL 查询,直接对接自身存储 无需额外配置,查询灵活 图形效果差,可视化功能简陋 Prometheus 临时数据查询 告警系统 Zabbix 告警模块 支持软 / 硬状态判定,告警升级,多媒介通知 功能完善,成熟稳定 大规模场景下性能易受限 中小规模系统,需分级告警场景 Prometheus+Alertmanager 与 TSDB 深度协同,支持告警分组、抑制、路由 适配大规模分布式场景,灵活度高 配置相对复杂,需单独部署 Alertmanager 分布式、微服务架构,大规模监控
