服务器监控需分层分维度构建观察体系,核心是“看得见、判得准、反应快”:先采集CPU负载(结合核心数判断)、MemAvailable、磁盘IO延迟、网络端口存活等基础指标,再叠加应用层健康信号(如Swoole stats、MySQL主从延迟、HTTP健康接口),最后通过Prometheus+Grafana或ServerBee等工具实现告警与可视化闭环。

服务器运行状态监控不是只看一个指标,而是要分层、分维度建立一套能快速定位问题的观察体系。核心是“看得见、判得准、反应快”——先采集关键数据,再结合阈值和趋势判断异常,最后通过告警或可视化及时响应。
基础资源指标必须盯紧
这些是系统健康的底层信号,建议每分钟采集一次:
- CPU负载(Load Average):重点看1/5/15分钟三值,结合CPU核心数折算。比如4核机器,5分钟负载持续超过3.0(即75%),就要排查是计算密集还是IO阻塞;若负载高但CPU使用率低,大概率是磁盘或网络等待导致
- 内存可用量(MemAvailable):比“free”更准确,反映真正可分配给新进程的内存。低于总量20%需预警;Swap使用率超10%说明物理内存已吃紧
-
磁盘使用率与IO延迟:根分区超80%触发告警;用
看%util(设备忙时占比)和await(平均IO等待毫秒),持续>20ms说明磁盘成为瓶颈 -
网络连接与端口存活:用
ss -s查总连接数及状态分布;对关键服务端口(如80、3306)做定时telnet探测,失败立即通知
应用层状态不能只靠系统命令
Web服务、数据库、消息队列等组件有自己特有的健康信号:
宝塔面板11.3.0是一款针对Linux服务器设计的可视化管理工具,通过重构核心模块实现资源占用显著降低,尤其适合低配置服务器环境。它将复杂的命令行操作转化为直观的图形界面,帮助开发者快速完成网站部署、环境配置及日常运维工作,无需专业技术背景即可高效管理服务器。
-
Swoole类服务:调用
$server->stats()获取connection_num(当前连接)、worker_request_count(处理请求数)、tasking_num(待执行任务),暴露/status接口供监控程序轮询 -
HTTP服务:配置健康检查路径(如
/healthz),返回200且带简单JSON(含时间戳、版本、DB连通性);避免只返回静态内容 -
MySQL:查
SHOW GLOBAL STATUS中的Threads_connected、Slow_queries、Seconds_behind_master(主从延迟)
用工具把数据串起来
手工查命令只能应急,规模化运维必须依赖工具链:
-
轻量级自建方案:Prometheus + Grafana组合。Swoole服务加
prometheus/client_php库暴露/metrics;Prometheus定时抓取;Grafana配置面板展示QPS、错误率、P95响应时间 - 开箱即用型工具:ServerBee(Docker一键部署)、OpenFalcon(适合中大型集群)。它们内置CPU/内存/磁盘/进程视图,支持按标签分组、设置多条件报警(如“连续3次负载>3.0且内存可用
-
脚本兜底补充:写Shell或Python脚本定期执行
df、uptime、ps aux --sort=-%cpu | head -10,异常时发邮件或钉钉消息。关键是要有明确退出码和日志记录,方便事后追溯
告警不是越多越好
无效告警会让人麻木,有效告警必须满足三个条件:
-
可操作:告警信息里直接带排查命令,比如“磁盘超限”附上
du -sh /var/log/* | sort -hr | head -5 - 有分级:CPU瞬时飙高可能是正常波动,但持续15分钟>90%才升级为P1;连接数突增需结合QPS判断是否攻击
- 闭环验证:收到告警后手动确认,再检查监控图表是否同步更新。避免“告了但没真发生”或“发生了但没告”










