我不确定这个标题是否更好:“为什么 Nagios 需要监控达到 30 的负载”。
情况:我正在为我们的网络设置 Nagios,并且已经到了在 *nix 机器上设置 NRPE 的阶段。我已经(在纸面上)大致了解了我想要在哪里设置通知。对于某个服务器,例如,它看起来像这样:1 分钟:90% 时发出警告,100% 时触发临界值 5 分钟:80% 时发出警告,90% 时触发临界值 15 分钟:60% 时发出警告,70% 时触发临界值
服务器运行两个虚拟 CPU,因此我计划使用 -r 参数来获取每个 CPU 的结果(是的,我知道这实际上不是每个 CPU,而是所有 CPU 的负载除以它们的数量,我对此没意见)。
所以当我看到 NRPE 配置文件上的默认设置时,我已经准备好进行设置了:
command[check_load]=/usr/lib/nagios/plugins/check_load -w 15,10,5 -c 30,25,20
这让我很失望。我开始怀疑我是否真的理解平均负载。我看到 -r 参数没有使用,所以平均负载高于 1 是正常的,但这是否意味着 30 个 CPU 系统的默认值?我看到这个问题答案建议使用 [CPU 数量] * 10 进行关键的 5 分钟通知(可能是 1 分钟?),这进一步支持使用远高于我计划的值。我的意思是,如果没有看到那里的默认值,我会选择
command[check_load]=/usr/lib/nagios/plugins/check_load -r -w 0.9,0.8,0.6 -c 1.0,0.9,0.7
但现在我有点怀疑了。我知道网上没有人能告诉我适合我们情况的正确值,我也不指望任何人能告诉我,如果有人能告诉我我是否严重误解了负载,需要重新开始对有用值的侦查工作,我将不胜感激。不管怎样,我得到的这些值只是基于top
过去 6 个月在相关服务器上每隔一段时间运行一次。通常,它介于 1 分钟平均每 CPU .4(.8)和 .55(1.1)之间。
答案1
原始负载平均数只是数字,而不是任何绝对值的百分比。负载平均数和 CPU 利用率(通常以百分比表示)不是一回事。您应该同时监控两者。
平均负载的近似描述(至少在 Linux 上)是“可以运行的进程数”,它非常依赖于您的系统所做的事情。经验法则是每个 CPU 的 1 个负载单元是“繁忙的”,这解释了check_load
-r 参数。高 I/O 和短寿命进程确实会搞砸这一点。您可以在其他地方找到更好的描述。
回答您的问题:30 的负载可能是由 30 个进程或线程引起的,它们都准备好让您的 CPU 全速运行,没有任何睡眠/轮询。
运行良好top
,对你的负荷有了一个大致的了解,这些是你应该开始使用的数字,并随着时间的推移进行调整以尽量减少错误警报,不过我建议将你的临界阈值加倍。
在我看来,nrpe.cfg 样本值对于典型的服务器工作负载来说太高了。我猜它们足够高,不会引起“NRPE 一直告诉我平均负载太高”的问题。奇怪的是,check_load
它本身的默认值是 0,0,0 和 0,0,0。