zabbix报警

概述

当zabbix server预定义或自定义的触发器生效后,就要通过告警邮件、短信、微信等接口通知相关人员,并且zabbix server还设置了报警升级,可根据自身情况进行设置。

##配置

一、 zabbix-server脚本指定位置
1
vim zabbix_server.conf
AlertScriptsPath=/etc/zabbix/alertscripts
二、 报警类型(这里主要讲邮件和短信,后期会补上微信)
  • 邮件

    邮件报警需要提供三个参数(收件人、主题、内容),邮件需要安装sendemail可见安装sendemail

    1
    cat /etc/zabbix/alertscripts/sendEmail.sh
      #!/bin/bash
      to=$1
      subject=$2
      body=$3
      /usr/local/bin/sendEmail -f ex@uu.com -t "$to" -u "$subject" -o message-content-type=html -o message-charset=utf8 -xu ex@uu.com -xp xxxx -m "$body"
    
      ############
      /usr/local/bin/sendEmail        命令主程序
      -f from@163.com                 发件人邮箱
      -t to@163.com                   收件人邮箱
      -s smtp.163.com                 发件人邮箱的smtp服务器
      -u "我是邮件主题"                邮件的标题
      -o message-content-type=html    邮件内容的格式,html表示它是html格式
      -o message-charset=utf8         邮件内容编码
      -xu from@163.com                发件人邮箱的用户名
      -xp 123456                      发件人邮箱密码
      -m "我是邮件内容"                邮件的具体内容
      -l  /var/log/sendMyEmail.log    非必输项,邮件发送日志记录到日志文件
      
    • web配置

      1. 管理 >> 报警媒介类型 >> 创建媒体类型

        名称: 自定义

        类型: 脚本

        脚本参数:

        {ALERT.SENDTO}
        {ALERT.SUBJECT}
        {ALERT.MESSAGE}
        

      2. 管理 >> 用户 >> 报警媒介

      3. 配置 >> 动作 >> 触发器类型下新建动作

         名称:Zabbix-Server告警邮件
         默认接收人:主机: {HOSTNAME1}  状态:{TRIGGER.STATUS}
         默认信息:
         告警主机: {HOSTNAME1}
        告警时间: {EVENT.DATE}{EVENT.TIME}
        告警等级: {TRIGGER.SEVERITY}
        告警信息: {TRIGGER.NAME}
        告警项目: {TRIGGER.KEY1}
        问题详情: {ITEM.NAME}: {ITEM.VALUE}
        当前状态: {TRIGGER.STATUS}: {ITEM.VALUE1}
        事件ID: {EVENT.ID}
        恢复主题:主机: {HOSTNAME1} 状态:{TRIGGER.STATUS}!! 恢复信息:同上
        - 条件

            ![](https://raw.githubusercontent.com/sundshinerj/img/master/zabbix_%E6%8A%A5%E8%AD%A6_%E9%82%AE%E4%BB%B6%E6%8A%A5%E8%AD%A6_%E5%8A%A8%E4%BD%9C%E6%9D%A1%E4%BB%B6.png)

        - 操作

            ![](https://raw.githubusercontent.com/sundshinerj/img/master/zabbix_%E6%8A%A5%E8%AD%A6_%E9%82%AE%E4%BB%B6%E6%8A%A5%E8%AD%A6_%E5%8A%A8%E4%BD%9C%E6%93%8D%E4%BD%9C.png)

             步骤:可以指定报警升级

至此,邮件报警配置完成!
  • 短信

    短信就是调用短息商提供的短信接口,参数里需要填写两个(收件人、内容)

    名称: 自定义

    类型: 脚本
    
    脚本参数:
    
        {ALERT.SENDTO}
        {ALERT.MESSAGE}
    

    代码

    1
    cat sendSms.py
      #! /usr/bin/python
      #encoding:utf-8
      import requests
      import json
      import urllib
      import hashlib
      import os
      import sys
      import subprocess
      import datetime
      reload(sys)
      #设置字符集,否则再输出重定向时出编码错误
      sys.setdefaultencoding('utf-8')
    
      #请求主题参数
      def phonelist(plist):
          phonelist=plist.split(",")
          return phonelist
      def requestinterface(strp):
          url="http://test.com?sname=接口用户名&spwd=接口密码"
      #定义一个字典,值为请求的参数   
          param={}
          param['sdst']=strp
          param['smsg']=sys.argv[2]
          str3=url+'sdst='+param['sdst']+'&smsg='+urllib.quote(param['smsg']+'【标题】')
          r = requests.get(str3,verify=False)
      if __name__ == '__main__':
          #now=datetime.datetime.now().strftime('%Y-%m-%d-%H')
          #os.system("touch sendsms.`date +\'%F-%H\'`")
          #print fname
          #f = open('sendsms.'+str(now),'a')
          #f.write(sys.argv[1]+' -- '+sys.argv[2]+'  '+str(now)+'\n')
          plist=phonelist(sys.argv[1])
          for i,value in enumerate(plist):
          sms=requestinterface(value)
      

    至此,短信报警配置完成。