温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2020-06-25 19:55:41 来源:网络 阅读:550 作者:dwl1988721 栏目:系统运维

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

LogFile=/usr/local/zabbix/zabbix_server.log DBHost=127.0.0.1 DBName=zabbix DBUser=zabbix DBPassword=zabbixpwd DBPort=3306 Timeout=30 AlertScriptsPath=/usr/local/zabbix/alertscripts ##触发脚本放置位置 ExternalScripts=/usr/local/zabbix/externalscripts LogSlowQueries=3000

python 邮件发送脚本

/usr/local/zabbix/alertscripts/zabbix_sendmail.py #!/usr/bin/python # -*- coding: utf-8 -*- from email.mime.text import MIMEText from email.header import Header from smtplib import SMTP_SSL import sys smtpaddr = 'smtp.qq.com' myemail='327627448@qq.com' ##发送邮件的QQ password='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'] = myemail msg['To'] = recvmail try: 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,报警媒介设置邮件告警
Zabbix4.0(三)钉钉,邮件,微信报警

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

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

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

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

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

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

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

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

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

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

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

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

Zabbix4.0(三)钉钉,邮件,微信报警
三,微信告警
注册创建企业微信
在管理后台添加自建应用
Zabbix4.0(三)钉钉,邮件,微信报警
创建好后 获取企业微信的agentid和secrct 填写于脚本
Zabbix4.0(三)钉钉,邮件,微信报警
跟邮件一样 在同样位置添加微信报警脚本

vim /usr/local/zabbix/alertscripts/zabbix_wx.py #!/usr/bin/python # -*- coding: utf-8 -*- import json import sys import urllib,urllib2 agentid = 'xxx' ###微信自建应用ID corpid = 'xxx' ###微信企业ID 在我的企业里面查看 corpsecret = 'xxx' ### 微信自建应用secret #get tocken gettoken_url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + corpsecret token_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] #content post_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_token response = urllib2.urlopen(url,json_content) print(response.read().decode('utf-8')) ##测试 /usr/local/zabbix/alertscripts/zabbix_wx.py '通讯录里面的微信名' 'disk is not enough'

添加 创建2个变量 发送给谁 发送的内容
Zabbix4.0(三)钉钉,邮件,微信报警
报警之后的action(注意更改发送的脚本名称)
Zabbix4.0(三)钉钉,邮件,微信报警
user添加 注意填写发送名称,还有报警级别
Zabbix4.0(三)钉钉,邮件,微信报警
四:钉钉告警
钉钉告警跟微信告警类似
告警脚本/usr/local/zabbix/alertscripts/

###告警机器人脚本 ###安装pip,安装request模块 yum -y install epel-release yum -y install python-pip pip install requests #!/usr/bin/env python import json import requests import sys def 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.text if __name__ == '__main__': msg = sys.argv[1] remiders = [] url = '告警机器人webrooturl' print(send_msg(url, remiders, msg))

相关配置参数(发送用户填写admin即可)
Zabbix4.0(三)钉钉,邮件,微信报警
钉钉工作通知告警脚本

#!/usr/bin/python # -*- coding: utf-8 -*- #curl 'https://oapi.dingtalk.com/gettoken?corpid=xxx&corpsecret=xxx' import json,urllib2,sys appkey = '钉钉自建应用查看' appsecret = '钉钉自建应用查看' agentid = 钉钉自建应用查看' touser = sys.argv[1] content = sys.argv[2] tockenurl = 'https://oapi.dingtalk.com/gettoken?corpid=' + appkey + "&corpsecret=" + appsecret tockenresponse = urllib2.urlopen(tockenurl) tockenresult = json.loads(tockenresponse.read().decode('utf-8')) tocken = tockenresult['access_token'] sendurl = 'https://oapi.dingtalk.com/message/send?access_token=' + tocken headers = { '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%'
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI