在 Nagios 中使用 check_snmp 的文本输出发出警告

在 Nagios 中使用 check_snmp 的文本输出发出警告

我正在尝试配置 Icinga 来查询加载到我正在配置的存储阵列中的硬盘的 SMART 状态。

我遇到的问题是,查询驱动器的 OID 时来自阵列的响应是文本,而不是数字。

./check_snmp -H 10.0.10.17 -P 2c -C public -o .1.3.6.1.4.1.24681.1.2.11.1.7.1
SNMP OK - "GOOD" |

在处理 check_snmp 的输出时,我习惯使用数字而不是字符串。有人知道当GOOD返回除输出之外的任何内容时,我如何创建严重或警告通知吗?

答案1

您当然已经知道Nagios需要一个数字(0,1,2,3)作为启动命令的返回状态代码。

如果$?命令check_snmp总是返回0,我的建议是编写自己的检查,在命令中添加pipe和,例如:grepcheck_snmp

./check_snmp -H 10.0.10.17 -P 2c -C public -o .1.3.6.1.4.1.24681.1.2.11.1.7.1 | grep GOOD

如果在输出中找到0 (OK)单词,则返回,否则将返回。GOOD1 (Warning)

答案2

check_snmp您不能使用具有非数值的库存;您必须check_snmp为插件编写包装器,或者使用/编写检查字符串值的插件。这就是为什么有数百种针对特定硬件的 SNMP 插件变体。该 OID 适用于 QNAP NAS,对吗?

通常,你会发现其他人已经为你完成了这项工作。你可以直接使用其中一个插件,也可以 fork 它们:

答案3

如果您需要名称而不是数字(OID),则需要将这些 OID 转换为 mib。下载指定用途所需的 mib(硬盘、路由器接口、服务等)。下载后,尝试使用指定名称的脚本。例如,如果我喜欢使用 check_snmp 检查正常运行时间,我会这样做:./check_snmp -H iphosts -P 2c -C public -o sysUpTime.0然后您可以将数字 OID 替换为 mib 名称……这就是全部要点

答案4

当我必须将警告或严重设置为字符串时,我遇到了同样的问题,因此我只是将它与 --invert-search 和 --ereg 选项一起使用,如下所示:

./check_snmp -P 3 -U monitoring_icinga -L authPriv -a SHA -x AES -A 'secr3t' --privpasswd='secr3t' 10.155.0.1 -o .1.3.6.1.4.1.25461.2.1.2.1.11.0 -r Non-functional --invert-search; echo $?
SNMP OK - "active" | 
0
./check_snmp -P 3 -U monitoring_icinga -L authPriv -a SHA -x AES -A 'secr3t' --privpasswd='secr3t' 10.155.0.1 -o .1.3.6.1.4.1.25461.2.1.2.1.11.0 -r active --invert-search; echo $?
SNMP CRITICAL - *"active"* | 
2

尝试这个:

./check_snmp -H 10.0.10.17 -P 2c -C public -o .1.3.6.1.4.1.24681.1.2.11.1.7.1 --ereg GOOD --invert-search

相关内容