Zabbix部署及邮件报警(zabbix、mysql-master、mysql-slave、LAP)
Zabbix部署及邮件报警(zabbix、mysql-master、mysql-slave、LAP)
楓城浪子原创,转载请标明出处,侵权必究!
更多技术博文请见个人博客:https://fengchenglangzi.000webhostapp.com
微信bh19890922
QQ445718526、490425557
一、部署说明
本次部署原本调用5台虚拟机,详情如下:
192.168.8.134–NFS-ZABBIX-SERVER-WEB(用于存放LAP发布目录以及zabbix服务器端)
192.168.8.135—LAP(用于安装Apache以及PHP)
192.168.8.136—MYCAT(用于做mysql读写分离)
192.168.8.137–MYSQL-MASTER(mysql主库)
192.168.8.137–MYSQL-SLAVE(mysql从库)
注:由于笔者试图用mycat作为中间件来使mysql读写分离,但由于zabbix连接mycat一直连接错误,所以最后放弃使用mycat,zabbix直接连接mysql-master,后续在研究!
若文章中命令复制到CLI中执行出错,请手动输入一遍,命令是没问题,可能是格式问题。
二、部署拓扑
三、详细部署步骤
3.1 安装LAP环境(Apache发布目录位于zabbix主机的/data/upload,使用nfs挂载到Apache主机,nfs搭建请查看我其他文档,这里不赘述)
# yum install httpd httpd-devel php php-devel php-mysql –y
注意此处安装的为php5.3,由于Zabbix3.2+ PHP版本需要使用PHP5.4.0版本,请将本机PHP版本升级至5.4.0+,PHP5.3升级至PHP5.6
[*] 更新yum源,如果是centos7就使用7的yum源
#rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm # rpm -Uvh https://mirror.webtatic.com/yum/el6/latest.rpm
[*] 移除之前安装的PHP
# yum remove php* -y
[*] 安装新版本PHP
# yum install php56w.x86_64 php56w-cli.x86_64 \
php56w-common.x86_64 php56w-gd.x86_64 php56w-ldap.x86_64 \
php56w-mbstring.x86_64 php56w-mcrypt.x86_64 php56w-mysql.x86_64 php56w-pdo.x86_64 -y
3.2 部署mysql主从
3.2.1 Mysql主从原理
MySQL 主从复制原理剖析
Mysql主从同步其实是一个异步复制的过程,要实现复制首先需要在master上开启bin-log日志功能,整个过程需要开启3个线程,分别是Master开启IO线程,slave开启IO线程和SQL线程。
[*] 在从服务器执行slave start,从服务器上IO线程会通过授权的用户连接上master,并请求master从指定的文件和位置之后发送bin-log日志内容。
[*] Master服务器接收到来自slave服务器的IO线程的请求后,master服务器上的IO线程根据slave服务器发送的指定bin-log日志之后的内容,然后返回给slave端的IO线程。(返回的信息中除了bin-log日志内容外,还有本次返回日志内容后在master服务器端的新的binlog文件名以及在binlog中的下一个指定更新位置。)
[*] Slave的IO线程接收到信息后,将接收到的日志内容依次添加到Slave端的relay-log文件的最末端,并将读取到的Master端的 bin-log的文件名和位置记录到master.info文件中,以便在下一次读取的时候能够清楚的告诉Master”我需要从某个bin-log的哪 个位置开始往后的日志内容,请发给我”;
[*] Slave的Sql线程检测到relay-log中新增加了内容后,会马上解析relay-log的内容成为在Master端真实执行时候的那些可执行的内容,并在自身执行。
3.2.2安装mysql
[*] 安装mysql环境,master和slave都执行
# yum install mysql-server mysql-devel mysql-libs –y 启动mysql数据库,此时数据会自动初始化
# service mysqld restart master修改my.cnf文件
# vim /etc/my.cnf 在文件中添加如下内容:
log-bin=mysql-bin 开启binlog功能
server-id = 137 指定服务器的id,通常id指定为ip地址的最后一位
若需要指定数据目录请修改datadir=/var/lib/mysql,创建目录后需要给mysql授权,最好是把用户和组指定给mysql,本实验不指定。
[*] slave修改my.cnf文件
[*] 在master上面给slave授权
mysql> grant all on *.* to slave@"%" identified by "123456"; 其中all代表所有权限
%代表除本机外所有ip的主机均可连接,若本机连接需要把%改为localhost
mysql> flush privileges; 刷新权限
[*] 重启master及slave
[*] 查看mysql-bin及Position
在master上执行
mysql> show master status;
记录file及position
[*] 在slave服务器指定master IP和同步的mysql-bin及pos点
mysql> change master to master_host='192.168.8.137',master_user='slave',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=106; 注意以上红色字体,必须按照实际填写
[*] 启动slave
mysql> slave start;
[*] 在slave上查看同步状态
mysql> show slave status\G 如果如下两行为yes,代表主从同步成功。
3.3 安装zabbix server环境及web发布目录
[*] 下载zabbix源码包,本实验使用3.2.6
# wget https://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/3.2.6/zabbix-3.2.6.tar.gz
[*] 安装依赖包
# yum -y install curl curl-devel net-snmp net-snmp-devel perl-DBI
[*] 创建zabbix用户信息
# groupadd zabbix
# useradd -g zabbix zabbix
# usermod -s /sbin/nologin zabbix
[*] 解压
# tar -zxvf zabbix-3.2.6.tar.gz 进入到zabbix目录
# cd zabbix-3.2.6
[*] 把zabbix的SQL包导入mysql-master
由于zabbix与mysql是分开部署,故在zabbix服务器上安装mysql客户端并远程登陆到mysql-master上导入sql包。
# yum install mysql –y 安装mysql客户端
# mysql -h 192.168.8.137 -uslave -p123456 此处使用之前创建的slave账户,若为安全着想可以单独创建管理账户,由于我之前slave账户给的all权限,故此次直接使用,后面不加端口默认使用3306
mysql> create database zabbix 创建zabbix数据库并指定编码类型为utf8
mysql> grant all on zabbix.* to zabbix@"%" identified by '123456'; 创建zabbix账户给zabbix使用,但注意如下报错:
此处是因为我在zabbix主机使用slave登陆的,所以现在需要直接到mysql-master上面使用以上命令来授权并刷新权限。
现在数据库与授权都做好了,可以开始导入sql包了
找到sql包
如上图所示,zabbix自带的有多种数据库包,当前我们直接使用mysql的即可;
进入到mysql程序中;
mysql> use zabbix; 进入zabbix库
mysql> source /tmp/zabbix-3.2.6/database/mysql/schema.sql 先导入schema包
mysql> source /tmp/zabbix-3.2.6/database/mysql/images.sql 再导入images包
mysql> source /tmp/zabbix-3.2.6/database/mysql/data.sql 最后导入data包
至此zabbix使用的sql包完全导入。
[*] 开始编译安装zabbix(源码安装三步骤)
# ./configure --prefix=/usr/local/zabbix/ --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl 注:全新服务器安装会报如下错误,是因为没有安装gcc
# yum install gcc –y 安装GCC后再次编译还会遇到一个问题如下图:
提示找不到mysql library,如果是数据库在本地不会报这个错误。
解决办法有两种:
[*] 修改—with-mysql为–with-mysql=/usr/local/mysql55
[*] 安装mysql-devel:yum install mysql-devel –y
编译完成会提示如下图:
但还是建议先执行make
# make –j8 && make install –j8 软连接服务程序到/usr/local/sbin/下
# ln -s /usr/local/zabbix/sbin/zabbix_* /usr/local/sbin/ 进入到zabbix主配置文件目录
[*] 修改主配置文件zabbix_server.conf
# cp zabbix_server.conf zabbix_server.conf.bak 先备份然后修改
把主配置文件内容修改为如下内容:
LogFile=/tmp/zabbix_server.log log#存放路径
DBHost=192.168.8.137 #数据库master地址
DBName=zabbix #数据库名字
DBUser=zabbix #数据库用户名
DBPassword=123456 #数据库密码
[*] cp zabbix_server启动脚本至/etc/init.d/目录并授权
# cp misc/init.d/tru64/zabbix_server /etc/init.d/zabbix_server
注:若上述启动文件不可用,可以cp如下位置文件
cp /zabbix-2.2.6/misc/init.d/fedora/core/zabbix_server /etc/init.d/ 讲zabbix web代码拷贝到Apache发布目录
cp -a /root/zabbix-3.2.6/frontends/php/* /data/ 修改PHP时区
# sed -i '/date.timezone/i date.timezone = PRC' /etc/php.ini 以上命令在LAP主机上执行
[*] 启动zabbix server
# /etc/init.d/zabbix_server restart 查看zabbix启动状态
root@localhost data]# ps -ef | grep zabbix
# netstat -anlp | grep zabbix 访问Apache主页
至此整体环境已经搭建完成。
3.4 安装配置zabbix web
[*] 解决PHP参数与依赖报错
点击下一步会遇到如下报错,这是由于PHP里的参数与依赖不符合zabbix要求
需要在LAP主机上安装并修改PHP主配置文件,若不安装zabbix会确实部分功能
# yum install php56w-mbstring php56w-bcmath php56w-gd php56w-xml –y
# yum install gd gd-devel -y
以上是安装依赖
# sed -i '/post_max_size/s/8/16/g;/max_execution_time/s/30/300/g;/max_input_time/s/60/300/g;s/\;date.timezone.*/date.timezone \= PRC/g;s/\;always_populate_raw_post_data/always_populate_raw_post_data/g' /etc/php.ini 以上是利用sed修改PHP主配置文件,sed用法不赘述
安装修改完成后,刷新页面
[*] 填写数据库信息
[*] 填写监控信息
若zabbix与Apache不在一个服务器 host可以填写zabbix服务器地址,此处暂不填写,后面会报错,后面处理
[*] 最后核对信息
[*] 安装完成
注意此处由于我实现给发布目录赋予了写入权限,所以不会报如下图错误:
遇此错误是因为该路径没有写入权限,可以下载图中提示的文件,然后上传到相应目录即可。
[*] 点击完成,登入系统,默认用户名为admin,密码为zabbix
[*] 解决Zabbix server is not running
进入系统遇到如下错误
这是由于zabbix与web 发布软件Apache不在一个服务器导致,需要求该发布目录中一下文件
修改$ZBX_SERVER后跟zabbix服务器ip
重启Apache、zabbix服务端
至此全部部署完成。
3.5 zabbix邮件报警
[*] 设置发件信息
进入管理à报警媒介类型àEmail
设置发件服务器信息,最后点击更新;
选择接受人信息,这里选择admin就可以;
选择报警媒介,点击添加;
填写收件人邮箱,也可以根据需求设置时间和报警级别,通常全选,点击添加;(可添加多人)
点击更新即可;
点击配置à动作选择事件源”触发器”,可以新建也可以使用默认的;
选择动作,添加触发条件,这里使用”触发器示警度”+”大于等于”+”警告”,代表警告级别以上就触发报警,点击添加;
点击操作,修改默认操作步骤时间为60,再点击新的;
点击发送到用户的添加,然后会弹出右边对话框,选择admin(若收件人不在admin里面则选择自己定义的);
此页可不修改,也可根据自己需求修改,最后点击更新;
至此,邮件告警配置完成,以下为测试告警邮件。
页:
[1]