我即将在 RHEL Linux 机器上从 Sysfence 迁移到 Monit,我想知道是否可以在 Monit 中创建以下 sysfence 等效项。
Sysfence 配置(部分)
例如,我们的 sysfence.conf 文件声明以下内容来检查平均负载条件。
rule "high load" {
la1 >= 5.0 and
{
{ la5 > 3.0 }
or
{ la15 > 2.0 }
}
}
run '/bin/high-load.sh'
step 300
Monit 配置(尝试模拟 Sysfence 平均负载条件)
对于 monitrc 文件,我创建了以下语句,该语句通过了配置语法检查,但警报仅提供 15 分钟负载平均值的捕获值,而不是所有条件的值。一个显着的区别是使用“或”代替第二个“和”会在 monit 启动时产生语法错误,因此据我所知“或”逻辑是不允许的。
check system our.server.tld
if loadavg (1min) > 1 and loadavg (5min) > 0.5 and loadavg (15min) > 0.25 then alert
对于测试用例,我使用更小的触发值,以便在当时使用很少的测试箱上更快地达到阈值。在这种情况下,当满足其中一个条件(15 分钟负载平均值)时,我收到了以下警报,其中没有提及 1 分钟和 5 分钟负载平均值,即使其他条件不满足,因此似乎“和”条件被忽略了。
实际负载平均值为:平均负载:0.34、0.47、0.53。我在流量很少的服务器上进行测试,并运行了寻找命令会增加系统负载。另外,似乎只允许一位小数,因此 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
我想我知道你想要实现什么……
用简单的英语来说,你想说的是,
“如果 1 分钟平均负载大于或等于 5.0 并且 5 分钟平均负载大于 3.0 或 15 分钟平均负载大于 2.0,则发送警报”
这不是我希望看到的监控方法,因为它会产生很多噪音。此外,恢复的阈值如何处理?你认为真的想要阻止或收到通知?高负载且持续负载,对吗?
在 Monit 中,我会使用“cycles”关键字来控制它。
假设周期变量为 60 秒,
check system localhost
# Send alert if 1-minute average is > 5 for 5 minutes
if loadavg (1min) > 5 for 5 cycles then alert