nagios使用邮件来告警通知是很常见的一种方式。
1. 使用sendEmail来发送邮件
sendEmail工具非常好用。具体内容参见:
2. 创建一个联系人
代码如下 | 复制代码 |
# vim /usr/local/nagios/etc/objects/contacts.cfg define contact{ contact_name mobei alias mobei service_notification_period 24x7 host_notification_period 24x7 service_notification_options w,u,c host_notification_options d,u service_notification_commands notify-service-by-email host_notification_commands notify-host-by-email email 【You email address】 } |
3. 创建一个组
代码如下 | 复制代码 |
define contactgroup{ contactgroup_name ops alias ops members mobei } |
4. 修改发送邮件命令
代码如下 | 复制代码 |
# vim /usr/local/nagios/etc/objects/commands.cfg # 'notify-host-by-email' command definition define command{ command_name notify-host-by-email command_line /usr/local/bin/sendEmail -l /tmp/sendEmail.log -f jiank@126.com -t $CONTACTEMAIL$ -s smtp.126.com -u "$HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$" -xu jiank@126.com -xp jiankong -m "Service: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$ State: $SERVICESTATE$\nDate/Time: $SHORTDATETIME$\nInfo:$SERVICEOUTPUT$" } # 'notify-service-by-email' command definition define command{ command_name notify-service-by-email command_line /usr/local/bin/sendEmail -l /tmp/sendEmail.log -f jiank@126.com -t $CONTACTEMAIL$ -s smtp.126.com -u "$HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$" -xu jiank@126.com -xp jiankong -m "Service: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$ State: $SERVICESTATE$\nDate/Time: $SHORTDATETIME$\nInfo:$SERVICEOUTPUT$" } |
5. 指定监控项目。如:
代码如下 | 复制代码 |
define service { use generic-service hostgroup_name Mongo Servers service_description Mongo Mapped Memory Usage check_command check_mongodb!10.0.0.160!12345!'ttlsa'!'www.111cn.net'!memory_mapped!20!28 contact_groups ops } |
解决nagios报警不发邮件通知
同样也用个例子来介绍。
内容如下
代码如下 | 复制代码 |
# vi genericdef.cfg 1 define host{ |
从上面service定义来看,通知选项已经加入了c(CRITICAL)这个参数了,看了问题不是出在这里。
第二个我想到的地方就是contract的配置文件,打开看了一下
代码如下 | 复制代码 |
1 define contact{ 2 contact_name nagios-msn-admin 3 alias Nagios msn Admin 4 email harvey_liu@wenzizone.com 5 host_notification_commands notify-host-by-msn 6 host_notification_options d,u 7 host_notification_period 24x7 8 service_notification_period 24x7 9 service_notification_options w,u,r,c //这个位置之前是没有c 10 service_notification_commands notify-service-by-msn 11 } 12 13 define contact{ 14 contact_name nagios-mail-admin 15 alias Nagios mail Admin 16 email hanzhao.liu@wenzizone.com 17 host_notification_commands notify-host-by-email 18 host_notification_options d,u 19 host_notification_period 24x7 20 service_notification_period 24x7 21 service_notification_options w,u,r,c //这个位置之前没有c 22 service_notification_commands notify-service-by-email 23 } |
在上面的第9和21行的位置加上c之后,然后重新reload一下nagios,如果没有报错,说明配置更新完毕,很快蚊子又可以收到报警的邮件了。
nagios调整是一个细致的活,看了蚊子还需要做很多的工作才行了