centos7.6实战部署 zabbix4.0 通过 钉钉 发送告警信息

运维老师

共 1848字,需浏览 4分钟

 ·

2021-06-16 10:37

环境:
zabbix版本:4.0 LTS

系统版本:CentOS 7.6

Python版本:3.6.0
一、添加Media Types

9fdaeac21e8e9505d6f73b50dcfe869f.webp

Name:自定义的媒介名称


Type:Scipt 脚本


Scipt name :脚本名称


Scipt parameters : 传递给脚本的参数。(该参数可以在后面的Actions部分自定义)。这里我们就使用了一个内建参数{ALERT.MESSAGE}。

二、添加Users

这里我们使用已有的Admin账户来关联告警媒介DingTalk



7455a4ab0ca93432e6cd2c860d1c0373.webp

a7df4967aebe8ee7d41d2c636f16cc7b.webp

点击添加按钮,弹出如下

58e328a08b56674a8ca900444d143e62.webp

Type:选择前面定义的 Ding Talk


Send to : 任意填写什么内容。(本来这个内容与媒介内建变量{ALERT.SENDTO}对应,但是我们前面没有使用就不管它。)

三、添加Actions

本部分定义发送消息的具体内容以及在什么情况下发送消息。


这里我们选择与Triger进行关联,即在某些Triger触发的情况下执行发送动作



c93ddb8dbaa28538b5a55492cf5c807d.webp

输入自定义的动作名称,添加一个新条件,这里是 触发级别 大于等于 平均 ,记得点击Add按钮

1f1569d82674a984461df9da978b0624.webp


操作(Operations):


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

内容:

{

告警主机:{HOST.NAME}

告警信息:{TRIGGER.NAME}

告警项目:{ITEM.NAME}

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

当前状态:故障 值={ITEM.VALUE}

故障已持续{EVENT.AGE},请尽快处理

事件ID:{EVENT.ID}

}


恢复操作 (Revovery Operations):


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

内容:

{

告警信息:{TRIGGER.NAME}

告警项目:{ITEM.NAME}

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

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

当前状态:{TRIGGER.STATUS} 值={ITEM.VALUE}

故障共持续{EVENT.AGE}

事件ID:{EVENT.ID}

}


确认操作(Update Operations) :


标题:服务器:{HOST.NAME}: 报警确认!

内容:

{

确认信息:"{ACK.MESSAGE}"

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

确认人:{USER.FULLNAME}

时间:{ACK.DATE} {ACK.TIME}

当前的问题是: {TRIGGER.NAME}

时间ID:{EVENT.ID}

}

这里我们介绍Operations


设置完Default message后,点击New添加新的条件,主要是设置告警

四、注册钉钉


1.注册钉钉账户


2.创建一个群。


3.创建机器人

805df7847501781ba111451055dfbc32.webp

9b1c4e6b871e8986414ee61a87d16889.webp

7df5b3743017b307067c2bd02fe4d0de.webp

记住这个webhook,后面告警脚本需要用到

五、添加告警脚本
脚本路径在zabbix_server.conf文件里面所指定AlertScriptsPath目录下。

脚本AlertDingTalk.py如下:
#!/usr/bin/python

#!/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=xxxxxxxxxxxxxxxxxxxx” #填入上面得到的webhook


def msg(text):

json_text= {

“msgtype”: “text”,

“text”: {

“content”: text

},

“at”: {

“atMobiles”: [

“xxxxxxxxxxxxx”

],

“isAtAll”: False

}

}

print(requests.post(api_url,json.dumps(json_text),headers=headers).content)


if name == ‘main’:

text = sys.argv[1]

msg(text)

五、测试

停掉客户端的zabbix-agent,即可收到如下告警消息

65accc0bc1cdc454ae7dd8e804ef0f39.webp



浏览 26
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报