Monit v3.7.10 CPU使用率时段统计:如何替换平均值为最大值?
关于Monit v3.7.10 CPU使用率统计改用最大值的解决方案
核心结论
Monit v3.7.10没有内置配置项直接将时段统计从平均值改为最大值——这个版本的统计逻辑是硬编码的时段内数据平均,但可以通过两种方式实现你的需求:
1. 用自定义脚本替代内置CPU统计
自己写个shell脚本定期采集CPU使用率峰值,把结果存到临时文件,再让Monit监控这个文件的数值:
- 脚本示例(每分钟采集一次CPU使用率最大值,用
top实现):
#!/bin/bash # 采集1分钟内的CPU使用率最大值(计算非空闲占比) MAX_CPU=$(top -b -n 60 -d 1 | awk '/%Cpu/{print 100-$8}' | sort -nr | head -n1) echo $MAX_CPU > /var/run/monit_cpu_max
- 给脚本加执行权限:
chmod +x /usr/local/bin/cpu_max_collector.sh - 配置crontab每分钟跑一次:
* * * * * /usr/local/bin/cpu_max_collector.sh - 在Monit配置文件里加监控规则:
check file cpu_max with path /var/run/monit_cpu_max if content > 90 then alert
2. 升级Monit到更高版本(推荐)
Monit v3.7.10是2010年左右的老旧版本,不仅缺这类统计配置功能,还存在已知安全漏洞。升级到v5.x及以上的稳定版后:
- 可以通过自定义监控项结合事件队列配置,直接追踪CPU峰值
- 新版Web界面支持查看更细粒度的原始数据,排查峰值异常更方便
补充说明
如果必须保留v3.7.10,只能靠外部脚本采集峰值——这个版本的核心统计模块没开放修改统计方式的配置接口,没法通过改monitrc直接把平均值换成最大值。
内容的提问来源于stack exchange,提问作者GreenLantern22
相关产品推荐
相关产品推荐

