失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > zabbix实现邮件 短信 微信报警

zabbix实现邮件 短信 微信报警

时间:2018-12-07 15:02:33

相关推荐

zabbix实现邮件 短信 微信报警

1、描述常见监控系统及SNMP协议

2、搭建企业级zabbix,实现自动以邮件和短信报警

1、描述常见监控系统及SNMP协议

监控系统即用于监控生产环境所使用的硬件、软件或者是业务的运行情况的报警系统。其能够对生产环境所产生的异常作出报警,使得管理员能够及时获知报警信息,保证业务的正常运行。常见的监控项有 :

服务器CPU,内存,磁盘,进程,连接数 Web,Mail,FTP,数据库,中间件 网络接口流量,转发速率,丢包率 网络设备性能,配置文件,路由数 安全设备性能,连接数,攻击数 设备运行状态

目前比较流行的开源监控系统有:zabbix、cacti、nagios、ganglia等等。

SNMP协议

SNMP协议在1988年被制定,并被Internet体系结构委员会(IAB)采纳作为一个短期的网络管理解决方案;由于SNMP的简单性,在Internet时代得到了蓬勃的发展,1992年发布了SNMPv2版本,以增强SNMPv1的安全性和功能。现在,已经有了SNMPv3版本。

一套完整的SNMP系统主要包括管理信息库(MIB)、管理信息结构(SMI)及SNMP报文协议。

在snmp中一般来说由三种组件组成:

网络设备:指在网络中需要管理和监控的设备,例如提供服务的服务器、路由器等,这些设备必须支持snmp协议;管理组件:一般来说指的是运行网络管理系统的计算机(也可以指在这个计算机上运行的监控软件),这个计算机可能与被管理的网络设备在地理上隔绝的,但是可以远程监控和管理网络设备,例如网吧的网管的电脑就可以看做一个管理组件,可以用来监控每个电脑的运行,以及管理你上网的时间并提出预警;代理Agent:这是指运行在被管理设备上的一个软件模块,用来维护被管理设备的管理信息数据并可在需要时把管理数据发送给管理组件;

代理保有MIB(Management Information Base)对象变量,可以从管理信息库MIB收集信息并回传给管理组件;

MIB库是一个保存网络管理信息的虚拟数据存储空间,由多组被管理对象组成。在网络设备的MIB库中有由多个MIB模块定义的多组各自相关联的对象,其实说白了里面存储的是网络设备的属性,比如什么CPU信息、IO读写率等等;

2、搭建企业级zabbix,实现自动以邮件和短信报警

为什么我们需要编译安装zabbix,编译安装好后可以创建一个软链接,如果想要升级了将软连接指向新编译安装的软件目录即可。

1.安装Zabbix server

安装依赖包:

yum install gcc libxml2-devel net-snmp net-snmp-devel curl curl-devel php php-bcmath php-mbstring mariadb mariadb-devel –y

准备数据库:

mysqlmysql> create database zabbix character set utf8 collate utf8_bin;Query OK, 1 row affected (0.00 sec)mysql> grant all privileges on zabbix.* to 'zabbix'@'192.168.31.%' identified by '123456';Query OK, 0 rows affected (0.00 sec)mysql> FLUSH PRIVILEGES;Query OK, 0 rows affected (0.02 sec)

编译安装:

./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql --with-snmp --with-libcurl --with-libxml2 --enable-java如果提示缺少libevent安装上即可

拷贝启动脚本

cp misc/init.d/fedora/core/zabbix_* /etc/init.d/

导入数据库

mysql -uzabbix -p123456 -h192.168.31.200 zabbix < database/mysql/schema.sql

如果是agent只需要导入上面一个,如果是server则还需要导入下面两个

mysql -uzabbix -p123456 -h192.168.31.200 zabbix < database/mysql/images.sql

mysql -uzabbix -p123456 -h192.168.31.200 zabbix < database/mysql/data.sql

更改启动脚本

vim /etc/init.d/zabbix_server

vim /etc/init.d/zabbix_agent

21 # Zabbix-Directory

22 BASEDIR=/usr/local/zabbix

编辑zabbix_server.con配置文件

useradd zabbix -s /sbin/nologin

mkdir /var/log/zabbix && chown zabbix.zabbix /var/log/zabbix –R

vim /usr/local/zabbix/etc/zabbix_server.conf

LogFile=/var/log/zabbix/zabbix.log

DBHost=192.168.31.200

DBName=zabbix

DBUser=zabbix

DBPassword=123456

DBPort=3306

Timeout=30

配置web界面

安装httpd:

yum install httpd -y

mkdir /var/www/html/zabbix

cp -a /root/packages/zabbix-4.0.3/frontends/php/* /var/www/html/zabbix

systemctl restart httpd

systemctl enable httpd

chkconfig zabbix_server on

image.png

上面报错是因为缺少一些软件包,执行下面的命令

yum install php-gettext php-session php-ctype php-xmlreader php-xmlwriter php-xml php-net-socket php-gd php-mysql

再更改php的配置

vim /etc/php.ini:

post_max_size = 8M 改为 post_max_size = 16M

max_execution_time = 30 改为 max_execution_time = 300 max_input_time = 60 改为 max_input_time = 300

date.timezone = 改为 date.timezone = Asia/Shanghai

image.png

成功登陆上去了

字体乱码得解决办法

支持中文显示:

下载字体文件simkai.rr

复制字体文件上传到服务器:/var/www/html/zabbix/fonts/

编辑文件使用新字体

vim /var/www/html/zabbix/include/defines.inc.php

修改define('ZBX_GRAPH_FONT_NAME', 'simkai'); // font file name

至此zabbix已经安装好了,接下来我们配置各种报警方式

邮件报警

yum install mailx -y

vi /etc/mail.rc //注意需要开启客户端授权码进行第三方登录,而不是使用密码

set from=z5118845@set smtp=set smtp-auth-user=z5118845@set smtp-auth-password=abc123set smtp-auth=login

echo "tttt" | mail -s "testmail" z5118845@//测试发信正常

image.png

编写发邮件脚本

mkdir /usr/lib/zabbix/alertscripts -pv

vim /usr/lib/zabbix/alertscripts/mailx.sh

#!/bin/bash#send mailmessages=`echo $3 | tr '\r\n' '\n'`subject=`echo $2 | tr '\r\n' '\n'`echo "${messages}" | mail -s "${subject}" $1 >>/tmp/mailx.log 2>&1

[root@node1 ~]# touch /tmp/mailx.log

[root@node1 ~]# chown -R zabbix.zabbix /tmp/mailx.log

[root@node1 ~]# chmod +x /usr/lib/zabbix/alertscripts/mailx.sh

[root@node1 ~]# chown -R zabbix.zabbix /usr/lib/zabbix/

[root@node1 alertscripts]# ./mailx.sh z5118845@ "主题" "内容" //测试发邮件脚本是否可以正常工 作

image.png

接下来我们配置zabbix的web界面

image.pngimage.pngimage.png

image.pngimage.png

修改zabbix_server执行脚本的路径

vim /usr/local/zabbix/etc/zabbix_server.confAlertScriptsPath=/usr/lib/zabbix/alertscripts

然后我们测试一下,systemctl stop zabbix_zgentd

image.png

systemctl start zabbix_zgentd

image.png

短信报警

短信报警借助于第三方平台,与邮件报警指定第三方的邮件服务器类似,我们需要指定短信发送服务器,这里我们以中国网建SMS短信通为例,其官网地址如下:

/api.shtml

告警的脚本文件

#!/bin/bash# 脚本的日志文件LOGFILE="/tmp/SMS.log":>"$LOGFILE"exec 1>"$LOGFILE"exec 2>&1MOBILE_NUMBER=$1 # 手机号码MESSAGE_UTF8=$3# 短信内容XXD="/usr/bin/xxd"CURL="/usr/bin/curl"TIMEOUT=5# 短信内容要经过URL编码处理MESSAGE_ENCODE=$(echo "$MESSAGE_UTF8" | ${XXD} -ps | sed 's/\(..\)/%\1/g' | tr -d '\n')# Uid和Key的值需要自行修改,/api.shtml# Uid 网站用户名# Key 接口秘钥Uid="###" Key="###" #接口秘钥可以在网站中查询到# SMS APIURL="http://utf8./?Uid=${Uid}&Key=${Key}&smsMob=${MOBILE_NUMBER}&smsText=${MESSAGE_ENCODE}"# Send itset -x${CURL} -s --connect-timeout ${TIMEOUT} "${URL}"

测试一下

./send_msg.sh 17757008469 "尊敬的客户,您的订单已出库发货,正在配送中,请您耐心等待。"

web界面配置同上

QQ消息告警

首选需要注册一个企业微信https://work.

添加子部门

添加成员

image.png

创建应用

image.png

image.png

准备事项

企业号已经被部门成员关注

企业号有一个可以发送消息的应用,一个授权管理员,可以使用应用给成员发送消息

安装simplejson

wget /packages/f0/07/26b519e6ebb03c2a74989f7571e6ae6b82e9d7d81b8de6fcdbfc643c7b58/simplejson-3.8.2.tar.gztar zxvf simplejson-3.8.2.tar.gz && cd simplejson-3.8.2python setup.py buildpython setup.py install

配置监控脚本

#!/usr/bin/python#_*_coding:utf-8 _*_import urllib,urllib2import jsonimport sysimport simplejsonreload(sys)sys.setdefaultencoding('utf-8')def gettoken(corpid,corpsecret):gettoken_url = 'https://qyapi./cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + corpsecretprint gettoken_urltry:token_file = urllib2.urlopen(gettoken_url)except urllib2.HTTPError as e:print e.codeprint 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 tokendef senddata(access_token,user,subject,content):send_url = 'https://qyapi./cgi-bin/message/send?access_token=' + access_tokensend_values = {"touser":"8813418", #企业号中的用户帐号,在zabbix用户Media中配置,如果配置不正常,将按部门发送。"toparty":"2", #企业号中的部门id。"msgtype":"text", #消息类型。"agentid":"1000002", #企业号中的应用id。"text":{"content":subject + '\n' + content},"safe":"0"}# send_data = json.dumps(send_values, ensure_ascii=False)send_data = simplejson.dumps(send_values, ensure_ascii=False).encode('utf-8')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 = 'ww76d7749ca2a9801b' #CorpID是企业号的标识corpsecret = 'k53_6pJ7cDFlKpbAUba88jagtZkSdchROUIy1Fytg3M' #corpsecretSecret是管理组凭证密钥accesstoken = gettoken(corpid,corpsecret)senddata(accesstoken,user,subject,content)

测试一下

./wechat.py user 报警测试 error

zabbix web界面配置

image.png

创建报警用户

image.png

配置用户报警媒介(选择刚才创建的)

image.png

创建动作

image.png

image.png

image.png

最后我们测试systemctl stop zabbix_agentd

image.png

如果觉得《zabbix实现邮件 短信 微信报警》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。