Monit是否可以使用条件来执行Sysfence风格的平均负载计算?

我开始在RHEL Linux机器上从Sysfence迁移到Monit,我想知道是否可以在Monit中创build下面的sysfence等价物。

系统configuration(部分)

例如,我们的sysfence.conf文件声明以下内容来检查加载平均条件。

rule "high load" { la1 >= 5.0 and { { la5 > 3.0 } or { la15 > 2.0 } } } run '/bin/high-load.sh' step 300 

监控configuration (试图模拟系统负载平均状况)

对于monitrc文件,我创build了以下通过configuration语法检查的语句,但警报仅提供15分钟平均值的捕获值,而不是所有条件。 一个显着的区别是,使用“或”代替第二个“和”在监听时产生语法错误,所以AFAIK“或”逻辑是不允许的。

 check system our.server.tld if loadavg (1min) > 1 and loadavg (5min) > 0.5 and loadavg (15min) > 0.25 then alert 

对于testing用例,我使用的触发值要小得多,以便在testing框中更快地达到阈值,而且当时使用的很less。 当满足其中一个条件(15min loadavg)时,即使没有满足其他条件,我也会收到下面的警报,但是没有提到1min和5min的平均负载,所以似乎忽略了“和”条件。

实际的平均值是: 平均负载:0.34,0.47,0.53 。 我正在testing一个stream量很小的服务器,并运行find命令来驱动系统负载。 此外,似乎只有一个小数位是允许的,所以15分钟检查的0.25值显然是向下取整的。

来自Monit的警报邮件

 Resource limit matched Service our.server.tld Date: Thu, 01 Nov 2012 11:34:58 Action: alert Host: our.server.tld Description: loadavg(15min) of 0.5 matches resource limit [loadavg(15min)>0.2] Your faithful employee, Monit 

我想我明白你想要完成的事情

用简单的英语,你想说,

“如果1分钟的平均负荷大于或等于5.0并且5分钟的负荷平均值大于3.0或者15分钟的负荷平均值大于2.0,则发出警报”

这不是我希望看到的监控方法,因为它会产生很多噪音。 另外,如何处理恢复的阈值? 你真的想要预防或通知什么? 高负荷,持续的负荷是否正确?

在Monit中,我将使用“cycles”关键字来控制它。

假设60秒的循环variables,

 check system localhost # Send alert if 1-minute average is > 5 for 5 minutes if loadavg (1min) > 5 for 5 cycles then alert