nagios 实现 QQ群 告警

在部署完nagios后,很多人都在纠结告警及时性的问题。使用默认的邮件告警吧,由于邮件收发的延迟,很难及时得到提醒。而之前流行一时的使用飞信进行短信告警的功能也无法使用了。当然还可以微信告警,但是需要企业号,不是每个人都能注册的。

其实还有一种方式可以达到及时提醒的目的,那就是使用QQ群进行告警。目前QQ应该是PC及手机的必装的应用,没个QQ都不好意思说用的是智能机。通过QQ群发送信息,除了能达到及时提醒的目的外,在收到告警后,各成员还能通过QQ群进行及时沟通交流,以便问题能快速分析及解决,可谓一举多得。

下面就来详解一下nagios实现QQ群告警的配置过程。

安装Mojo-Webqq

由于webqq改动了登录协议,加上pfqq项目已停止维护,使用旧的方式已无法登录webqq进行告警发送,新的登录方式请移步:《Mojo-Webqq安装实例》。nagios整合方式不变。(20151008)

整合nagios监控

  • 定义QQ群告警命令,当然,如果为了方便,也可以直接对邮件告警的定义进行修改。
1
2
3
4
5
6
7
8
9
10
11
12
13
vi /usr/local/nagios/etc/objects/commands.cfg

######## 定义QQ群告警 ########
define command{
command_name notify-host-by-qqgroup
command_line /home/nagios/qq_sms.sh "【$NOTIFICATIONTYPE$】" "主机: $HOSTNAME$ 状态: $HOSTSTATE$ 地址: $HOSTADDRESS$ 信息: $HOSTOUTPUT$ 时间: $LONGDATETIME$" &>> ~/nohup.out
}

define command{
command_name notify-service-by-qqgroup
command_line /home/nagios/qq_sms.sh "【$SERVICEDESC$】" "主机: $HOSTNAME$ IP: $HOSTADDRESS$ 状态: $SERVICESTATE$ 详情: $SERVICEOUTPUT$ 时间: $LONGDATETIME$" &>> ~/nohup.out
}
######## 定义QQ群告警 ########
  • 添加QQ群告警用户
1
2
3
4
5
6
7
8
9
10
11
vi /usr/local/nagios/etc/objects/contacts.cfg

######## 添加告警用户 ########
define contact{
contact_name qqgroup
use generic-contact
alias qqgroup warnning
service_notification_commands notify-service-by-qqgroup
host_notification_commands notify-host-by-qqgroup
}
######## 添加告警用户 ########
  • 在service或host定义中添加告警用户
1
2
3
4
5
6
7
8
9
10
11
vi /usr/local/nagios/etc/objects/localhost.cfg

######## 添加告警用户案例 ########
define service{
use local-service
host_name localhost
service_description Root Partition
contacts qqgroup
check_command check_local_disk!100%!99%!/
}
######## 添加告警用户案例 ########
  • 检查配置并重启nagios后,就可以实现QQ群告警了。
1
2
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
sudo service nagios restart

告警测试

That’s all.