zabbix邮件告警和钉钉告警配置

  

smtp邮件告警

  

zabbix默认自带邮件告警,但是很不好用。
一般我们使用smtp告警邮件,配置告警邮件脚本,发送到smtp邮箱服务器进行转发,然后发送到告警用户的邮箱中,完成邮件告警,如阿里邮箱,腾讯邮箱等。
前提zabbix能够访问外网,同时stmp邮箱已经配置完整
使用python脚本作为邮件.zabbix的告警脚本目录默认在/usr/lib/zabbix/alertscripts/路径下

  
 <代码> # !/usr/bin/python
  utf - 8编码:
  
  进口smtplib
  从email.mime。文本导入MIMEText
  从电子邮件。头导入头
  从电子邮件。进口parseaddr跑龙套,formataddr
  导入系统
  
  def formatAddr (s):
  名字,addr=parseaddr (s)
  返回formataddr((头(名称、“utf - 8”) .encode (), addr))
  
  def send_mail (to_list、主题、内容):
  mail_host=' smtp.mxhichina.com ' # smtp邮件服务器地址
  mail_user=' alert.xxxx@chucloud.com.cn ' # smtp告警邮箱账户
  mail_pass=' xxxxxxxxx ' # smtp告警邮箱密码
  #以上内容根据你的实际情况进行修改
  味精=MIMEText(内容、“普通”、“utf - 8”)
  味精(“主题”)=头(主题、“utf - 8”) .encode ()
  味精['从']=formatAddr (“zabbix监控& lt; % s>“% mail_user) .encode ()
  味精(',']=to_list
  
  试一试:
  s=smtplib.SMTP ()
  s.connect (mail_host)
  s.login (mail_user mail_pass)
  s.sendmail (mail_user to_list msg.as_string ())
  s.close ()
  还真
  除了例外,e:
  打印str (e)
  返回假
  
  if __name__==癬_main__”:
  send_mail (sys。sys argv [1]。sys.argv argv [2], [3])
  例:。/sendmail_zabbix。py yangchao@chucloud.com.cn测试测试
   
  

脚本思路:
1,使用smtp模块,使用方法参考官方模块手册
2,构建send_mail函数,使用三个参数,分别指定为邮件发送人,标题,内容
3, send_mail函数定义了smtp邮箱的账户密码信息
3,使用sys模块的操作系统方法,传递参数进行测试

  

保存脚本名称为sendmail_zabbix.py

  

在zabbix”管理,报警媒介类型”中,创建一个告警邮件脚本,名称就是sendmial_zabbix。py
 zabbix邮件告警和钉钉告警配置“> <br/>详细按照如下配置<br/> <img src=

  

 zabbix邮件告警和钉钉告警配置

  

 zabbix邮件告警和钉钉告警配置

  

具体的信息格式如下,可以自定义

  
 <代码>告警主机:{HOSTNAME1}
  告警时间:{事件。日期}{EVENT.TIME}
  告警等级:{TRIGGER.SEVERITY}
  告警信息:{TRIGGER.NAME}
  告警项目:{TRIGGER.KEY1}
  问题详情:{ITEM.NAME}: {ITEM.VALUE}
  当前状态:{TRIGGER.STATUS}: {ITEM.VALUE1}
  事件ID: {EVENT.ID}  
  

然后对需要接收邮件告警的zabbix用户分配报警媒介
 zabbix邮件告警和钉钉告警配置

  

然后就可以每天半夜收到邮件告警了
 zabbix邮件告警和钉钉告警配置

  

还睡觉?起来干活!

  

配置钉钉告警

  

邮件告警最大的问题就是邮件太多,不好及时判断
最好的方法就是钉钉告警

  

首先你得有钉钉
其次你得有配置一个机器人
详细的钉钉配置机器人的办法可以询问百度或者看
https://ding-doc.dingtalk.com/doc/serverapi2 qf2nxq
这里是我添加的机器人,重点是webhook,每个机器人唯一
 zabbix邮件告警和钉钉告警配置

  

这里还是使用python脚本,保存在zabbix alertscripts/usr/lib/路径下

  
 <代码> # !/usr/bin/python
  # - * -编码:utf - 8 - *
  # zabbix上使用钉钉告警机器人,调用api脚本
  进口的要求
  进口json
  导入系统
  进口操作系统
  
  头={“内容类型”:“application/json; charset=utf - 8”}
  #定义json http头部信息
  api_url=" https://oapi.dingtalk.com/robot/send?access_token=b5924a81e21921256eb22154b7614512a2ca6e4815bda7de2fed0b59bf03cf89 "
  #这里的url是钉钉机器人的api的url
  
  def味精(文本):#定义函数味精、参数为三种
  json_text={#定义json_text字典内容
  “msgtype”:“文本”,
  "文本":{
  “内容”:文本
  },
  }
  打印requests.post (api_url json.dumps (json_text),标题=头)。内容#将字典信息序列化为json格式发送
  
  if __name__==癬_main__”: #主函数
  文本=系统。argv[1] #传入zabbix定义动作参数,已经在zabbix告警动作中配置
  味精(文本)#调用味精(文本)函数
  

zabbix邮件告警和钉钉告警配置