79. Zabbix4.0------邮箱报警 |微信报警 | 钉钉报警

1. zabbix中的各种报警媒介

准备监控项

监控主机登录用户数量, 当用户登录数量超过5个就进行报警 --system.users.num


zabbix-server可验证:

添加监控项

(可以把 历史数据保留时长设置的小一些,注意信息类型结合实际)
---- {web01:system.users.num.last()}>5

创建触发器

(你可以监控一段时间的平均值,或者最近时刻值)

查看监控有没有添加成功:
添加Xshell窗口数量,并验证


1.2 自定义邮件报警


###创建媒介报警类型:

这里需要注意的是163邮箱需要开启SMTP服务,才能拿到授权码。默认端口25。其他邮箱同理:


自定义邮件收件人


点击右上角用户头像,到 用户基本资料 下的 报警媒介 下添加Email类型的报警媒介:



启用触发器的动作


到 配置 选项下的 动作 项中将状态修改为已启用的状态:

当触发“当前系统用户的登录数”触发器的时候,会向接收邮箱发送消息。这里可以查看已经发送的报警邮件:

邮箱也会接收到报警消息:



自定义邮件 报警信息


默认的邮件报警信息除了宏部分,其它均为英文且比较乱。所以,为了方便查看,需要自定义邮件报警信息:

自定义邮件报警信息模板:

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


替换:

当触发报警后,可以在 动作日志 中查看到发送给接收邮件的报警信息:

检查邮箱后发现邮箱也收到了对应的报警信息:



1.2 自定义微信报警

首先注册号企业微信:https://work.weixin.qq.com/
企业ID号码:  xxxxxxx
AgentId:       xxxxxxx
Secret:         xxxxxxx

写一个微信发送消息的脚本,这里需要用到企业微信。
需要修改企业微信ID、机器人密码和应用ID,这些在企业微信管理都可以看到。

#导入相关模块
import requests, os, sys, logging, json
#定义日志的格式
logging.basicConfig(
    filename=os.path.join('/tmp', 'weixin.log'),
    format='%(asctime)s - %(name)s - %(levelname)s - %(module)s:%(message)s',
    datefmt='%Y-%m-%d %H:%M:%S',
    level=logging.DEBUG,
)
#企业微信id
corpid = ''
#机器人密码
appsecret = ''
# 应用id
agentid = ''
# 获取accesstoken
token_url = 'https://qyapi.weixin.qq.com/cgi-bin/gettonken?corpid' + corpid + '&corpsecret=' + appsecret
req = requests.get(token_url)
accesstoken = req.json()['access_token']
# 发送消息
send_msg_url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + accesstoken
touser = sys.argv[1]
subject = sys.argv[2]
message = subject + '\n\n' + sys.argv[3]
params = {
    'touser': touser,
    'msgtype': 'text',
    'agentid': agentid,
    'text': {
        'content': message
    },
    'safe': 0
}

req = requests.post(send_msg_url, data=json.dumps(params))
#把结果记录的日志中
logging.info('sendto:' + touser + ';;subject:' + subject + ';;message:' + message)


#查看脚本应该放到哪个位置
[root@Zabbix-server ~]# grep -Ev '^$|#' /etc/zabbix/zabbix_server.conf
AlertScriptsPath=/usr/lib/zabbix/alertscripts


测试脚本开始向微信发送报警信息:
[root@Zabbix-server ~]# cd /usr/lib/zabbix/alertscripts/
[root@Zabbix-server alertscripts]# python weixin.py 用户名 标题 报警内容
------> 查看消息

报错:
NO module  named  requests
系统缺失python代码需要加载的模块信息
解决: 
yum install python pip
pip  install requests==version (可以安装指定版本)


创建微信报警媒介(指定路径下的脚本名称要写对):

--->右上角---->报警媒介---->指定收件人:

添加完成后启用微信报警媒介,可以暂时把Email报警媒介停用:

多开几个窗口 出发报警 测试


1.3 自定义钉钉报警


自定义机器人----->添加工作群组

自定义机器人
关键字:zabbix
wehook:xxx



准备连dingding信平台实现报警脚本到该目录下
/usr/local/zabbix/lib/zabbix/alertscripts


进入到/usr/local/zabbix/alertscripts下编写dingding.py脚本(脚本中包含钉钉机器人的webhook值):
[root@SrtAly120 ~]# cd /usr/local/zabbix/lib/zabbix/alertscripts
[root@SrtAly120 alertscripts]# cat dingding.py

#!/usr/bin/env python
#coding:utf-8
#zabbix钉钉报警
import requests,json,sys,os,datetime
webhook=""      #这里改为自己创建的机器人的webhook的值
user=sys.argv[1]
text=sys.argv[3] + "\n\n" + 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/log/dingding.log"):
    f=open("/usr/local/zabbix/log/dingding.log","a+")
else:
    f=open("/usr/local/zabbix/log/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()

: set ff 查看脚本格式   (doc ./不能直接执行no such of dirctor 需要指定python解释器)


赋予脚本执行权限
[root@SrtAly120 alertscripts]# chmod +x dingding.py
创建上面脚本中的日志路径(脚本日志属组可能是root,需要该为zabbix,不会报错)
[root@SrtAly120 alertscripts]# mkdir /usr/local/zabbix/log/
[root@SrtAly120 alertscripts]# t ouch /usr/local/zabbix/log/dingding.log
[root@SrtAly120 alertscripts]# chown zabbix.zabbix /usr/local/zabbix/log/dingding.log


手动测试脚本是否可以正常发送消息
这个条文档记录的测试信息,忽略
[root@SrtAly120 alertscripts]# ./dingding.py 电话号码 zabbix_test "测试下"(关键子一定要有)


1.管理--->报警媒介类型--->创建报警媒介:
脚本传参的信息: zabbix宏 --- 内置变量

	{ALERT.SENDTO}       接收信息人员地址
	{ALERT.SUBJECT}      发送信息标题情况
	{ALERT.MESSAGE}      发送消息内容情况
  1. 添加收件人
    小人头 --- 报警媒介 --- 添加邮件报警收件人信息
posted @ 2020-07-17 18:47  HSping  阅读(254)  评论(0编辑  收藏  举报