Nagios 整合微信报警

作者: print("") 分类: 监控 发布时间: 2017-04-18 19:50


前面写了一个zabbix微信告警的,用的我的企业号,后来发现用的人太多消息都超过限制了,应大家要求发布个可以用主机企业号的发送程序,填自己的企业号就可发送微信告警消息!使用go语言开发(感谢老司机提供的微信sdk)

首先你得有个企业号!!!!

关于企业号的申请,什么是corpid,secret,agentid,微信号,用户账号等等问题我就不科普了,大家可以上腾讯的企业号开发者中心查看,或者查看itnihao的一篇blog,http://itnihao.blog.51cto.com/1741976/1733245图文并貌写的很清楚。
32位zabbix_weixin.x86.tar 64位zabbix_weixin.x86_64.tar

cd /usr/local/nagios
wget http://www.o2oxy.cn/wp-content/uploads/2017/04/zabbix_weixin.x86_64.tar.gz
tar zxvf zabbix_weixin.x86_64.tar.gz
mv zabbix_weixin/weixin  .
chmod a+x weixin
mv zabbix_weixin/weixincfg.json /etc/
rm -rf zxvf zabbix_weixin.x86_64.tar.gz
rm -rf zabbix_weixin/
接下来一步很重要,编辑/etc/weixincfg.json文件,配置你的企业号corpid,secret,agentid,
{

“corp”: {
“corpid”: “wxxxxxx”,
“secret”: “Vn6dxxxx”,
“agentid”: 1
}
}
不知道哪里看corpid,scret,agentid的直接看itnihao的文章,不要再问我! AgentId AgentId

测试

/usr/local/nagios/libexec/weixin xxx subject body
解释一下(这里我只是演示,具体的你要替换成你自己的信息,切不可按图索骥
xxx为你的微信账号(企业号里面的账号ID号)!注意不是微信号!也不是微信昵称!当然你也可以把户账号设置成微信号或者微信昵称,自己设置!
subject 告警主题
boyd 告警闲情
介于多数人分不清楚,这里解释一下: 在微信企业号里,成员要关注企业号,需要审核,审核之后每个人会赋予一个账号。 个人账号 个人账号 如果发送显示“OK”,表示发送成功,应该就会收到消息!

hosts.cfg 配置如下:
define host {
use linux-server
host_name web
alias web-liang
address 192.168.132.189
max_check_attempts 3
normal_check_interval 2
retry_check_interval 2
check_period 24×7
notification_interval 300
notification_period 24×7
notification_options d,u,r
contact_groups admins,liang,weixin
}
define host {
use linux-server
host_name mysql
alias mysql-liang
address 192.168.132.190
max_check_attempts 3
normal_check_interval 2
retry_check_interval 2
check_period 24×7
notification_interval 300
notification_period 24×7
notification_options d,u,r
contact_groups admins,liang,weixin
}
define hostgroup{
hostgroup_name linux-servers
alias Linux Servers
members web,mysql
}

如果小伙伴们还是刚接触的话可以复制上面的内容。但是首先需要在nagios.cfg 中添加cfg_file=/usr/local/nagios/etc/hosts.cfg

cfg_file=/usr/local/nagios/etc/services.cfg

services.cfg 内容如下
define service {
use generic-service
host_name web,mysql
service_description load
check_command check_nrpe!check_load
max_check_attempts 4
normal_check_interval 3
retry_check_interval 2
check_period 24×7
notification_interval 360
notification_period 24×7
notification_options w,u,c,r
contact_groups admins,liang,weixin
process_perf_data 1
}
define service {
use generic-service
host_name web,mysql
service_description swap
check_command check_nrpe!check_swap
max_check_attempts 4
normal_check_interval 3
retry_check_interval 2
check_period 24×7
notification_interval 360
notification_period 24×7
notification_options w,u,c,r
contact_groups admins,liang,weixin
process_perf_data 1
}
客户端是两台内网机器通过nrpe监控的服务器的swap和load 。现在配置一下联系人只要添加你微信号对应的企业号的ID号就就行了。我这边对应的ID号是1 所以我只需要添加一个用户1就足够了
vim /usr/local/nagios/etc/objects/contacts.cfg
define contact{
contact_name weixin
use generic-contact
alias weixin
address1 1
}
define contactgroup{
contactgroup_name weixin
alias weixin Administrators
members weixin
}
默认里面是有Admin组的。我们只要添加这些就一个就够了。如果还有需求可以自行添加的。
下一步需要现在配置nagios的配置

vim  /usr/local/nagios/etc/objects/templates.cfg
在vim 中 查找generic-contact 这个模板 这两个模板都是上面的hosts.cfg 和service.cfg中两个调用的通信模板找到后修改两行就可以了
service_notification_commands   notify-service-by-email
host_notification_commands      notify-host-by-email
找到这个修改成如下
service_notification_commands   notify-service-by-email,notify-host-by-weixin
host_notification_commands      notify-host-by-email,notify-service-by-weixin
保存退出后,就是新建上面所添加的两个命令集
vim  /usr/local/nagios/etc/objects/commands.cfg
在最下面新建如下的几行
define command{
command_name notify-host-by-weixin
command_line /usr/local/nagios/libexec/weixin $CONTACTADDRESS1$ /usr/bin/printf “%b” “***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$\n” &> /dev/null
}define command{
command_name notify-service-by-weixin
command_line /usr/local/nagios/libexec/weixin $CONTACTADDRESS1$ /usr/bin/printf “%b” “***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$\n” &> /dev/null
}
保存退出后。检查一下语法。
[root@Nagios1 objects]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
Nagios Core 3.2.3
Copyright (c) 2009-2010 Nagios Core Development Team and Community Contributors
Copyright (c) 1999-2009 Ethan Galstad
Last Modified: 10-03-2010
License: GPLWebsite: http://www.nagios.org
Reading configuration data…
Read main config file okay…
Processing object config file ‘/usr/local/nagios/etc/objects/commands.cfg’…
Processing object config file ‘/usr/local/nagios/etc/objects/contacts.cfg’…
Processing object config file ‘/usr/local/nagios/etc/objects/timeperiods.cfg’…
Processing object config file ‘/usr/local/nagios/etc/objects/templates.cfg’…
Processing object config file ‘/usr/local/nagios/etc/hosts.cfg’…
Processing object config file ‘/usr/local/nagios/etc/services.cfg’…
Read object config files okay…Running pre-flight check on configuration data…Checking services…
Checked 4 services.
Checking hosts…
Checked 2 hosts.
Checking host groups…
Checked 1 host groups.
Checking service groups…
Checked 0 service groups.
Checking contacts…
Checked 3 contacts.
Checking contact groups…
Checked 3 contact groups.
Checking service escalations…
Checked 0 service escalations.
Checking service dependencies…
Checked 0 service dependencies.
Checking host escalations…
Checked 0 host escalations.
Checking host dependencies…
Checked 0 host dependencies.
Checking commands…
Checked 27 commands.
Checking time periods…
Checked 5 time periods.
Checking for circular paths between hosts…
Checking for circular host and service dependencies…
Checking global event handlers…
Checking obsessive compulsive processor commands…
Checking misc settings…
Total Warnings: 0                   #######如果没有出现报错说明已经成功了哈
Total Errors: 0
Things look okay – No serious problems were detected during the pre-flight check
现在访问一下nagios的主页面
已经看到了服务已经没有问题了。
现在尝试关掉客户端
已经关闭了客户端
现在查看一下日志的变化
日志中看到了正在检测已经宕掉了的服务
稍微等一下。就会有邮件和微信报警的发到手中
因为我nagios是设置了邮件报警的。所以这时候会收到邮件
微信中已经收到了报警。但是输出的格式有点问题。这就是/usr/local/nagios/etc/objects/commands.cfg 中的两个命令集还没有完全写正确。博主暂时未能修改。如果有朋友有能力就帮忙修改一下。
完  2017-04-18
感谢itnihao 大神的go程序包
本文转载修改的原文http://blog.cactifans.com/2016/01/27/zabbix%E5%BE%AE%E4%BF%A1%E5%91%8A%E8%AD%A6/

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

说点什么

avatar
  Subscribe  
提醒