如何从 Nagios 发送“一切正常”通知?

如何从 Nagios 发送“一切正常”通知?

我需要配置 Nagios,如果没有问题,则发送一条通知,告知一切顺利。

是否存在这种设置或者是否有相应的插件?

答案1

我使用以下设置每天发送一次电子邮件。这让我知道我的 Nagios 服务器、电子邮件系统和 Nagios 配置一切正常。

  # nagios/objects/localhost.cfg
  ....
  # Send a message once per day to make sure nagios is working ok
  define service{
        use                     local-service
        host_name               localhost
        service_description     Nagios is OK
        check_command           check_all_is_well
        check_period            morning     ; this is a custom period
        normal_check_interval   60          
            ; setting this to an hour and making the check_period 
            ; interval 59 minutes long each day ensures it only 
            ; happens once per day in a specific window
        }

在你的时间段配置文件中:

# nagios/objects/timeperiods.cfg
....
define timeperiod{
        timeperiod_name morning
        alias           First thing in the am
        monday          06:00-6:59
        tuesday         06:00-6:59
        wednesday       06:00-6:59
        thursday        06:00-6:59
        friday          06:00-6:59
        saturday        06:00-6:59
        sunday          06:00-6:59
        }

check_all_is_ok 命令是 sendmail 的一个简单包装器:

# check_all_is_ok
#!/bin/bash

echo "All is well from Nagio on `hostname`" \
       | /etc/nagios/sendmail -s "Nagios on PIP is OK" <your email address>

echo "OK: nagios is ok on `hostname`";
exit 0

它不会检查前 24 小时内是否出现问题,但如果需要,您可以按照 guanta 的建议添加一些日志 grep-ping。您还可以通过将 normal_check_interval 设置为 1440(24 小时)来实现每天一次的要求,但我希望检查每天在特定窗口中运行。

答案2

如果您配置了每日日志轮换(log_rotation_method=d),则可以编写一个脚本来计算警报数量nagios.log,如下所示:

[ `grep -c ALERT var/nagios.log` -eq 0 ] && echo "Everything is OK!" | mail -s "Nagios daily report" your@email

将其放入 cron 作业中,在一天结束、睡觉前运行。

如果没有,请参阅按照日期进行过滤的主题。

答案3

为了其他人的利益:我自己刚刚解决了这个问题,想到的最简单的解决方案是每 8 小时检查一次 nagios 进程,以确保 nagios 正在运行

#crontab -e

添加以下内容

* */8 * * * /usr/local/nagios/libexec/check_nagios -t 20 -e 5 -F /usr/local/nagios/var/status.dat -C /usr/local/nagios/bin/nagios > /var/local/nagios_stats && sendemail -f "NAGIOS STATUS [email protected]" -u Nagios Process Status -s smtp.gmail.com:587 -xu [email protected] -xp SenderPassword -o tls=yes -t [email protected] -m < /var/local/nagios_stats

别忘了

/var/local/nagios_stats在(或其他地方但在 crontab 中更改)中创建文件

发件人地址、收件人地址、邮件密码

答案4

有点晚了,但对于其他正在寻找解决方案的人来说,有一个简单的方法,使用livestatus 经纪人模块

设置 livestatus 使用 unix 套接字(Shinken 默认只设置了 tcp 端口,你可以在配置中添加套接字这一页),您可以使用例如 Python 脚本直接对其进行轮询。

相关内容