19
2022
11
17:13:15

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

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

https://www.cnblogs.com/sun-long-fei/p/14037280.html

 


实现邮件报警

网页版邮箱中开启 POP3/SMTP/IMAP

 

生成授权码并记录

 

 

Server端安装配置邮件服务器

  1、Yum安装邮件服务器

1
2
yum -y install mailx dos2unix
mailx -V

  2、 编辑邮件配置

1
2
3
4
5
vim /etc/mail.rc
set bsdcompat
set from=S13467005509@163.com smtp=smtp.163.com
set smtp-auth-user=S13467005509@163.com smtp-auth-password=上面生成的授权码
set smtp-auth=login

  3、测试是否有效

1
echo "blingbling" | mail -s "test mail" S13467005509@163.com

  邮箱中查看结果

  4、引用邮件脚本

1
2
3
4
5
6
7
8
9
10
vim /usr/local/zabbix/etc/zabbix_server.conf
AlerScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts #结尾插入
vim /usr/local/zabbix/share/zabbix/alertscripts/mail.sh
#!/bin/bash
#export.UTF-8
bt=$2  #定义发件标题和收件人
sjr=$1
FILE=/tmp/mailtmp.txt  #定义文件路径
echo "$3" >$FILE
/usr/bin/dos2unix -k $FILE  #使用 dos2unix 命令转换字符,避免收到邮件不显示正常邮件内容而出现 ATT00001.bin 的错误;<br>/bin/mail -s "$bt" "$sjr" <$FILE  #执行邮件发送命令

  5、增加权限并测试

1
2
3
4
5
6
chmod 777 /usr/local/zabbix/share/zabbix/alertscripts/mail.sh
chown zabbix.zabbix /usr/local/zabbix/share/zabbix/alertscripts/mail.sh
touch /tmp/mailtmp.txt
chmod 777 /tmp/mailtmp.txt
chown zabbix.zabbix /tmp/mailtmp.txt
sh /usr/local/zabbix/share/zabbix/alertscripts/mail.sh S13467005509@qq.com "blingbling" "bingbing"    #前者标题,后者内容

 

 

实现钉钉报警

注册企业版钉钉并进入

钉钉中新建自定义机器人

记录所需webhook

 

server端 添加钉钉消息发送脚本

  1、下载相关依赖

1
2
yum -y install python-pip<br>pip -V
pip install requests

  2、添加脚本及权限

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
vim /usr/local/zabbix/share/zabbix/alertscripts/Email.dingding.py
#!/usr/bin/env python
#coding:utf-8
#zabbix  钉钉报警
import requests,json,sys,os,datetime
webhook="https://oapi.dingtalk.com/robot/send?access_token=4b974339e84a3dfba612a4dae75461797f036566df6c558e47c35ce6bbc28ded"
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("/tmp/zabbix_dingding.log"):
    f=open("/tmp/zabbix_dingding.log","a+")
else:
    f=open("/tmp/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()
chmod +x /usr/local/zabbix/share/zabbix/alertscripts/Email.dingding.py

  3、测试

1
python /usr/local/zabbix/share/zabbix/alertscripts/Email.dingding.py 13467005509 test zabbix”blingbling“  #前者脚本类型,zabbix 机器人关键字 后者内容

 

 

实现微信报警

注册企业版微信并登陆网页后台

  1、我的企业中记录企业ID

添加告警应用

记录Agenttid及Secret

添加部门

  1、添加子部门

   2、移入用户

   3、记录部门ID

server端 添加告警脚本

  1、编写脚本并加权限

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
vim /usr/local/zabbix/share/zabbix/alertscripts/Email.weixin.sh
#!/bin/bash
CorpID='ww9820802e5b147bd3'        #我的企业下面的CorpID
Secret='yxPTWR0c7ymKcmxIy0IqjkwQ-h7PnrGme_IF4nknYs4'           #创建的应用那有Secret
GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CorpID&corpsecret=$Secret"
Token=$(/usr/bin/curl -s -G $GURL |awk -F\": '{print $4}' |awk -F\" '{print $2}')
#echo $Token
PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Token"
  
function body(){
        local int agentid=1000003   #改为AgentId 在创建的应用那里看
        local UserID="SunLongFei"             #发送的用户位于$1的字符串
        local PartyID=4            #第一步看的通讯录中的部门ID
        local Msg=$(echo "$@" | cut -d" " -f3-)
        printf '{\n'
        printf '\t"touser": "'"$UserID"\"",\n"
        printf '\t"toparty": "'"$PartyID"\"",\n"
        printf '\t"msgtype": "text",\n'
        printf '\t"agentid": "'"$agentid"\"",\n"
        printf '\t"text": {\n'
        printf '\t\t"content": "'"$Msg"\""\n"
        printf '\t},\n'
        printf '\t"safe":"0"\n'
        printf '}\n'
}
/usr/bin/curl --data-ascii "$(body $1 $2 $3)" $PURL<br>chmod +x /usr/local/zabbix/share/zabbix/alertscripts/Email.weixin.sh

   2、测试

1
sh /usr/local/zabbix/share/zabbix/alertscripts/Email.weixin.sh  blingbling

web端添加邮件,钉钉,微信相关告警信息

  1、管理 > 报警媒介类型 > 创建

   2、添加相关告警

      邮件

  输入创建的报警媒介类型的名称,指定类型为脚本的方式,并且输入 zabbix_server 端/usr/local/zabbix/share/zabbix/alertscripts 目录下的脚本名称,确保脚本的归属是 zabbix,并且脚本的权限是 777,下边设置脚本参数,也就是发送邮件,微信,钉钉的语法:脚本   收件人 标题 内容,必须严格按照此标准填写;
 
1
2
3
$1 {ALERT.SENDTO}
$2 {ALERT.SUBJECT}
$3 {ALERT.MESSAGE}

 

 

       微信

 

 

       钉钉

   3、管理 > 用户 > 点击Admin

   4、报警媒介 > 添加类型收件人

       邮件(下方改为邮件警告

       微信

       钉钉

   5、成功后点击更新

   6、配置 > 动作 > 创建动作

   7、动作名称建议英文

   8、三者添加的操作及发送到的用户如出一辙,如有需要,另自行修改

1
2
3
4
5
6
7
8
9
10
11
12
警告模版
服务器:{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} <br>}

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
恢复操作模版
服务器:{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}
}

  添加用户后点击下方添加如上下图所示

1
2
3
4
5
6
7
8
9
10
11
确认操作模版
服务器:{HOST.NAME}: 报警确认
{
确认人:{USER.FULLNAME}
时间:{ACK.DATE} {ACK.TIME}
确认信息如下:
"{ACK.MESSAGE}"
问题服务器 IP:{HOSTNAME1}
问题 ID:{EVENT.ID}
当前的问题是: {TRIGGER.NAME}
}

 

 完成效果图

测试三者报警可用性

1
2
cd /boot/
dd if=/dev/zero of=test bs=1M count=1800

 

 

 

 

 

恢复后继续查看

1
rm -rf test

 

 

 至此搭建测试完成




推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://hqyman.cn/post/3047.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: