zabbix默认自带邮件告警,可是很很差用。
通常咱们使用smtp告警邮件,配置告警邮件脚本,发送到smtp邮箱服务器进行转发,而后发送到告警用户的邮箱中,完成邮件告警,如阿里邮箱,腾讯邮箱等。
前提zabbix可以访问外网,同时stmp邮箱已经配置完整
使用python脚本做为邮件。zabbix的告警脚本目录默认在/usr/lib/zabbix/alertscripts/路径下python
#!/usr/bin/python #coding:utf-8 import smtplib from email.mime.text import MIMEText from email.header import Header from email.utils import parseaddr, formataddr import sys def formatAddr(s): name, addr = parseaddr(s) return formataddr((Header(name, 'utf-8').encode(), addr)) def send_mail(to_list,subject,content): mail_host = 'smtp.mxhichina.com' #smtp邮件服务器地址 mail_user = 'alert.xxxx@chucloud.com.cn' #smtp告警邮箱帐户 mail_pass = 'xxxxxxxxx' # smtp告警邮箱密码 #以上内容根据你的实际状况进行修改 msg = MIMEText(content,'plain','utf-8') msg['Subject'] = Header(subject, 'utf-8').encode() msg['From'] = formatAddr('zabbix监控 <%s>' % mail_user).encode() msg['to'] = to_list try: s = smtplib.SMTP() s.connect(mail_host) s.login(mail_user,mail_pass) s.sendmail(mail_user,to_list,msg.as_string()) s.close() return True except Exception,e: print str(e) return False if __name__ == "__main__": send_mail(sys.argv[1], sys.argv[2], sys.argv[3]) #例:./sendmail_zabbix.py yangchao@chucloud.com.cn 测试 测试
脚本思路:
一、使用smtp模块,使用方法参考官方模块手册
二、构建send_mail函数,使用三个参数,分别指定为邮件发送人,标题,内容
三、send_mail函数定义了smtp邮箱的帐户密码信息
三、使用sys模块的os方法,传递参数进行测试web
保存脚本名称为sendmail_zabbix.pyjson
在zabbix“管理-报警媒介类型”中,建立一个告警邮件脚本,名称就是sendmial_zabbix.py
详细按照以下配置
而后配置动做
动做信息按照以下配置c#
具体的信息格式以下,能够自定义api
告警主机:{HOSTNAME1} 告警时间:{EVENT.DATE} {EVENT.TIME} 告警等级:{TRIGGER.SEVERITY} 告警信息: {TRIGGER.NAME} 告警项目:{TRIGGER.KEY1} 问题详情:{ITEM.NAME}:{ITEM.VALUE} 当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1} 事件ID:{EVENT.ID}
而后对须要接收邮件告警的zabbix用户分配报警媒介服务器
而后就能够天天半夜收到邮件告警了app
还睡觉?,起来干活!ide
邮件告警最大的问题就是邮件太多,很差及时判断
最好的方法就是钉钉告警函数
首先你得有钉钉
其次你得有配置一个机器人
详细的钉钉配置机器人的办法能够询问百度或者看
https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq
这里是我添加的机器人,重点是webhook,每一个机器人惟一post
这里仍是使用python脚本,保存在usr/lib/zabbix/alertscripts/路径下
#!/usr/bin/python # -*- coding: utf-8 -*- #zabbix上使用钉钉告警机器人,调用api脚本 import requests import json import sys import os headers = {'Content-Type': 'application/json;charset=utf-8'} #定义json http头部信息 api_url = "https://oapi.dingtalk.com/robot/send?access_token=b5924a81e21921256eb22154b7614512a2ca6e4815bda7de2fed0b59bf03cf89" #这里的url是钉钉机器人的api url def msg(text): #定义函数msg,参数为txt json_text= { #定义json_text字典内容 "msgtype": "text", "text": { "content": text }, } print requests.post(api_url,json.dumps(json_text),headers=headers).content #将字典信息序列化为json格式发送 if __name__ == '__main__': #主函数 text = sys.argv[1] #传入zabbix定义动做参数,已经在zabbix告警动做中配置 msg(text) #调用msg (text)函数
保存名称为dingding.py。脚本完成了
首先再zabbix用户中,建立一个用户,该用户做为钉钉机器人消息发送使用
而后再报警媒介类型建立脚本
按照以下配置
参数格式为
{ALERT.MESSAGE}
而后再配置动做,定义发送的告警方式
详细配置以下
定义告警级别
定义操做
信息内容推荐按照以下配置
告警主机:{HOST.NAME} 告警地址:{HOST.IP} 监控项目:{ITEM.NAME} 监控取值:{ITEM.LASTVALUE} 告警等级:{TRIGGER.SEVERITY} 当前状态:{TRIGGER.STATUS} 告警信息:{TRIGGER.NAME} 告警时间:{EVENT.DATE} {EVENT.TIME} 事件ID:{EVENT.ID}
好了,如今就能够看到钉钉告警了
天天没事钉钉催你干活
真TM是老板爽我就爽,老板不爽我下岗
有时候,我也没事调下老板
这不就是AI嘛~