接口上线第一天跑得好好的,第二天凌晨三点挂了,没人知道,直到客户投诉才发现——这种事你经历过几次?没有监控的API就是裸奔,出了问题只能被动救火。Prometheus加Grafana是目前最主流的监控方案,部署不复杂,效果立竿见影。
采集什么指标
监控不是越多越好,先盯住四个黄金指标:请求量(QPS)、错误率、响应时间(P95/P99)、资源利用率。QPS反映流量大小,错误率反映可用性,P95响应时间反映用户体验,资源利用率反映容量水位。这四个指标覆盖了API接口开发中最核心的健康度维度。Prometheus通过Pull模式采集数据,你的应用需要暴露/metrics端点。Java项目用Micrometer,PHP项目用promphp/client,Node.js用prom-client。以Node.js为例,暴露HTTP请求总量和响应时间直方图只需要十几行代码。
Grafana看板配置
Prometheus存的是原始数据,Grafana负责可视化。装好Grafana后,添加Prometheus数据源,然后建Dashboard。推荐分三个面板:第一个放QPS和错误率折线图,一眼看流量和异常;第二个放P95/P99响应时间,用百分位而不是平均值——平均值会掩盖长尾问题;第三个放CPU、内存、连接池使用率,看资源是否到瓶颈。面板配置好了记得设置刷新间隔,生产环境5秒刷新一次就够了。
告警规则怎么写
看板是被动的,告警才是主动的。在Prometheus里配置告警规则,比如:5分钟内错误率超过5%就告警,P95响应时间连续3分钟超过1秒就告警。Alertmanager负责把告警发出去,支持邮件、企业微信、钉钉、飞书等渠道。告警别配太敏感,否则天天收到告警反而会麻木。一个原则:收到了就必须处理,不处理的不配告警。两个实用建议:一是告警要带上下文信息,比如接口名、当前值、阈值,方便快速定位;二是分级——P0级别打电话、P1级别发消息、P2级别记录日志就行。
监控覆盖度自检
怎么判断监控做够了?问自己几个问题:接口挂了能不能5分钟内发现?慢了能不能知道慢在哪一步?流量突增能不能自动感知?如果答案都是“能“,说明监控体系基本到位了。监控是基础设施,早投入早受益。