我已经花了几个小时寻找一个插件,如果其中一个服务器的 CPU 负载在过去 5 小时内超过 90%,它会通知我。在 Nagios Exchange 上搜索,没有找到。
有人可以帮忙吗?
谢谢!
答案1
UNIX 下的 CPU 负载通常定义为处于可运行状态的进程数。我们以 1、5 和 15 分钟为间隔测量此负载。该命令uptime
是输出负载平均值的常用方法。
~$ uptime 18:35:22 启动 1 分钟,1 个用户,平均负载:0.04、0.01、0.01
检查加载采用三个元素的元组,匹配 1、5 和 15 分钟的平均值,并接受警告和临界阈值。
作为一个粗略的想法,尝试check_load -c 0.9,0.9,0.9
将 acheck_interval
设置为 1 小时,将 a 设置max_check_attempts
为 5。
还要注意这个-r
论点。这解决了这样一个事实:大多数 CPU 都是多核的,因此可以单独充分利用,同时总体上仍有过剩容量。
答案2
基本的 check_load Nagios 检查将仅评估/proc/loadavg
哪些只有 1、5 和 15 分钟的平均值。如果您需要更多,则需要达到这个程度的积压。顺便说一句,该sysstat
软件包就是这样做的 - 它评估并记录给定间隔的性能值,并通过命令行实用程序提供它们sar
。check_sa Nagios 插件能够评估输出并计算平均值以满足您的需求。
我应该补充一点,在实际根据特定时间段内的平均性能值定义警报阈值时,Nagios 是一个相当糟糕的选择,因为这需要广泛的状态保持,而 Nagios 不支持。其他收集性能数据的监控系统在这方面做得更好。我建议看看开放网络管理系统或者至少类似穆宁如果您无法管理复杂性并处理前者的技术要求(SNMP)。两者都具有能够绘制精美的 RRD 图表的优势,可帮助您在将趋势正式化为评估规则之前检测趋势。
答案3
令人惊奇——不是吗?
我们还必须为此自己编写一个监视器。
标准 check_load 毫无意义,因为它必须与系统内的(逻辑)处理器数量建立关系。
所以我们大致会这样做: - 查找系统中报告的处理器数量 - 将当前负载除以该数字
您将获得您所追求的 90% 分数。
我们使用 100% 表示警告,使用 150% 表示严重。
答案4
安装 systat crontab sa -q 10000000 |邮件[电子邮件保护]
基本上,sar 默认为您提供 10 分钟的状态详细信息。
因此对于负载平均值...
[root@ops2 ~]# sar -q|tail -5
下午 05:00:01 0 527 0.00 0.01 0.00
下午 05:10:01 1 528 0.00 0.00 0.00
下午 05:20:01 6 537 0.00 0.00 0.00
下午 05:30:01 2 532 0.00 0.01 0.00
平均:2 529 0.03 0.05 0.04
这可以报告很多事情,尽管电子邮件服务器报告在 app dynamics 和 newrelic 等应用中正在消失,但它们的挖掘深度更深(但需要花钱)
在我看来,nagios 仍然是性价比最高的...你甚至可以将它与 ircd 集成
nagios 绝对是我的首选。使用其预置插件或编写自己的 nrpe 插件非常容易,而且它与 hipchat、irc、pagerduty 或自定义警报系统配合得非常好