marty001 发表于 2019-1-21 08:38:17

Zabbix的两种报警方式

  以前,我们在用Nagios监控时,结合飞信、E-mail、短信等方式来报警。如今在使用Zabbix监控时,依然有很多种报警方式,今天我们就来讲一下微信和E-mail这两种报警方式!
  Zabbix结合微信报警:
  Zabbix_server:192.168.30.192
  Zabbix_agent:192.168.30.198
  在做此实验之前,你必须要注册一个微信公众号(订阅号或者服务号),然后让你的用户关注你的微信工作号。如何申请公众号请自行百度!
  

  第一步:下载源码
  下载微信公众平台私有接口
  git clone https://github.com/lealife/WeiXin-Private-API
  cp -r WeiXin-Private-API/etc/zabbix/alertscripts
  /etc/zabbix/alertscripts此目录为zabbix默认报警脚本目录,rpm安装的zabbix默认的报警脚本目录在这个目录下,编译安装的可以自己查找。
  chown -Rzabbix:zabbix   /etc/zabbix/alertscripts/WeiXin-Private-API
  

  第二步:设置微信公众号
  cd   /etc/zabbix/alertscripts/WeiXin-Private-API
  修改config.php文件


  修改test.php文件,只保留一下几行:


  注意这里 $msg = "$argv" 表示接受zabbix传入的第三个参数,因为在zabbix在报警时会传入三个参数:一是微信好友ID,二是报警信息的主题,三是报警信息的具体内容,这里跳过了报警主题,直接发送报警信息内容。
  

  第三步:创建测试脚本
  vim/etc/zabbix/alertscripts/weixin
  /usr/bin/php /etc/zabbix/alertscripts/WeiXin-Private-API/test.php "$1" "$2" "$3"


  chmod +x/etc/zabbix/alertscripts/weixin
  chown -R zabbix.zabbix/etc/zabbix/alertscripts/weixin
  

  第四步:测试脚本
  在测试脚本之前,你必须要得到用户的tofakeid。
  获取tofakeid的方法如下:
  登录你的微信公众号,用户管理-->选中你要测试的用户,点击他的图像,你会得到一个地址:
  https://mp.weixin.qq.com/cgi-bin/singlesendpage?t=message/send&action=index&tofakeid=o-ARgwmMXLd8IdYIeWajD6glUe4I&token=2046185283&lang=zh_CN
  上面网址中tofakeid后面红色的部分即为用户的tofakeid。
  

  # /etc/zabbix/alertscripts/weixin o-ARgwmMXLd8IdYIeWajD6glUe4I "" "hello"
  PHPNotice:Undefined index: HTTP_USER_AGENT in /var/lib/zabbixsrv/alertscripts/WeiXin-Private-API/include/LeaWeiXinClient.phpon line 33
  PHP Notice:Undefined index: HTTP_USER_AGENT in /var/lib/zabbixsrv/alertscripts/WeiXin-Private-API/include/LeaWeiXinClient.phpon line 33
  stdClass Object
  (
   => stdClass Object
  (
   => 0
               => ok
  )
  

  )
  当你看到OK时,则测试成功!
  

  如果你在测试时出现如下问题:
  # /etc/zabbix/alertscripts/weixin o-ARgwmMXLd8IdYIeWajD6glUe4I "" "hello"
  PHPNotice:Undefined index: HTTP_USER_AGENT in /var/lib/zabbixsrv/alertscripts/WeiXin-Private-API/include/LeaWeiXinClient.phpon line 33
  PHP Notice:Undefined index: HTTP_USER_AGENT in /var/lib/zabbixsrv/alertscripts/WeiXin-Private-API/include/LeaWeiXinClient.phpon line 33
  stdClass Object
  (
   => stdClass Object
  (
   => 10706
               => customer block
  )
  

  )
  

  这是因为该用户48小时之内未与你互动,你不能主动发消息给他。你可以让该用户给你的微信公众号随便发条消息,再重新测试一遍就可以解决了!
  如果上面出现错误信息使得微信收不到测试信息,请分析下你的账号信息是否填写错误;如果不是,请检查你的公众号是否由于长时间没和用户互动被微信平台封锁了,这时请要求需要接受此报警信息的用户发送任意信息到你的公众账户上即可。如何还是不行,请将cache目录下的文件全部删除即可。
  注意:如果你更改了公众号密码,cache目录下的文件同样需要删除掉;
  

  第五步:配置Zabbix
  添加警示媒体:Administration --> Media types-->Create media type

点击Administration -> Users, 在Admin用户的Media选项卡中,配置微信好友ID:

此处的用户ID即为用户的tofakeid。
  添加报警动作:


  报警主机: {HOST.NAME}
  报警IP: {HOST.IP}
  报警时间: {EVENT.DATE}{EVENT.TIME}
  报警问题: {TRIGGER.NAME}
  报警状态: {TRIGGER.STATUS}
  报警级别: {TRIGGER.SEVERITY}
  报警详情: {ITEM.NAME}{ITEM.VALUE}
  事件ID:{EVENT.ID}
  

  第六步:报警测试
  关闭Zabbix_agent上的HTTP服务,报警如下:

当你解决了zabbix_agent上的HTTP故障后,微信也会给你发相应的提示!
  




页: [1]
查看完整版本: Zabbix的两种报警方式