千家信息网

Zabbix4.0(三)钉钉,邮件,微信报警

发表于:2024-11-27 作者:千家信息网编辑
千家信息网最后更新 2024年11月27日,一,zabbix 邮件报警设置原理:触犯告警器之后 可以配置相应的动作,在动作里可以发邮件、微信、钉钉、短信等。告警脚本的放置位置见配置/usr/local/zabbix/etc/zabbix_ser
千家信息网最后更新 2024年11月27日Zabbix4.0(三)钉钉,邮件,微信报警

一,zabbix 邮件报警设置
原理:触犯告警器之后 可以配置相应的动作,在动作里可以发邮件、微信、钉钉、短信等。
告警脚本的放置位置见配置/usr/local/zabbix/etc/zabbix_server.conf

LogFile=/usr/local/zabbix/zabbix_server.logDBHost=127.0.0.1DBName=zabbixDBUser=zabbixDBPassword=zabbixpwdDBPort=3306Timeout=30AlertScriptsPath=/usr/local/zabbix/alertscripts  ##触发脚本放置位置ExternalScripts=/usr/local/zabbix/externalscriptsLogSlowQueries=3000

python 邮件发送脚本

/usr/local/zabbix/alertscripts/zabbix_sendmail.py#!/usr/bin/python# -*- coding: utf-8 -*-from email.mime.text import MIMETextfrom email.header import Headerfrom smtplib import SMTP_SSLimport syssmtpaddr = 'smtp.qq.com'myemail='327627448@qq.com'     ##发送邮件的QQpassword='mypassword'         ##填写登陆客户端的授权码,在邮箱里生成同时需要打开POP3,IMAP服务#f = open('/usr/local/zabbix/.passwd','r')#password = f.readline().strip()recvmail=sys.argv[1]   ##发送邮件给谁subject=sys.argv[2]    ## 发送的主题content=sys.argv[3]   ##发送的内容msg = MIMEText("""%s"""%(content), "plain", "utf-8")    ##发送的内容msg['Subject'] = Header(subject, 'utf-8').encode()msg['From'] = myemailmsg['To'] =  recvmailtry:  smtp = SMTP_SSL( smtpaddr )  smtp.login(myemail, password)  smtp.sendmail(myemail, recvmail.split(','), msg.as_string())   smtp.quit()  print("success")except Exception as e:  print("fail: "+str(e))    ##增加执行权限,测试脚本是否运行正常能发送邮件    /usr/local/zabbix/alertscripts/zabbix_sendmail.py 1065236572@qq.com 'zabbix disk' 'content: disk > 90%'   

2,报警媒介设置邮件告警

脚本放置的名字,注意是放置在/usr/local/zabbix/alertscripts 目录下,添加三个接受的参数,发送给谁,主题是什么,内容是什么 这地方需要添加三个参数
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}

添加需要发送的用户媒介设置

发送执行的脚本,发送给谁,时间,级别,有多个 以逗号隔开

创建触发器动作 在模板或者主机里

设置触发器触发之后的动作(action)
出问题发送的内容 用户,执行的脚本

故障恢复之后动作 发送一封恢复的邮件


二,告警内容自定义和告警抑制
在报警内容加上自定义内容参数host.name host ip1
Default operation step duration 触发后的操作时间, 通过下面的steps 来实现操作抑制,例如 上面设置30s
步骤 4-4 那么 在4次步骤 4*30 2分钟之后才发送报警邮寄


三,微信告警
注册创建企业微信
在管理后台添加自建应用

创建好后 获取企业微信的agentid和secrct 填写于脚本

跟邮件一样 在同样位置添加微信报警脚本

vim /usr/local/zabbix/alertscripts/zabbix_wx.py#!/usr/bin/python# -*- coding: utf-8 -*-import jsonimport sysimport urllib,urllib2agentid = 'xxx'     ###微信自建应用IDcorpid = 'xxx'       ###微信企业ID 在我的企业里面查看corpsecret = 'xxx'    ### 微信自建应用secret#get tockengettoken_url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + corpsecrettoken_file = urllib2.urlopen(gettoken_url)token_data = token_file.read().decode('utf-8')token_json = json.loads(token_data)my_token = token_json['access_token']#send wechart touser=sys.argv[1]  #many user: 'zhangsan|wangwu'content=sys.argv[2] #contentpost_content = {        "touser":touser,        "agentid":agentid,        "msgtype": "text",        "text":{                "content":content,        }}json_content = json.dumps(post_content)url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + my_tokenresponse = urllib2.urlopen(url,json_content)print(response.read().decode('utf-8'))##测试/usr/local/zabbix/alertscripts/zabbix_wx.py '通讯录里面的微信名' 'disk is not enough'

添加 创建2个变量 发送给谁 发送的内容

报警之后的action(注意更改发送的脚本名称)

user添加 注意填写发送名称,还有报警级别

四:钉钉告警
钉钉告警跟微信告警类似
告警脚本/usr/local/zabbix/alertscripts/

###告警机器人脚本###安装pip,安装request模块yum -y install epel-releaseyum -y install python-pippip install requests#!/usr/bin/env pythonimport jsonimport requestsimport sysdef send_msg(url, remiders, msg):    headers = {'Content-Type': 'application/json; charset=utf-8'}    data = {        "msgtype": "text",        "at": {            "atMobiles": remiders,            "isAtAll": False,        },        "text": {            "content": msg,        }    }    r = requests.post(url, data=json.dumps(data), headers=headers)    return r.textif __name__ == '__main__':    msg = sys.argv[1]    remiders = []    url = '告警机器人webrooturl'    print(send_msg(url, remiders, msg))

相关配置参数(发送用户填写admin即可)

钉钉工作通知告警脚本

#!/usr/bin/python# -*- coding: utf-8 -*-#curl 'https://oapi.dingtalk.com/gettoken?corpid=xxx&corpsecret=xxx'import json,urllib2,sysappkey = '钉钉自建应用查看'appsecret = '钉钉自建应用查看'agentid = 钉钉自建应用查看'touser = sys.argv[1]content = sys.argv[2]tockenurl = 'https://oapi.dingtalk.com/gettoken?corpid=' + appkey + "&corpsecret=" + appsecrettockenresponse = urllib2.urlopen(tockenurl)tockenresult = json.loads(tockenresponse.read().decode('utf-8'))tocken =  tockenresult['access_token']sendurl = 'https://oapi.dingtalk.com/message/send?access_token=' + tockenheaders = {        'Content-Type':'application/json'}main_content = {        "touser": touser,        "toparty": "",        "agentid": agentid,        "msgtype": "text",        "text": {                "content": content        }}main_content = json.dumps(main_content)req = urllib2.Request(sendurl,headers=headers)response = urllib2.urlopen(req, main_content.encode('utf8'))print(response.read().decode('utf-8'))##测试/usr/local/zabbix/alertscripts/zabbix_dd.py 填写钉钉用户ID 'disk > 90%'
0