概述
当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配置
管理 >> 报警媒介类型 >> 创建媒体类型
名称: 自定义
类型: 脚本
脚本参数:
{ALERT.SENDTO} {ALERT.SUBJECT} {ALERT.MESSAGE}
管理 >> 用户 >> 报警媒介
配置 >> 动作 >> 触发器类型下新建动作
名称: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)
至此,短信报警配置完成。