Zabbix 邮件微信报警
分2大部分:
1.Zabbix服务器端配置
邮件服务安装配置
2.Web端服务配置
服务器端的设置:
系统 cenots 6.5 2.6.32-431.el6.x86_64
安装邮件发送服务:
[root@localhost ~]# wget http://sourceforge.net/projects/heirloom/files/latest/download?source=files
[root@localhost ~]# mv download\?source\=files mailx-12.4.tar.bz2
[root@localhost ~]# tar xf mailx-12.4.tar.bz2
[root@localhost ~]# cd mailx-12.4
打个补丁才可以用:
[root@localhost mailx-12.4]# patch -Np1 -i mailx-12.4-openssl_1.0.0_build_fix-1.patch
patching file makeconfig
patching file openssl.c
[root@localhost mailx-12.4]# make
[root@localhost mailx-12.4]# make install UCBINSTALL=/usr/bin/install
下面为输出信息:
test -d /usr/local/bin || mkdir -p /usr/local/bin
/usr/bin/install -c mailx /usr/local/bin/mailx
strip /usr/local/bin/mailx
test -d /usr/local/share/man/man1 || mkdir -p /usr/local/share/man/man1
/usr/bin/install -c -m 644 mailx.1 /usr/local/share/man/man1/mailx.1
test -d /etc || mkdir -p /etc
test -f /etc/nail.rc || \
/usr/bin/install -c -m 644 nail.rc /etc/nail.rc
[root@localhost mailx-12.4]# vim /etc/nail.rc
编辑配置文件最下面加上:修改为你自己的
set from=xxx@163.com smtp=smtp.163.com
set smtp-auth-user=xxx@163.com smtp-auth-password=邮箱密码
set smtp-auth=login
[root@localhost mailx-12.4]# which mailx
/usr/local/bin/mailx
[root@localhost mailx-12.4]# cd /bin
[root@localhost bin]# ln -s /usr/local/bin/mailx mail
[root@localhost bin]# mail -V
12.4 7/29/08
[root@localhost bin]# mail -s "Message" jinchuang1025@163.com < /tmp/yum_save_tx-2016-11-10-17-274YsBZQ.yumtx
[root@localhost bin]# echo $?
0
=======================邮件发送成功!==============================
Zabbix 报警脚本:
邮件:
[root@zabbix-server alertscripts]# vim sendmail.sh#!/bin/bash
echo "$3" > /tmp/zabbix_mail.txt #此文件要有zabbix 权限不然乱码
dos2unix -k /tmp/zabbix_mail.txt
/bin/mail -s "$2" $1 < /tmp/zabbix_mail.txt
Zabbix server 配置文件修改
[root@zabbix-server ~]# vim /usr/local/zabbix/etc/zabbix_server.conf
添加或修改为下面这句:
AlertScriptsPath=/usr/local/zabbix/alertscripts #开启zabbix调用脚本存放路径位置
重启zabbix服务生效
[root@zabbix-server ~]# /etc/init.d/zabbix_server restart
微信:
申请微信企业号
建立部门 和添加成员(接收消息的)
查看部门id
新建应用
查看应用id 和添加接收消息用户
查看corpid
查看管理组凭证密钥
脚本:修改红色的为你自己的企业号对应的。
[root@zabbix-server alertscripts]# vim weixin.py
#!/usr/bin/python
#_*_coding:utf-8 _*_
__author__ = 'lvnian'
import urllib,urllib2
import json
import sys
def gettoken(corpid,corpsecret):
gettoken_url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + corpsecret
try:
token_file = urllib2.urlopen(gettoken_url)
except urllib2.HTTPError as e:
print e.code
print e.read().decode("utf8")
sys.exit()
token_data = token_file.read().decode('utf-8')
token_json = json.loads(token_data)
token_json.keys()
token = token_json['access_token']
return token
def senddata(access_token,user,content):
send_url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + access_token
send_values = {
"touser":user , #企业号中的用户帐号,在zabbix用户Media中配置,如果配置不正常,将按部门发送。
"toparty":"1", #企业号中的部门id
"msgtype":"text", #消息类型。
"agentid":"2", #企业号中的应用id,
"text":{
"content":content
},
"safe":"0"
}
send_data = json.dumps(send_values, ensure_ascii=False)
send_request = urllib2.Request(send_url, send_data)
response = json.loads(urllib2.urlopen(send_request).read())
print str(response)
if __name__ == '__main__':
user = str(sys.argv[1]) #zabbix传过来的第一个参数
subject = str(sys.argv[2]) #zabbix传过来的第二个参数
content = str(sys.argv[3]) #zabbix传过来的第三个参数
corpid = 'wxdgfhshs3f1bba2jinc' #CorpID是企业号的标识
corpsecret = '3NDb5cKp-ViudjtgsiJ6Yw_R_jRj2cUdsgTmFLsOQGQYGPcc5wNLhPiAyTnpjinc' #corpsecretSecret是管理组凭证密钥
accesstoken = gettoken(corpid,corpsecret)
senddata(accesstoken,user,content)
给予执行权限:
[root@zabbix-server alertscripts]# chown zabbix.zabbix sendmail.sh weixin.py
[root@zabbix-server alertscripts]# chmod +x sendmail.sh weixin.py
Web端配置
1登录你的zabbix -- 管理 – 报警媒介
创建媒体类型
创建邮件的:
创建微信的
2再找到—配置 --- 动作
创建动作 (email 和 微信 相同)
配置动作 (email 和 微信 基本相同,注意 操作配置 里面的 仅送到选项 要选择不同的)
3 找到 –管理 – 用户
选择报警媒介 – 添加 (我这里是添加过的)
创建邮件报警媒介 ,收件人那里要写正确,可以多个用逗号分隔
创建微信的
到此就结束了!
下面测试
停止一台服务器上zabbix_agentd服务
[root@localhost ~]# netstat -lntp |grep 10050
tcp 0 0 192.168.11.57:10050 0.0.0.0:* LISTEN 20537/zabbix_agentd
[root@localhost ~]# service zabbix_agentd stop
Shutting down zabbix_agentd: [ OK ]
[root@localhost ~]# netstat -lntp |grep 10050
[root@localhost ~]#
等待几分钟 zabbix服务端监测不到就会触发报警了
发送细节状态:
收取到的邮件:
微信收到的: