abbix可以通过多种方式把告警信息发送到指定人,常用的有邮件,短信报警方式,但是越来越多的企业开始使用zabbix结合微信、钉钉作为主要的告警方式,这样可以及时有效的把告警信息推送到接收人,方便告警的及时处理。

一、Zabbix整合微信实现实时告警

1.1、微信企业号申请

要实现将告警信息发送到微信,需要申请一个企业微信号,当然个人也可以申请,登录http://work.weixin.qq.com/, 然后选择注册即可,如下图所示:

这是注册企业微信的步骤,企业名称可以填写企业、政府或组织,个人就选组织,接着需要选择管理员姓名和电话号码,通过短信验证后,还需要管理员通过微信扫描绑定企业号,以后就可以通过管理员的微信登录企业号管理后台。

添加完成,点击“注册”,然后选择“进入管理后台”,即可进入企业微信后台,如下图所示:

进入后台,接着选择导航栏中的“通讯录”,在企业微信中添加人员,如下图所示:

可通过手动添加成员,或者微信邀请的方式添加成员。成员添加后,可以查看成员详情,如下图所示:

这里需要注意,每个成员的账号需要记录下来,后面在zabbix配置中会用到。并且每个成员只有关注微工作台后,才能在微信中收取企业微信的告警信息。

那么如何关注微工作台呢,选择导航中“连接微信”选项,如下图所示:

选择左侧导航中的微工作台,右边就会出现微工作台的介绍,这里重点了解一下微工作台的用途,通过微工作台,企业微信成员无需下载企业微信客户端,直接用微信扫码关注微工作台,即可在微信中接收企业通知和使用企业应用。
如何关注微工作台呢,如下图所示:

在上图邀请关注中,有个二维码,让每个成员扫描这个二维码即可关注微工作台,此外还可以对微工作台进行各种设置。

接着,选择导航栏中的“应用与小程序”,开始创建一个应用,如下图所示:

这里选择自建应用,然后开始创建一个应用,如下图所示:

这里添加应用logo、应用名称和介绍,还有这个应用的可见范围,选择对应的人员即可。应用创建成功之后,会显示应用信息,如下图所示:


这里重点记录下此应用的AgentId和Secret,后面会在zabbix配置中用到。

最后,点击导航中“我的企业”,记录下企业ID这个信息,如下图所示:

最下面的企业ID后面这个字符串我们也需要记录下来,后面zabbix配置中会用到。
到此为止,关于企业微信的注册和要配置的内容已经介绍完毕了。

1.2、获取微信告警脚本

要将告警信息发送给微信,就需要一个发送脚本,可从如下地址下载这个脚本:

[root@zabbixserver ~]#wget https://www.ixdba.net/zabbix/weixin_linux_amd64

然后将此脚本放在zabbix server的alertscripts目录下,我们这里是/usr/local/zabbix/share/zabbix/alertscripts,接着做一些可执行权限修改:

[root@zabbixserver  alertscripts]# mv weixin_linux_amd64 weixin
[root@zabbixserver alertscripts]# chmod 755 weixin

最后,修改zabbix server配置文件zabbix_server.conf,添加如下内容:

AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts
这样设置后,zabbix web端就可以自动获取到脚本。

接下来,先测试一下这个脚本是否可用,可执行如下命令测试:

[root@zabbixserver alertscripts]# ./weixin --corpid=ww962865bb7f121382  --corpsecret=FFRXeC9TAFIaYzi50cQQg6RP8CFVsIEB3Ef1rcWW1f0   --msg="您好,这是微信告警测试" --user=zhouxingxing  --agentid=1000003
{"errcode":0,"errmsg":"ok","invaliduser":""}

其中:

corpid= 企业号里面的企业ID。
corpsecret:这里就是我们自建应用里面的Secret的id。
agentid:我们自建应用里面的AgentId。
msg:要发送的消息内容。
user:邀请用户的账号,注意是在微信企业号里面成员详情页的账号。
如果执行完毕没有报错,那么我们的微信就应该收到了这条命令的告警信息了。

1.3、zabbix web上配置微信告警

打开zabbix web,选择导航栏上面的“管理”,然后选择“报警媒介类型”,接着点击右上角“创建媒体类型”,如下图所示:

这里有几个需要注意的,就是corpid、corpsecret和agentid,这三个参数的值都是从微信企业号后台获取的,上面已经做过特别指出了。

另外,报警类型选择脚本,脚本名称就是上面下载的那个脚本,我们重命名为winxin,那么这里就填入weixin即可。

接着,选择导航栏上面的“管理”,然后选择“用户”,可以在现有的用户下编辑,也可以新建用户,这里我们以管理员用户Admin为例,点击用户进入编辑页面,选择“报警媒介”,点击下面的添加按钮,添加一个报警类型为“微信告警”,如下图所示:

这里需要注意这个“收件人”的设置,这个收件人就是在微信企业号后台中,通讯录下面的成员详情页面看到的账号,一定不要写错了。

最后一步,是配置一个报警动作,点击导航栏上面的“配置”,然后选择“动作”,点击右上方事件源选择“触发器”,然后点击“创建动作”,如下图所示:

这里自定义一个动作名称,然后点击上面的“操作”按钮,如下图所示:

在这个界面下,“默认操作步骤持续时间”就选择默认的1小时即可,默认标题和消息内容模板可配置如下:

默认标题:

服务器:{HOST.NAME}发生: {TRIGGER.NAME}故障!

消息内容:

告警主机:{HOST.NAME}
告警地址:{HOST.IP}
监控项目:{ITEM.NAME}
监控取值:{ITEM.LASTVALUE}
告警等级:{TRIGGER.SEVERITY}
当前状态:{TRIGGER.STATUS}
告警信息:{TRIGGER.NAME}
告警时间:{EVENT.DATE} {EVENT.TIME}
事件ID:{EVENT.ID}

最后的那个“操作”,按照如下配置即可:

这样,故障时发生告警信息配置完成,接着配置故障恢复后的信息发送格式,点击上面的“恢复操作”按钮,如下图所示:

在这个界面下,默认标题和消息内容模板可配置如下:

默认标题:

服务器:{HOST.NAME}: {TRIGGER.NAME}已恢复!

消息内容:

告警主机:{HOST.NAME}
告警地址:{HOST.IP}
监控项目:{ITEM.NAME}
监控取值:{ITEM.LASTVALUE}
告警等级:{TRIGGER.SEVERITY}
当前状态:{TRIGGER.STATUS}
告警信息:{TRIGGER.NAME}
告警时间:{EVENT.DATE} {EVENT.TIME}
恢复时间:{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}
持续时间:{EVENT.AGE}
事件ID:{EVENT.ID}

最后的那个“操作”,按照如下配置即可:

至此,微信告警整合zabbix,配置完成。

1.4、测试微信告警功能

可以模拟一个监控项故障,然后测试告警信息是否能通过zabbix发送给微信,这里我们模拟一个mysql故障的恢复,检查告警信息是否能通过zabbix发送给微信,可点击zabbix web下的“报表”,然后选择“动作日志”,查看告警信息发送日志,如下图所示:

这个界面显示了告警日志是否发送成功,如果没有发送成功,可以看到具体的错误信息,然后根据错误排查即可。如果显示发送成功,那么我们的微信就能收到告警信息了,如下图所示:

这样,微信整合zabbix告警功能,成功实现。

二、Zabbix整合钉钉实现实时告警

2.1、关于钉钉机器人告警

钉钉类似于微信,但是偏向于办公方向,可以通过钉钉的群机器人功能,实现将告警信息通过机器人发送到钉钉群。

群机器人是钉钉群的高级扩展功能。群机器人可以将第三方服务的信息聚合到群聊中,实现自动化的信息同步。例如:通过聚合GitHub,GitLab等源码管理服务,实现源码更新同步;通过聚合Trello,JIRA等项目协调服务,实现项目信息同步。不仅如此,群机器人支持Webhook协议的自定义接入,支持更多可能性,例如:你可将运维报警提醒通过自定义机器人聚合到钉钉群。

zabbix整合钉钉告警,相比微信,要简单很多,几分钟内即可完成配置,下面详细介绍如下。

2.2、添加钉钉机器人

关于钉钉的注册很简单,这里不再过多介绍。注册完成登录到钉钉后,先发起一个群聊,加入需要接收钉钉告警信息的人员,如下图所示:

然后,创建一个群聊,开始选择需要添加的人员,如下图所示:

群聊创建完成后,接着就可以添加机器人到群里面了。点击用户下拉菜单,如下图所示:

在这里选择“机器人管理”,然后进入下图所示界面:

这里选择自定义机器人,通过webhook接入自定义服务,接着,开始添加一个机器人,如下图所示:

输入机器人名字,并指定一个已经存在的钉钉群,点击完成,机器人添加完毕,接着进入下图界面:

这里是设置webhook,将这个webhook地址复制记录下来,后面会用到。机器人配置到此结束。

2.3、获取钉钉告警脚本

这里我们定义了一个python脚本,命名为dingding.py,内容如下:

# vim /usr/local/zabbix/alertscripts/dingding.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
import requests
import json
import sys
import os headers = {'Content-Type': 'application/json;charset=utf-8'}
api_url = "https://oapi.dingtalk.com/robot/send?access_token=nwknfenfnfuflbufnoenwbjwek" #这个是webhook地址,修改为你的即可。 def msg(text):
json_text= {
"msgtype": "text",
"text": {
"content": text
},
}
print requests.post(api_url,json.dumps(json_text),headers=headers).content if __name__ == '__main__':
text = sys.argv[1]
msg(text)

这里通过python定义了一个告警脚本,此脚本可从如下地址下载:

[root@iivey ~]#https://www.ixdba.net/zabbix/dingding.zip

这个脚本中用到了requests,requests是python的一个HTTP客户端库,跟urllib,urllib2类似,如果你的服务器没有安装requests,需要通过如下方法安装一下:

[root@zabbixserver ~]#yum install python-pip
[root@zabbixserver ~]#pip install requests

最后,将此脚本放到zabbix server的alertscripts目录下,我们这里是/usr/local/zabbix/share/zabbix/alertscripts,接着做一些可执行权限修改:

[root@zabbixserver alertscripts]# chmod 755 dingding.py

最后,修改zabbix server配置文件zabbix_server.conf,添加如下内容:

AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts
这样设置后,zabbix web端就可以自动获取到脚本。

2.4、zabbix web上配置钉钉告警

打开zabbix web,选择导航栏上面的“管理”,然后选择“报警媒介类型”,接着点击右上角“创建媒体类型”,如下图所示:

这里有几个需要注意的,就是alert.message,这个是仅仅获取告警内容,另外,报警类型选择脚本,脚本名称就是上面下载的那个脚本,我们重命名为dingding.py,那么这里就填入dingding.py即可。

接着,选择导航栏上面的“管理”,然后选择“用户”,可以在现有的用户下编辑,也可以新建用户,这里我们以管理员用户Admin为例,点击用户进入编辑页面,选择“报警媒介”,点击下面的添加按钮,添加一个报警类型为“钉钉告警”,如下图所示:

这里需要注意这个“收件人”的设置,这个收件人输入“all”即可,这样,钉钉群下面的成员都能收到告警信息了。

最后一步,是配置一个报警动作,点击导航栏上面的“配置”,然后选择“动作”,点击右上方事件源选择“触发器”,然后点击“创建动作”,如下图所示:

这里自定义一个动作名称,然后点击上面的“操作”按钮,如下图所示:

在这个界面下,“默认操作步骤持续时间”就选择默认的1小时即可,默认标题和消息内容模板可配置如下:

默认标题:

故障{TRIGGER.STATUS},服务器:{HOST.NAME}发生: {TRIGGER.NAME}故障!

消息内容:

告警主机:{HOST.NAME}
告警地址:{HOST.IP}
监控项目:{ITEM.NAME}
监控取值:{ITEM.LASTVALUE}
告警等级:{TRIGGER.SEVERITY}
当前状态:{TRIGGER.STATUS}
告警信息:{TRIGGER.NAME}
告警时间:{EVENT.DATE} {EVENT.TIME}
事件ID:{EVENT.ID}

最后的“操作”细节就按照上图的选择即可。这样,故障时发生告警信息配置完成,接着配置故障恢复后的信息发送格式,点击上面的“恢复操作”按钮,如下图所示:

在这个界面下,默认标题和消息内容模板可配置如下:

默认标题:

恢复{TRIGGER.STATUS}, 服务器:{HOSTNAME1}: {TRIGGER.NAME}已恢复!

消息内容:

告警主机:{HOST.NAME}
告警地址:{HOST.IP}
监控项目:{ITEM.NAME}
监控取值:{ITEM.LASTVALUE}
告警等级:{TRIGGER.SEVERITY}
当前状态:{TRIGGER.STATUS}
告警信息:{TRIGGER.NAME}
告警时间:{EVENT.DATE} {EVENT.TIME}
恢复时间:{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}
持续时间:{EVENT.AGE}
事件ID:{EVENT.ID}

最后的那个“操作”细节,按照上图的选择即可。

至此,钉钉告警整合zabbix配置完成。

2.5、测试钉钉告警功能
可以模拟一个监控项故障,然后测试告警信息是否能通过zabbix发送给钉钉群,这里我们模拟一个mysql故障的恢复,检查告警信息是否能通过zabbix发送给钉钉群,可点击zabbix web下的“报表”,然后选择“动作日志”,查看告警信息发送日志,如下图所示:

这个界面显示了告警日志是否发送成功,如果没有发送成功,可以看到具体的错误信息,然后根据错误排查即可。如果显示发送成功,那么我们的钉钉就能收到告警信息了,如下图所示:

这样,钉钉整合zabbix告警功能,成功实现。

Zabbix通过与微信、钉钉整合实现实时告警的更多相关文章

  1. zabbix的搭建及操作(4)实现邮件,钉钉,微信报警

    实现邮件报警 网页版邮箱中开启 POP3/SMTP/IMAP 生成授权码并记录 Server端安装配置邮件服务器 1.Yum安装邮件服务器 yum -y install mailx dos2unix ...

  2. 用python写一个预警机器人(支持微信和钉钉)

    背景 线上的系统在运行中,发生故障时怎么及时的通过手机通知到相关人员?当然这是个很简单的需求,现有的方法有很多,例如: 如果我们用的云产品,那么一般都会有配套对应的监控预警功能,根据需要配置一下即可, ...

  3. zabbix报警-邮件-钉钉

    安装zabbix的时候已经配置了zabbix_server的脚本目录 AlertScriptsPath=/opt/app/zabbix/script 所以把邮件.钉钉.微信相关的脚本都放在/opt/z ...

  4. CabloyJS一站式助力微信、企业微信、钉钉开发 - 钉钉篇

    前言 现在软件开发不仅要面对前端碎片化,还要面对后端碎片化.针对前端碎片化,CabloyJS提供了pc=mobile+pad的跨端自适应方案,参见:自适应布局:pc = mobile + pad 在这 ...

  5. CabloyJS一站式助力微信、企业微信、钉钉开发 - 企业微信篇

    前言 现在软件开发不仅要面对前端碎片化,还要面对后端碎片化.针对前端碎片化,CabloyJS提供了pc=mobile+pad的跨端自适应方案,参见:自适应布局:pc = mobile + pad 在这 ...

  6. CabloyJS一站式助力微信、企业微信、钉钉开发 - 微信篇

    前言 现在软件开发不仅要面对前端碎片化,还要面对后端碎片化.针对前端碎片化,CabloyJS提供了pc=mobile+pad的跨端自适应方案,参见:自适应布局:pc = mobile + pad 在这 ...

  7. 钉钉机器人zabbix报警

    首先在钉钉群聊里添加一个自定义的机器人 并复制webhook的内容 https://oapi.dingtalk.com/robot/send?access_token=37e23308d1b84eb4 ...

  8. zabbix系列之九——添加钉钉告警

    一.添加钉钉机器人 1. 2. 复制webhook后面脚本用到:https://oapi.dingtalk.com/robot/send?access_token=36e69dd50bbcc54b7b ...

  9. zabbix钉钉报警

    我们在钉钉上建立群聊,然后在群聊上添加钉钉机器人: 编写,脚本需要放在zabbix 的alertscripts目录下(如果不知道该目录的位置,可以使用find命令查找) find / -iname a ...

随机推荐

  1. 比较器中的comparing方法以及涉及到的知识

    今天在学习Java核心技术集合程序清单9-3时遇到了问题. 代码如下 public class TreeSetTest { public static void main(String[] args) ...

  2. Oracle instant client免安装Oracle客户端配置

    不想安装几个G的完整版client,可以直接通过安装包安装的时候选择instant client,如果没有安装包,也可以直接去官网下载一个即时客户端,64位的windows包大小只有78MB左右 传送 ...

  3. 关于Prometheus监控的思考:多标签埋点及Mbean

    使用 grafana+prometheus+jmx 作为普通的监控手段,是比较有用的.我之前的文章介绍了相应的实现办法. 但是,按照之前的实现,我们更多的只能是监控 单值型的数据,如请求量,tps 等 ...

  4. 面试官问我:谈谈对Java GC的了解?回答完让我回家等消息....

    JVM的运行数据区 首先我简单来画一张 JVM的结构原理图,如下. 我们重点关注 JVM在运行时的数据区,你可以看到在程序运行时,大致有5个部分. 1.方法区 不止是存“方法”,而是存储整个 clas ...

  5. 从壹开始 [ Design Pattern ] 之一 ║ 设计模式开篇讲

    缘起 不说其他的没用的开场白了,直接给大家分享三个小故事,都来自于我的读者粉丝(我厚着脸皮称为粉丝吧

  6. systemd管理

    systemd是为改进传统系统启动方式而退出的Linux系统管理工具,现已成为大多数Linux发行版的标准配置 systemd与系统初始化 Linux系统启动过程中,当内核启动并完成装载跟文件系统后, ...

  7. Microsoft Dynamics CRM 批量上传web资源(非官方WebResourceUtility)并替换实体图标

    背景: 去年以前可以按照目录WebResourceUtility批量上传web资源,昨天发现用不了了,拿到WebResourceUtility源码改了一下都不是很方便,感觉官方写的太冗余,太长了,跟我 ...

  8. 【搞定 Java 并发面试】面试最常问的 Java 并发进阶常见面试题总结!

    本文为 SnailClimb 的原创,目前已经收录自我开源的 JavaGuide 中(61.5 k Star![Java学习+面试指南] 一份涵盖大部分Java程序员所需要掌握的核心知识.觉得内容不错 ...

  9. java变量与常量

    常量: 定义:程序运行过程中,不能再次该表的指 作用: 1.固定的值,代表计算过程中经常用到的值,便于计算 2.用来代表一个含义 键盘:8代表up 4代表left 6代表right  5代表down ...

  10. MYSQLnavicat绿色版工具下载

    MYSql远程连接工具navicat工具:https://pan.baidu.com/s/1RU_8FCX7yCseAFRhn4voAQ