nagios报警参数详细设置

(1)所有提醒任务首先要查看hosts.cfg或者services.cfg,在这两个文件中有如下几个参数关系到提醒:
normal_check_interval  :正常报警频率
notifications_enabled : 是否开启提醒功能。1为开启,0为禁用。注,一般,这个选项会在主配置文件(nagios.cfg)中定义,效果相同。
contact_groups: 定义接受提醒的联系人组,如果hosts.cfg文件中所有的条件都符合,那么提醒任务将会继续检查contactgroup.cfg文件。
notification_interval: 重复发送提醒信息的最短间隔时间。默认间隔时间是60分钟。如果这个值设置为0,将不会发送重复提醒。
notification_period: 发送提醒的时间段。非常重要的主机(服务)我定义为7×24,一般的主机(服务)就定义为上班时间。如果不在定义的时间段内,无论什么问题发生,都不会发送提醒。
notification_options: 这个参数定义了发送提醒包括的情况:d = 状态为DOWN, u = 状态为UNREACHABLE , r = 状态恢复为OK , f = flapping。,n=不发送提醒。

综上,如果要提醒信息顺利通过hosts.cfg文件,并且发出提醒的话,要满足:
notifications_enabled 值为1
contact_groups 的组已经定义正确。见(3)
notification_period 定义的时间段包括出问题的时间,检查方法如见(2)
notification_options 定义的包括需要提醒的状态改变。

(2)检查timeperiod的配置,一般在主配置文件中,或者在timeperiod.cfg等配置文件中可以找到:
时间模版:/usr/local/nagios/etc/objects/timeperiods.cfg
define timeperiod{
       timeperiod_name service (此处可以自定义命名,与上保持一致)
       alias           24x7 Sans Holidays

       use             us-holidays             ; Get holiday exceptions from other timeperiod

       sunday          00:00-24:00
       monday          00:00-24:00
       tuesday         00:00-24:00
       wednesday       00:00-24:00
       thursday        00:00-24:00
       friday          00:00-24:00
       saturday        00:00-24:00
       }
这个配置就是定义了一个名字是"service"的时间段,包括从周一到周日中每天的24小时。这个时间段里,系统会将故障告警信息发送给联系人。

/usr/local/nagios/etc/contacts.cfg ( 定义联系人)
define contact{
       contact_name                    chb                    ; Short name of user
       alias                           Nagios             ; Full name of user
       host_notifications_enabled      1
       service_notifications_enabled   1
       service_notification_period     24x7
       host_notification_period        24x7
       service_notification_options    w,u,c,r
       host_notification_options       d,u,r
       service_notification_commands   service-notify-sms
       host_notification_commands      host-notify-sms
#       email                           [email protected]       ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******
#       pager                           1515.......
       }

define contact{
        contact_name                    mail                    ; Short name of user
        alias                           null             ; Full name of user
       service_notification_period     24x7
        host_notification_period        24x7
        service_notification_options    w,u,c,r
        host_notification_options       d,u,r
        service_notification_commands   notify-service-by-email
        host_notification_commands      notify-host-by-email
        email                           [email protected]
        }

(3)检查contactgroup.cfg的配置
联系组中包含用户chb、mail
define contactgroup{
       contactgroup_name       mail
       alias                   mail
       members                 chb,mail
       }

此配置定义了一个名字叫 mail 的联系人组,包括成员 chb、mail

(4)要检查各个联系人的配置,就要查看contacts.cfg文件:

define contact{
        contact_name                    mail                    ; Short name of user
        alias                           null             ; Full name of user
        service_notification_period     24x7
        host_notification_period        24x7
        service_notification_options    w,u,c,r
        host_notification_options       d,u,r
        service_notification_commands   notify-service-by-email
        host_notification_commands      notify-host-by-email
        email                             [email protected],[email protected],[email protected],[email protected],[email protected]
        }

这个配置文件例子顶一了一个mail的联系方式和另外一些参数。
注意这里的参数也可能会造成提醒信息没有发送。email分别对应该联系人的email地址、传真地址、其他地址等等。这里解释一下其他相关的参数:
host_notification_period: 主机类提醒发送时间。定义主机类提醒发给该联系人的时间段。
在hosts.cfg/service.cfg中已经定义了一个notification_period, 那个定义是是定义所有该主机需要提醒的人接受提醒的时间段。这里的这个时间段则是说明这个人接受提醒信息的时间段,也就是说提醒发送的时间必须同时满足主机配置文件和此配置文件中的时间段才会正常发送给联系人mail。(这个参数对于那些24小时3班导的人,或者10点之后起床的老板,是很有用的)
service_notification_period: 这个参数类似于host_notification_period
host_notification_commands: 这个参数说明发送主机提醒信息的命令。
service_notification_commands: 这个参数说明发送服务提醒信息的命令。
host_notification_options:定义接受提醒的主机状态改变:d = DOWN , u = UNREACHABLE, r=UP or OK, f = flapping,n =什么都不发送。
service_notification_options: 定义接受提醒的服务状态改变。参数意义同host_notification_options。

(5) 小结。根据以上的分析,如果关于服务状态改变、提醒信息发送时间段、联系人的联系地址等都没有问题,那么可能的问题就是发送提醒信息的命令出现问题。查看 这些命令之前,请确定nagios系统的服务器上有mail或sendmail等发送邮件的软件包,且工作正常。如果你有一些短信猫,或者用了其他的提醒 脚本,请确定其工作正常。
另外,nagios还包括一个名为 Notification Escalations 的模块,用来扩展已经很强大的提醒体系。
举例说明一下这个模块的功能:你定义一台主机的提醒,首次发现问题不提醒,直到连续三次重复出现问题时,主机管理员A会收到提醒,然后过了一段时间,问题还没有修复,这是又继续发送第4次提醒给A(此时A共收到2次提醒),在第五次提醒的时候,就发给了管理员B,…… ,在第十次提醒的时候就发给了管理员的老板…… 如果你用到这个模块,也需要检查其是否配置正确。

(6)提醒命令
一般的提醒命令名称如 xxx-notify-by-xxx,他只是一个名字,具体是用什么来实现这个提醒的具体工作的,要查看command.cfg文件中,关于此命令的定义,举个例子:

# 'notify-service-by-email' command definition
define command{
command_name notify-service-by-email
command_line   echo " ** $NOTIFICATIONTYPE$ Service Alert: $HOSTNAME$/$HOSTADDRESS$ $SERVICEDESC$ is $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$ Additional Info:$SERVICEOUTPUT$ "| formail -I "Subject: $HOSTADDRESS$*$SERVICEOUTPUT$*$LONGDATETIME$"| sendmail -oi $CONTACTEMAIL$
}

# 'notify-host-by-email' command definition
#define command{
# command_name notify-host-by-email
# command_line   echo " ** $NOTIFICATIONTYPE$ Service Alert: $HOSTNAME$/$HOSTADDRESS$  is $HOSTSTATE$ at \n\nDate/Time: $LONGDATETIME$ Additional Info:$HOSTOUTPUT$"| formail -I "Subject:$HOSTADDRESS$*$HOSTOUTPUT$*$LONGDATETIME$ "|sendmail -oi $CONTACTEMAIL$
# }

上例中,定义了一个名字为"notify-by-email"的命令,这个命令的内容,就是command_line对应的命令行定义的。如果你是用独立的脚本来完成提醒功能.


你可能感兴趣的:(nagios报警参数详细设置)