Zabbix部署及邮件报警(mysql主从 lamp)

一、部署说明

本次部署原本调用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搭建请查看我其他文档,这里不赘述)

[root@localhost ~]# 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源
[root@localhost ~]#  rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
[root@localhost ~]# rpm -Uvh https://mirror.webtatic.com/yum/el6/latest.rpm
  • 移除之前安装的PHP
[root@localhost ~]# yum remove php* -y
  • 安装新版本PHP
[root@localhost ~]# 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都执行
[root@localhost ~]# yum install mysql-server mysql-devel mysql-libs –y

启动mysql数据库,此时数据会自动初始化

[root@localhost ~]# service mysqld restart

master修改my.cnf文件

[root@localhost ~]# vim /etc/my.cnf

在文件[mysqld]中添加如下内容:

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
[root@localhost tmp]# wget https://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/3.2.6/zabbix-3.2.6.tar.gz
  • 安装依赖包
[root@localhost tmp]# yum -y install curl curl-devel net-snmp net-snmp-devel perl-DBI
  • 创建zabbix用户信息
[root@localhost tmp]# groupadd zabbix
[root@localhost tmp]# useradd -g zabbix zabbix
[root@localhost tmp]# usermod -s /sbin/nologin zabbix
  • 解压
[root@localhost tmp]# tar -zxvf zabbix-3.2.6.tar.gz

进入到zabbix目录

[root@localhost tmp]# cd zabbix-3.2.6
  • 把zabbix的SQL包导入mysql-master

由于zabbix与mysql是分开部署,故在zabbix服务器上安装mysql客户端并远程登陆到mysql-master上导入sql包。

[root@localhost tmp]# yum install mysql –y

安装mysql客户端

[root@localhost]# mysql -h 192.168.8.137 -uslave -p123456

此处使用之前创建的slave账户,若为安全着想可以单独创建管理账户,由于我之前slave账户给的all权限,故此次直接使用,后面不加端口默认使用3306

mysql> create database zabbix charset=utf8;

创建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(源码安装三步骤)
[root@localhost zabbix-3.2.6]# ./configure --prefix=/usr/local/zabbix/ --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl

注:全新服务器安装会报如下错误,是因为没有安装gcc

[root@localhost zabbix-3.2.6]# yum install gcc –y

安装GCC后再次编译还会遇到一个问题如下图:

提示找不到mysql library,如果是数据库在本地不会报这个错误。

解决办法有两种:

  • 修改—with-mysql为–with-mysql=/usr/local/mysql55
  • 安装mysql-devel:yum install mysql-devel –y

编译完成会提示如下图:

但还是建议先执行make

[root@localhost zabbix-3.2.6]# make –j8 && make install –j8

软连接服务程序到/usr/local/sbin/下

[root@localhost /]# ln -s /usr/local/zabbix/sbin/zabbix_* /usr/local/sbin/

进入到zabbix主配置文件目录

  • 修改主配置文件zabbix_server.conf
[root@localhost etc]# 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/目录并授权
[root@localhost zabbix-3.2.6]# 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时区

[root@localhost ~]# sed -i '/date.timezone/i date.timezone = PRC' /etc/php.ini

以上命令在LAP主机上执行

  • 启动zabbix server
[root@localhost data]# /etc/init.d/zabbix_server restart

查看zabbix启动状态

root@localhost data]# ps -ef | grep zabbix

[root@localhost data]# netstat -anlp | grep zabbix

访问Apache主页

至此整体环境已经搭建完成。

3.4 安装配置zabbix web

  • 解决PHP参数与依赖报错

点击下一步会遇到如下报错,这是由于PHP里的参数与依赖不符合zabbix要求

需要在LAP主机上安装并修改PHP主配置文件,若不安装zabbix会确实部分功能

[root@localhost html]# yum install php56w-mbstring php56w-bcmath php56w-gd php56w-xml –y
[root@localhost html]# yum install gd gd-devel -y

以上是安装依赖

[root@localhost html]# 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里面则选择自己定义的);

此页可不修改,也可根据自己需求修改,最后点击更新;

至此,邮件告警配置完成,以下为测试告警邮件。

标签:部署ZabbixMySQL 发布于:2019-11-10 04:51:58