分布式监控系统Zabbix3.4-钉钉告警配置记录

本文介绍如何通过自定义机器人将Zabbix告警信息整合到钉钉群聊中,包括创建钉钉机器人、配置Zabbix告警脚本及设置监控界面等步骤。

 

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

一. 钉钉机器人创建
登录钉钉客户端,创建一个群,把需要收到报警信息的人员都拉到这个群内.然后点击群右上角的"群机器人"->"添加机器人"->"自定义",记录该机器人的webhook值!

二. Zabbix设置

[root@zabbix01 ~]# cat /usr/local/zabbix/etc/zabbix_server.conf|grep AlertScriptsPath
AlertScriptsPath=/usr/local/zabbix/monitor_scripts

登录到/usr/local/zabbix/monitor_scripts下编写dingding.py脚本(脚本中包含钉钉机器人的webhook值):
[root@zabbix01 ~]# cd /usr/local/zabbix/monitor_scripts/

[root@zabbix01 monitor_scripts]# cat dingding.py 
#!/usr/bin/env python
#coding:utf-8
#zabbix钉钉报警
import requests,json,sys,os,datetime
webhook="https://oapi.dingtalk.com/robot/send?**********************************************"
user=sys.argv[1]
text=sys.argv[3]
data={
    "msgtype": "text",
    "text": {
        "content": text
    },
    "at": {
        "atMobiles": [
            user
        ],
        "isAtAll": False
    }
}
headers = {'Content-Type': 'application/json'}
x=requests.post(url=webhook,data=json.dumps(data),headers=headers)
if os.path.exists("/usr/local/zabbix/logs/dingding.log"):
    f=open("/usr/local/zabbix/logs/dingding.log","a+")
else:
    f=open("/usr/local/zabbix/logs/dingding.log","w+")
f.write("\n"+"--"*30)
if x.json()["errcode"] == 0:
    f.write("\n"+str(datetime.datetime.now())+"    "+str(user)+"    "+"发送成功"+"\n"+str(text))
    f.close()
else:
    f.write("\n"+str(datetime.datetime.now()) + "    " + str(user) + "    " + "发送失败" + "\n" + str(text))
    f.close()


创建上面脚本中的日志路径:
[root@zabbix01 monitor_scripts]# touch /usr/local/zabbix/logs/dingding.log
[root@zabbix01 monitor_scripts]# chown zabbix.zabbix dingding.py 
[root@zabbix01 monitor_scripts]# chmod 755 dingding.py 
[root@zabbix01 monitor_scripts]# chown zabbix.zabbix /usr/local/zabbix/logs/dingding.log 


手动测试脚本发信是否正常:
这个条文档记录的测试信息,忽略
[root@zabbix01 monitor_scripts]# ./dingding.py test 13611027803 "这个条测试信息,忽略"          

===========================================================
注意:该脚本要求至少python2.6.6版本,且具有requests模块.

否则会报错:
Traceback (most recent call last):
  File "./dingding.py", line 4, in <module>
    import requests,json,sys,os,datetime
ImportError: No module named requests


解决办法:
[root@zabbix01 monitor_scripts]# yum install python-pip
[root@zabbix01 monitor_scripts]# pip -v
[root@zabbix01 monitor_scripts]# pip install requests 

===========================================================

钉钉上收到的测试信息如下:

三. Zabbix监控界面设置

1) 创建报警媒介.  三个参数分别是:ALERT.SENDTO      ALERT.SUBJECT      ALERT.MESSAGE

2) 用户添加报警媒介
收件人是钉钉上的手机号码.这里使用Admin管理员用户,在Admin用户的"报警媒介"里添加收件人信息
特别注意:这里只需要添加钉钉群里的任何一个成员的手机号码即可,即添加一个收件人,这样在机器人群里成员都能看到告警信息.
如果添加多个收件人,则机器人群里就会发送多个告警信息,一个收件人发一条信息. 

3) 添加动作
动作里的报警信息和恢复信息都发送给Admin用户.

操作
默认接收人:{TRIGGER.STATUS}: {TRIGGER.NAME}
默认信息:
告警主机:{HOST.NAME}
主机IP: {HOST.IP}
告警时间:{EVENT.DATE} {EVENT.TIME} 
告警等级:{TRIGGER.SEVERITY} 
告警信息:{TRIGGER.NAME}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态: {TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID: {EVENT.ID}

恢复操作(确认操作也是一样):
默认接收人:{TRIGGER.STATUS}: {TRIGGER.NAME}
默认信息:
告警主机:{HOST.NAME}
主机IP: {HOST.IP}
告警时间:{EVENT.DATE} {EVENT.TIME} 
告警等级:{TRIGGER.SEVERITY} 
告警信息:{TRIGGER.NAME}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态: {TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID: {EVENT.ID}

然后进行测试,比如关闭一台被监控机器的10050端口,过一会儿,查看下钉钉上的报警信息,如下:

还可以查看dingding.log日志,看看告警信息发送情况:

转载于:https://www.cnblogs.com/kevingrace/p/9579282.html

一、prometheus简介 Prometheus是一个开源的系统监控和告警系统,现在已经加入到CNCF基金会,成为继k8s之后第二个在CNCF维护管理的项目,在kubernetes容器管理系统中,通常会搭配prometheus进行监控,prometheus支持多种exporter采集数据,还支持通过pushgateway进行数据上报,Prometheus再性能上可支撑上万台规模的集群。 二、prometheus架构图 三、prometheus组件介绍 1.Prometheus Server: 用于收集和存储时间序列数据。 2.Client Library: 客户端库,检测应用程序代码,当Prometheus抓取实例的HTTP端点时,客户端库会将所有跟踪的metrics指标的当前状态发送到prometheus server端。 3.Exporters: prometheus支持多种exporter,通过exporter可以采集metrics数据,然后发送到prometheus server端 4.Alertmanager: 从 Prometheus server 端接收到 alerts 后,会进行去重,分组,并路由到相应的接收方,发出报警,常见的接收方式有:电子邮件,微信,钉钉, slack等。 5.Grafana:监控仪表盘 6.pushgateway: 各个目标主机可上报数据到pushgatewy,然后prometheus server统一从pushgateway拉取数据。 四、课程亮点 五、效果图展示 六、讲师简介 先超(lucky):高级运维工程师、资深DevOps工程师,在互联网上市公司拥有多年一线运维经验,主导过亿级pv项目的架构设计和运维工作 主要研究方向: 1.云计算方向:容器 (kubernetes、docker),虚拟化(kvm、Vmware vSphere),微服务(istio),PaaS(openshift),IaaS(openstack)等2.系统/运维方向:linux系统下的常用组件(nginx,tomcat,elasticsearch,zookeeper,kafka等),DevOps(Jenkins+gitlab+sonarqube+nexus+k8s),CI/CD,监控(zabbix、prometheus、falcon)等 七、课程大纲
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值