zabbix配置钉钉告警

一、安装zabbix服务端

Linux系统上搭建,配置前先安装好apache或nginx和mysq或PostgreSQL数据库;

之后按照官网给出的各个系统版本对应的安装步骤安装zabbix。

官网安装步骤地址:https://www.zabbix.com/cn/download?zabbix=5.4&os_distribution=centos&os_version=8&db=mysql&ws=apache

具体步骤参见官网。

二、安装zabbix客户端

在被监控机上安装zabbix客户端

yum install -y zabbix-agent

之后修改agent配置文件

vim /etc/zabbix/zabbix_agentd.conf

将以下三行取消注释,并将IP地址改成自己zabbix服务端的IP即可。

Server=203.57.202.125
ServerActive=203.57.202.125
ListenPort=10050

三、登录zabbix网页端

  1. 如机器公网IP没有备案,无法使用默认的80端口,需要修改 /etc/nginx/conf.d/zabbix.conf文件

如使用apache也需要修改默认的监听端口和主机IP。

将以上两项修改为自定义的端口和自己的公网IP

  1. 默认初始       账号:Admin

      密码:zabbix

  1. 添加要被监控的主机

之后填写必填选项,Interfaces,之后在模板中选择想要监控的系统信息添加即可。

四、配置钉钉机器人

点击右上角加号=>发起群聊=>同学群=>将接受告警的人员拉入群聊。

点击刚刚创建的群聊,然后点击聊天消息界面右上角的群设置按钮=>智能群助手

在弹出的界面点击添加机器人=>自定义(通过webhook接入自定义服务)=>添加到刚才创建的群组=>安全设置选择自定义关键词=>将关键词设置为告警二字,完成即可。

留存Webhook地址一会儿使用。

五、配置监控脚本

默认存放zabbix脚本的目录为: /usr/lib/zabbix/alertscripts/

  1. 切换到该目录下,创建dingding.py脚本
cat > /usr/lib/zabbix/alertscripts/dingding.py <<EOF
#说明:以下脚本只要将webhook改为你自己的webhook值即可,其它的不需要改变。
#!/usr/bin/python
#-*- coding: utf-8 -*-
#zabbix钉钉报警
import requests,json,sys,os,datetime
webhook="https://oapi.dingtalk.com/robot/send?access_token=feb43aea482d9da72e781d92dbfc074f701642a166f31194ff347954f500a404"
#说明:这里改为自己创建的机器人的webhook的值
user=sys.argv[1]
#发给钉钉群中哪个用户
text=sys.argv[3]
#发送的报警内容
data={
"msgtype": "text",
"text": {
"content": text
},
"at": {
"atMobiles": [
user
],
"isAtAll": False
}
}
#钉钉API固定数据格式
headers = {'Content-Type': 'application/json'}
x=requests.post(url=webhook,data=json.dumps(data),headers=headers)
if os.path.exists("/var/log/zabbix/dingding.log"):
f=open("/var/log/zabbix/dingding.log","a+")
else:
f=open("/var/log/zabbix/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()
#将发送的告警信息写入本地日志/var/log/zabbix/dingding.log中
EOF
  1. 将此脚本添加执行权限。
  2. 创建日志文件
touch /var/log/zabbix/dingding.log
chown zabbix.zabbix /var/log/zabbix/dingding.log
  1. 测试脚本是否正常
./dingding.py dingding test "告警,测试配置是否正常"

参数说明:

dingding:群组里接收消息的任意一人的钉钉号

test:这里因脚本中没有设置接收参数,所以无实际意义,仅仅起到变量占位的作用。

告警,测试配置是否正常:这段文字中为告警消息中显示的信息,必须包含刚才机器人安全设置中的关键词(告警)否则将不会收到消息。

报错解决:

如报错:ImportError: No module named requests

解决办法:

安装requests模块

pip install --upgrade pip
pip install requests

如pip无法使用,检查自己的python版本,如为python3.x,请使用   pip3  install requests

再次测试:

如未收到消息,也可到  /var/log/zabbix/dingding.log中查看日志信息。

六、配置zabbix告警

6.1 创建报警媒介类型

脚本参数:

{ALERT.SENDTO}

#对应脚本中的,user=sys.argv[1](发给钉钉群中哪个用户)。

{ALERT.SUBJECT}

#发送的信息的标题,在”报表”的”动作日志”中可以看到。

{ALERT.MESSAGE}

#对应脚本中的,text=sys.argv[3](发送的报警内容)。

6.2 创建报警动作

勾选需要的触发器,选择,添加。

参数解读:

“主题”对应”钉钉告警”媒介中的:{ALERT.SUBJECT}

“消息”对应”钉钉告警”媒介中的:{ALERT.MESSAGE}

主题:

故障名称(触发器名称):{EVENT.NAME}

消息:

告警主机:{HOSTNAME1}

告警时间:{EVENT.DATE} {EVENT.TIME}

告警等级:{TRIGGER.SEVERITY}

告警信息:{TRIGGER.NAME}

告警项目:{TRIGGER.KEY1}

问题详情:{ITEM.NAME}:{ITEM.VALUE}

当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}

事件ID:{EVENT.ID}

恢复操作基本相同,添加细节操作

主题:

故障恢复:{EVENT.NAME}

消息:

恢复主机:{HOSTNAME1}

恢复时间:{EVENT.DATE}{EVENT.RECOVERY.TIME}

主机IP:{HOST.IP}

告警项目:{TRIGGER.KEY1}

问题详情:{ITEM.NAME}:{ITEM.VALUE}

当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}

事件ID:{EVENT.ID}

6.3 给用户添加报警媒介

七、测试

添加一条触发器

添加成功后,在被监控机上停掉zabbix-agent,查看是否可以收到钉钉告警消息。

成功!!!

给TA买糖
共{{data.count}}人
人已赞赏
Linux技术杂谈运维宝典

Windows搭建FTP服务器

2021-9-22 15:06:09

Linux技术杂谈运维宝典

Linux创建swap分区

2021-9-28 17:00:46

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索