服务器监视资源的核心清单是CPU、内存、磁盘I/O、网络流量、系统负载和关键进程状态,外加日志和硬件健康度。 盯住这几样,服务器的小脾气基本都能提前发现,下面按实战排查的顺序,把这堆资源拆开聊透。
服务器监控看哪些指标才不白花钱
很多刚接手服务器的朋友,一上来把能装的监控图表全铺满屏幕,结果告警响个不停,真正出大事时反而找不到重点,搞清每个指标背后的物理意义,比多看十个面板管用。
CPU使用率和负载均值得分开看
CPU使用率反映的是“多忙”,负载均值反映的是“多挤”,你用top命令看到load average是三个数,分别对应1分钟、5分钟、15分钟,行业共识认为,当负载值长期超过物理核心数的70%,就该留意排队了,比如一台4核机器,负载飙到5以上,即便使用率只有六成,说明任务已经在排队,交互式应用会明显发飘,排查时先跑uptime看趋势,再用top -c揪出吃CPU的PID,这一步能过滤掉一半无关告警。
内存别被buff/cache骗了
free -m输出里那行buff/cache常被新手误读为“内存不够”,实际上Linux把空闲内存拿来当缓存,这是优点不是病,真正的危险信号是available值,如果剩几百MB,而si和so每秒都有交换分区读写,说明物理内存见底,应用开始频繁换页,数据库或Java应用遇到这情况,响应时间会断崖式下跌,监控工具里建议直接盯available,低于物理内存20%就触发预警,比盯总使用率真实得多。
磁盘空间和I/O等待是两个维度
磁盘满了我不用多说,df -h能救命,但比空间更隐蔽的是I/O延迟,iostat -x 1看那列await和%util,你想象一下流水线工人,手速再快,传送带不给货也是白搭,当%util长时间超过80%,磁盘队列已经堵死,这时候CPU再闲,业务该卡还是卡,要给数据库主机做监控,这块必须进重点名单,很多慢查询的元凶其实是存储层,不是SQL本身。
网络流量和TCP连接数藏着双向风险
带宽被打满会丢包,这谁都知道,但连接数异常比流量异常更早暴露问题。ss -s能一眼看到系统级连接统计,如果TIME_WAIT和CLOSE_WAIT堆积成百上千,基本能断定代码里有连接没释放,入站流量监控建议细化到网卡维度,用iftop按IP排序,攻击源和刷量机器人立刻现形,出站方向也别忽略,服务器被入侵后往外传数据,这种流量往往比正常业务带宽低得多,但特征很清晰。
linux服务器监控工具怎么选最省心
工具有三层:临时登上去敲命令,搭一个轻量方案长期盯,上全套商业或开源重武器,按你的场景选,别一上来就整大件。
命令行三件套解决八成临时排查
top或htop看实时CPU、内存、进程排行iostat和vmstat看磁盘和系统全局ss或netstat看端口、连接状态
这套组合拳适合告警响了、还没找到头绪时快速摸现状,操作路径就是SSH登录,一条条跑,最多两分钟内搞清楚“是谁在折腾机器”。
node_exporter加Prometheus适合长期盯
自己搭监控,首选Prometheus加node_exporter,node_exporter默认暴露几千个指标,从CPU熵值到网卡丢包计数全覆盖,Grafana上有很多现成的中文仪表盘模板,导入就能用,这套方案的好处是数据沉淀在本地,历史趋势能回溯,出问题后拉时间轴对比非常方便,缺点是要自己维护,适合已经有点Linux基础的人。
云厂商自带监控面板适合托管省事
简米云、酷番云、华为云的控制台里都有免费的基础监控,涵盖CPU、内存、磁盘、带宽,这部分数据采集自虚拟化层,对你来说是零维护成本,但要注意,云监控的磁盘使用率默认只能看到分区级别,inode耗尽这类细节往往观察不到,若图省事,直接把控制台的告警阈值调好,邮件短信推给值班群,也能覆盖大多数场景。
服务器cpu占用率高怎么排查才不抓瞎
这是后台私信里被问烂的问题,我给出固定排查链路,你按步走,基本十分钟定位。
第一步:锁死元凶进程
执行top -c,按大写P让CPU使用率降序排列,重点关注Java、PHP、Nginx、MySQL这类服务进程,如果有个进程名你都认不出来,先ls -l /proc/PID/exe看它的实际执行路径,路径在/tmp下的基本没好事。
第二步:区分是“忙”还是“卡”
- 用户态CPU占比高,说明业务确实在运算,考虑加机器或优化代码
- 系统态CPU占比高,多半在频繁切换上下文或处理中断,检查内核参数或驱动
- 等待I/O高,CPU在等数据,把矛头转向磁盘和存储网络
用top进去按大写H,可以查看线程级别的消耗,Java应用此时最好jstack PID > threaddump.txt导一份线程快照,结合jstat -gcutil看GC频率,往往能发现频繁Full GC把CPU拖死。
第三步:核对监控曲线找规律
如果监控系统里CPU只在高点时有脉冲,大概率是定时任务撞车,把crontab列表拉出来,看看凌晨3点是不是同时跑着数据备份、日志清理和统计脚本,错峰执行比单纯提高机器配置划算得多。
监控数据不是存着看的,预警规则这样定更合理
收集一堆指标却不设阈值,等于白监控,阈值定得太灵敏,一天要被告警轰炸几十次;定得太宽松,出事时它还在装睡,建议按资源特性区别对待。
CPU和内存用“持续超过”来防抖动
单次冲到90%可能只是请求尖峰,隔两秒就回落,把告警规则设为连续3个采集周期都超过85%再触发,能过滤掉大量无效报警,Prometheus的for子句就是干这个的,内存同理,available连续五分钟低于一个绝对值就报警,别用百分比,小内存机和大内存机体感完全不同。
磁盘空间用“预测型”代替“达到型”
磁盘空间是线性增长的,等到了90%才报警,往往来不及清,用监控系统里的预测函数,按过去7天的增长率推算剩余可用时间,剩72小时时提示一次,剩24小时时再拉一次紧急告警,这套玩法在Zabbix里叫“趋势预测”,在Prometheus里用predict_linear函数也能实现,这样遇见大日志文件抢占磁盘时,你有充足的窗口去处理。
网络监控重质量,不重速度
带宽使用率突破阈值只能说明流量大,不能说明业务慢,真正的服务质量指标是TCP重传率和建连延迟,ping网关的延迟只能证明链路通不通,HTTP接口层面的响应时间量测才贴近用户感受,用Blackbox Exporter或者云厂商的拨测网络,从外部视角盯你的端口和URL,比只看网卡流量有意义得多。
Q&A服务器监控常见问题
问:云服务器监控和物理服务器监控有哪些区别?
云服务器自带的监控面板能看到虚拟化层面的CPU和内存使用率,但看不到物理机的CPU温度、风扇转速、硬盘SMART健康值,物理服务器监控需要额外的带外管理系统,比如IPMI或iDRAC,才能读到这些硬件级指标,云服务器上安装操作系统内监控工具,读数会比云厂商控制台略低一点,因为控制台统计的是宿主机视角,但差距很小,不影响判断。
问:客户追问服务器流量监控哪家服务商自带报表更好用,怎么答复?
国内主流云厂商的控制台都提供免费的带宽流量监控,数据保留周期一般是1个月到3个月不等,足以应对日常查看,如果需要按域名或IP维度拆分流量,云厂商的流量分析产品要额外付费,或者自己搭Prometheus抓NetFlow数据,具体选哪家,看客户现有云资源在哪就首选哪家,跨云监控配置复杂,运维成本反而上升。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/782413.html


