分2大部分: 1.Zabbix服务器端配置 邮件服务安装配置 2.Web端服务配置 服务器端的设置: 系统 cenots 6.5 2.6.32-431.el6.x86_64 安装邮件发送服务: [iyunv@localhost ~]# mv download\?source\=files mailx-12.4.tar.bz2 [iyunv@localhost ~]# tar xf mailx-12.4.tar.bz2 [iyunv@localhost ~]# cd mailx-12.4 打个补丁才可以用: [iyunv@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 [iyunv@localhost mailx-12.4]# make [iyunv@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 [iyunv@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
[iyunv@localhost mailx-12.4]# which mailx /usr/local/bin/mailx [iyunv@localhost mailx-12.4]# cd /bin [iyunv@localhost bin]# ln -s /usr/local/bin/mailx mail [iyunv@localhost bin]# mail -V 12.4 7/29/08 [iyunv@localhost bin]# mail -s "Message" jinchuang1025@163.com < /tmp/yum_save_tx-2016-11-10-17-274YsBZQ.yumtx [iyunv@localhost bin]# echo $? 0 =======================邮件发送成功!==============================
Zabbix 报警脚本: 邮件: [iyunv@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 配置文件修改 [iyunv@zabbix-server ~]# vim /usr/local/zabbix/etc/zabbix_server.conf 添加或修改为下面这句: AlertScriptsPath=/usr/local/zabbix/alertscripts #开启zabbix调用脚本存放路径位置
重启zabbix服务生效 [iyunv@zabbix-server ~]# /etc/init.d/zabbix_server restart
微信: 申请微信企业号 建立部门 和添加成员(接收消息的) 查看部门id 新建应用 查看应用id 和添加接收消息用户 查看corpid 查看管理组凭证密钥
脚本:修改红色的为你自己的企业号对应的。 [iyunv@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) 给予执行权限: [iyunv@zabbix-server alertscripts]# chown zabbix.zabbix sendmail.sh weixin.py [iyunv@zabbix-server alertscripts]# chmod +x sendmail.sh weixin.py
Web端配置 1登录你的zabbix -- 管理 – 报警媒介
创建媒体类型
创建邮件的:
创建微信的
2再找到—配置 --- 动作
创建动作 (email 和 微信 相同)
配置动作 (email 和 微信 基本相同,注意 操作配置 里面的 仅送到选项 要选择不同的)
3 找到 –管理 – 用户
选择报警媒介 – 添加 (我这里是添加过的)
创建邮件报警媒介 ,收件人那里要写正确,可以多个用逗号分隔
创建微信的 到此就结束了!
下面测试 停止一台服务器上zabbix_agentd服务 [iyunv@localhost ~]# netstat -lntp |grep 10050 tcp 0 0 192.168.11.57:10050 0.0.0.0:* LISTEN 20537/zabbix_agentd [iyunv@localhost ~]# service zabbix_agentd stop Shutting down zabbix_agentd: [ OK ] [iyunv@localhost ~]# netstat -lntp |grep 10050 [iyunv@localhost ~]# 等待几分钟 zabbix服务端监测不到就会触发报警了 发送细节状态: 收取到的邮件: 微信收到的:
|