我不明白,但由于某种原因,Nagios 没有向我发送有关我监控的某些服务的警报,我想知道是否有人可以帮我一点忙。
这就是服务
定义服务 { hostgroup_name nrpe磁盘 service_description 磁盘 使用警报,检查 check_command check_nrpe1!check_disk 寄存器 1 }
这是我的命令
定义命令 { 命令名称 check_nrpe1 命令行$USER1$/check_nrpe-H$HOSTADDRESS$-c$ARG1$ }
这是服务模板
定义服务 { 姓名报警 通知间隔 0 通知期限 247 通知选项 w,u,r,c,f,s 通知已启用 1 contact_groups 员工 寄存器 0 }
定义命令 { 命令名称 通过电子邮件通知主机 command_line /usr/bin/printf "%b" "***** Nagios *****\n\n通知类型:$NOTIFICATIONTYPE$\n主机:$HOSTNAME$\n状态:$HOSTSTATE$\n地址:$HOSTADDRESS$\n信息:$HOSTOUTPUT$\n\n日期/时间:$LONGDATETIME$\n" | /usr/bin/mail -s "** $NOTIFICATIONTYPE$ 主机警报:$HOSTNAME$ 是 $HOSTSTATE$ **" $CONTACTEMAIL$ } 定义命令 { 命令名称 通过寻呼机通知主机 command_line /usr/bin/printf "%b" "通知类型:$NOTIFICATIONTYPE$\n主机:$HOSTNAME$\n状态:$HOSTSTATE$\n地址:$HOSTADDRESS$\n信息:$HOSTOUTPUT$" | /usr/bin/mail $CONTACTPAGER$ } 定义命令 { 命令名称 通过电子邮件通知服务 command_line /usr/bin/printf "%b" "***** Nagios *****\n\n通知类型:$NOTIFICATIONTYPE$\n\n服务:$SERVICEDESC$\n主机:$HOSTALIAS$\n地址:$HOSTADDRESS$\n状态:$SERVICESTATE$\n\n日期/时间:$LONGDATETIME$\n\n附加信息:\n\n$SERVICEOUTPUT$" | /usr/bin/mail -s "** $NOTIFICATIONTYPE$ 服务警报:$HOSTALIAS$/$SERVICEDESC$ 为 $SERVICESTATE$ **" $CONTACTEMAIL$ } 定义命令 { 命令名称 通过传呼机通知服务 command_line /usr/bin/printf "%b" "通知类型:$NOTIFICATIONTYPE$\n\n服务:$SERVICEDESC$\n主机:$HOSTALIAS$\n地址:$HOSTADDRESS$\n状态:$SERVICESTATE$\n\n附加信息:\n\n$SERVICEOUTPUT$" | /usr/bin/mail $CONTACTPAGER$ }
定义联系组{ contactgroup_name 员工 别名 XXXXXXXX 会员 XXXXXXXX XXXXXXXX }
定义联系人{ 联系人姓名 XXXXXXX XXXXXX 别名 XXXXXXXXX host_notifications_enabled 1 service_notifications_enabled 1 主机通知周期 247 服务通知期限 247 host_notification_options d,u,r,f,s service_notification_options w,u,c,r,f,s host_notification_commands 通过电子邮件通知主机,通过寻呼机通知主机 service_notification_commands 通过电子邮件通知服务,通过寻呼机通知服务 电子邮件 [电子邮件保护] 寻呼机 [电子邮件保护] }
答案1
我没有在你的问题或任何答案中看到它,但你有没有检查过nagios.cfg
文件中的启用通知设置?是否设置为0或者1?
另外,这是否只发生在特定服务通知上,还是会影响所有通知?如果是,我怀疑 nagios.cfg 文件中的 enable_notifications 设置为 0。如果是这样,请尝试将其更改为 1 并重新启动 Nagios。
答案2
Nagios 调试日志帮助我诊断了类似的问题。它位于我的 nagios.cfg 末尾
debug_level=32
debug_file=/var/log/nagios3/nagios.debug
debug_verbosity=2
重新启动 nagios,然后查看文件nagios.debug
;它会显示类似的内容:
[1416254305.106042] [032.0] [pid=928] ** Service Notification Attempt ** Host: 'myhost', Service: 'myservice', Type: 0, Options: 0, Current State: 2, Last Notification: Wed Dec 31 19:00:00 1969
[1416254305.106106] [032.0] [pid=928] Notification viability test passed.
[1416254305.106114] [032.1] [pid=928] Current notification number: 1 (incremented)
[1416254305.106120] [032.2] [pid=928] Creating list of contacts to be notified.
[1416254305.106137] [032.1] [pid=928] Service notification will NOT be escalated.
[1416254305.106174] [032.1] [pid=928] Adding normal contacts for service to notification list.
[1416254305.106185] [032.2] [pid=928] Adding contact 'mycontact' to notification list.
[1416254305.106219] [032.2] [pid=928] ** Attempting to notifying contact 'mycontact'...
[1416254305.106449] [032.2] [pid=928] ** Checking service notification viability for contact 'mycontact'...
[1416254305.106463] [032.2] [pid=928] We shouldn't notify this contact about CRITICAL service states.
[1416254305.106474] [032.0] [pid=928] No contacts were notified. Next possible notification time: Wed Dec 31 19:00:00 1969
[1416254305.106481] [032.0] [pid=928] 0 contacts were notified.
就我而言,我的联系不畅service_notification_options
,导致初始通知无法发出,从而阻止了我所有的升级(如果我们从不发送通知 0,我们就永远无法收到通知 1)
答案3
我的第一步是尝试直接定义所有参数,而不是依赖继承。如果可以的话,也要避免使用组。这至少为您提供了一个干净的调试起点。
define service {
host_name XXXXXXX
service_description disk
notification_interval 0
notification_period 247
notifications_enabled 1
contacts XXXXXXX
check_command check_nrpe1!check_disk
}
您可能还想尝试将 notification_interval 切换为其他值,甚至将其保留(默认为 60)。直到您使其正常工作。
答案4
改变
register 0
到
register 1
您的“警报”服务可能会有所帮助。