我测试通知和升级链的正常方法是通过导致故障来模拟故障,例如阻塞端口。
但这完全不令人满意。 我不希望在没有停机时间的地方记录在nagios中。 我也不想等。
有谁知道在不导致中断的情况下测试通知链的方法? 例如像这样:
$ ./check_notifications_chain <service|host> <time down>
at <x> minutes notification email sent to group <people>
at <2x> minutes notification email sent to group <people>
at <3x> minutes escalated to group <management>
at <200x> rm -rf; shutdown -h now executed.
扩展这种范式,我可能会使通知链本身成为一种 nagios 检查,但在我的大脑爆炸之前,我会停在这里。
任何人?
如果只想验证电子邮件警报是否正常工作,则可以创建一个简单的测试服务,该服务每天生成一次警告。
test_alert.sh:
#!/bin/bash
date=`date -u +%H%M`
echo $date
echo "Nagios test script. Intentionally generates a warning daily."
if [[ "$date" -ge "1900" && "$date" -le "1920" ]] ; then
exit 1
else
exit 0
fi
命令.cfg:
define command{
command_name test_alert
command_line /bin/bash /usr/local/scripts/test_alert.sh
}
服务.cfg:
define service {
host localhost
service_description Test Alert
check_command test_alert
use generic-service
}
这是一个旧帖子,但也许我的解决方案可以帮助某人。
我使用Nagios插件包中的插件"check_dummy"。正如它所说,这是愚蠢的。
查看其工作原理的一些示例:
Usage:
check_dummy <integer state> [optional text]
$ ./check_dummy 0
OK
$ ./check_dummy 2
CRITICAL
$ ./check_dummy 3 salut
UNKNOWN: salut
$ ./check_dummy 1 azerty
WARNING: azerty
$ echo $?
1
我创建了一个包含交互状态和可选文本的文件: 回声 0 正常 |sudo tee/usr/local/nagios/libexec/dummy.txt sudo chown nagios:nagios/usr/local/nagios/libexec/dummy.txt
使用命令:
# Dummy check (notifications tests)
define command {
command_name my_check_dummy
command_line $USER1$/check_dummy $(cat /usr/local/nagios/libexec/dummy.txt)
}
与服务描述相关联:
define service {
use generic-service
host_name localhost
service_description Dummy check
check_period 24x7
check_interval 1
max_check_attempts 1
retry_interval 1
notifications_enabled 1
notification_options w,u,c,r
notification_interval 0
notification_period 24x7
check_command my_check_dummy
}
所以我只是更改文件"虚拟.txt"的内容来更改服务状态:
echo "2 Oups" | sudo tee /usr/local/nagios/libexec/dummy.txt
echo "1 AHHHH" | sudo tee /usr/local/nagios/libexec/dummy.txt
echo "0 Parfait !" | sudo tee /usr/local/nagios/libexec/dummy.txt
这允许我调试我的通知程序。
希望对您有所帮助!