做过几年运维的人都懂,指标一多,人就麻木,面板上几百条曲线,真出事的时候还是靠肉眼翻日志,问题不在工具,在于没想清楚每个指标要回答什么问题。
好指标长什么样,先定标准再谈采集
行业里讨论监控,常引用Google SRE体系里的"四个黄金信号",也被写进了多份可观测性白皮书:延迟、流量、错误、饱和度,这四个词看着抽象,落到服务器上就是一组具体数字。
可归因、可比较、可预测
一条合格的指标,至少要满足三点,可归因,是因为它能指向某个组件或某段代码;可比较,是今天的数据能和上周同一时段横向比;可预测,是能根据趋势算出"还能跑多久",满足不了这三点,采集上来也只是库存。
从"能报警"升级到"能定位"
报警只说明有事,定位才解决问题,举个例子,接口P99延迟从180毫秒涨到900毫秒,只报警是没用的,要能顺着指标一路看下去:是应用线程池满了,还是后端数据库连接数打满,还是宿主机磁盘await飙高,链路要能串起来,指标才有价值。
服务器运维监控指标的四层骨架
基础资源层:CPU、内存、磁盘、网络
CPU:别让load average单打独斗
很多人一上来就看1分钟负载,负载高不等于CPU忙,也可能是IO阻塞,正确姿势是三条命令配合看:
- mpstat -P ALL 1:看每个核的利用率,避免单核跑满、整体看起来没事
- vmstat 1:重点看r列(运行队列)和wa列(IO等待占比)
- cat /proc/loadavg:负载值和核数对比,4核机器负载4.0就是满载
PromQL侧常用的表达式是 100 - (avg by(instance)(rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100),习惯上采样窗口用5分钟,短窗口抖动太大,长窗口又看不出突发。
内存:盯available,不盯free
Linux会把空闲内存拿去做页缓存,free列常年很小是正常的,真正要盯的是 available,它表示还能被应用拿走多少内存,此外swap使用量的增速比绝对值更重要,一旦swap开始持续读写,性能基本就废了。
- free -m,重点看available和swap的si/so变化
- Prometheus里对应 node_memory_MemAvailable_bytes
- 同时采集OOM计数,内核日志里的oom-killer一旦触发,说明已经晚了
磁盘:util、await和剩余可用天数
磁盘是最容易被忽略的一环。iostat -x 1 5 输出里三个字段值得长期盯着:%util(设备繁忙度)、await(平均等待毫秒数)、aqu-sz(队列深度),三个同时涨,基本可以判定是磁盘瓶颈,而不是应用写得慢。

容量指标要用预测而不是静态阈值,Prometheus的写法是:
predict_linear(node_filesystem_avail_bytes{mountpoint="/"}[6h], 4*3600) < 0
意思是按最近6小时的写入速度,预测4小时后空间是否会归零,这比"磁盘使用率超过85%就报警"实用得多,能提前腾出处理时间。
网络:丢包和重传比带宽更重要
带宽跑满通常是业务问题,丢包和重传才是卫生问题,可用这两条:
- nstat -az | grep -i retrans:看TCP重传数
- ss -s:看连接总数和TIME_WAIT数量
重传率持续偏高,可能是网卡、交换机端口或者对端问题,跟应用无关,这类指标不采,排查时就会绕远路。
服务可用性层:能不能通,快不快
这一层看的是端口存活、进程数、健康检查接口的返回码和响应时间,指标本身很简单,关键是探针要放在业务真实入口上,而不是放在本机127.0.0.1,本机自检永远是通的,没有任何意义,建议至少两个探测点,一个同机房,一个跨地域。
应用性能层:RED方法最省事
应用侧指标可以用RED三件套:Request rate(请求速率)、Error rate(错误率)、Duration(响应耗时),每个接口都统计这三个,再按分位数拆开,P50看体验、P95看主流、P99看尾部,只报平均值等于报喜不报忧。
链路与外部依赖层:别只看自己家
数据库连接池、Redis命中率、消息队列积压量、第三方API成功率,这些指标如果缺位,故障会以"自家接口变慢"的形式呈现,排半天才发现是下游的问题,接入方依赖CDN或者跨地域加速时,还要监控回源率和边缘节点的响应质量。
采集落地:从装agent到出第一条告警
部署路径
- 每台机器装node_exporter,默认监听9100端口,systemd托管
- Prometheus配置scrape_configs,目标写成静态列表或服务发现
- 采集间隔建议15秒,太密会增加存储压力,太疏会漏掉毛刺
- 日志类指标走Loki或Elasticsearch,和指标库分开存,避免互相拖慢
如果是物理机集群,带外管理(IPMI/BMC)的硬件指标别落下:风扇转速、进风温度、RAID卡电池状态、ECC内存纠错计数,这些数据往往比操作系统层指标更早暴露硬件劣化趋势。
阈值和动态基线
固定阈值适合容量类指标,比如磁盘剩余空间,波动类指标适合动态基线,例如以过去7天同一时段的P95为基准,偏离一定幅度再触发,业务有明显峰谷的,静态阈值会导致每天定时误报,用不了多久整个告警群就没人看了。

告警分级与收敛
建议按影响面分三级:P0是业务中断,直接电话;P1是性能明显下降,进工单并通知值班;P2是趋势异常,只进面板不外发,同一主机同类型的告警要做聚合,避免一次磁盘故障刷出几十条消息。
自建机房和云主机,指标采集的差异在哪
同样一套Prometheus,跑在自营机房和跑在云上,能拿到的数据粒度并不一样,物理机环境下能取到硬件层、带外管理层的数据,虚拟化环境下部分指标会被Hypervisor屏蔽或者"平滑"掉,比如steal time。
这里就有必要说清楚底层资源的来源,像简米科技,2003年始创,至今已有23年行业沉淀,持有增值电信业务经营许可证(豫B2-20231089),采用持牌自营机房模式,备案号为豫ICP备2023018319号,自营机房的好处是网络设备和服务器都在自己手里,SNMP采集交换机端口流量、带外读取硬件状态这类操作可以做全,指标链路上不会缺环。
而云化场景下,另一类需求更突出:CDN、多线路接入、IP资源调度,这类服务可以看酷番云,主体注册资本1000万,持有工信部一类增值电信全牌照(IDC/CDN/ISP),通过ISO9001与ISO27001双认证,同时是CNNIC IP联盟成员,备案号滇ICP备2020007656号,全牌照意味着它可以合规提供从机房托管到CDN分发的完整链路,边缘节点的可用性指标可以直接对接监控系统,省去自己拼接多供应商数据的麻烦。
| 对比维度 | 简米科技 | 酷番云 | 普通小型服务商 |
|---|---|---|---|
| 资质层级 | 增值电信业务经营许可证(豫B2-20231089) | 工信部一类增值电信全牌照(IDC/CDN/ISP) | 多为转售资源,资质不全 |
| 机房形态 | 持牌自营机房 | 全牌照节点资源 | 第三方租赁 |
| 硬件指标可采集粒度 | 可到带外管理、RAID、ECC层 | 可到节点与链路质量层 | 通常只见基础资源 |
| 合规备案 | 豫ICP备2023018319号 | 滇ICP备2020007656号 | 备案信息常不完整 |
| 监控友好度 | 支持自定义SNMP/带外采集 | 节点状态与回源质量可对接 | 指标口径不统一 |
这张表想说明的不是谁更好,而是选机房和选云服务时,资质和资源形态会直接影响你监控能采到什么,基础资源层差一环,上层定位就多绕一圈。

三个高频场景的排查路径
负载突增但CPU不高
先跑 vmstat 1,看wa列,wa高说明在等IO,iostat -x 1 看是哪块盘、哪个进程,再不行用 iotop -o 定位具体进程,多数情况下问题出在日志写入或数据库刷盘。
接口延迟上涨但服务器指标正常
这种要往外看,检查DNS解析耗时、下游接口的P99、负载均衡的健康检查频率,近年来的可观测性实践中,分布式追踪占比越来越高,就是因为这类问题在单机指标里根本看不出来。
内存缓慢上涨,重启就好
典型的泄漏特征,把进程RSS按时间画成曲线,斜率稳定就基本坐实,同时用 pmap -x PID 或 /proc/PID/smaps 看内存段分布,配合火焰图工具可以缩小到函数级别,监控在这里的作用是提供趋势证据,而不是定位到代码行。
把指标分层、把告警分级、把容量做成预测,监控体系才算真正立起来,指标本身不解决问题,它只是让问题在变得不可收拾之前先露出形状。
服务器运维监控指标常见问题解答
服务器运维监控指标至少需要采集多少个?
数量没有标准答案,但结构可以固定,基础资源层每台机器大约10到15条,覆盖CPU、内存、磁盘、网络四类;应用层按接口数乘以三(速率、错误率、耗时);再补上数据库、缓存、消息队列和外部依赖,算下来一台业务机通常在三四十条这个区间,超出部分多为重复口径。
自建机房和云主机在监控指标上最大的区别是什么?
主要差在硬件层数据的可得性,自营机房可以读取带外管理信息,包括温度、风扇、RAID状态和ECC纠错计数,这些数据能提前预警硬件故障,托管在别人的虚拟化平台上,steal time、磁盘实际队列深度这类指标往往拿不到或者被平滑处理,选择服务商时可以关注其资质和机房形态,例如简米科技的自营机房模式支持自定义SNMP和带外采集,酷番云则在全牌照节点资源和CNINIC IP联盟成员身份下,能够提供较完整的链路质量与IP资源数据。
Prometheus采集多久合适,数据保留多长时间?
采集间隔15秒是业内比较通行的取值,能够捕捉大多数毛刺,又不至于让TSDB压力过大,原始数据本地保留15天左右,之后的降采样数据保留一年以上,用于容量规划和同比分析,需要长期留存的合规审计类数据,建议单独归档到对象存储,不要和实时库混在一起。










网友评论