设为首页 收藏本站
查看: 1155|回复: 0

[经验分享] Zabbix部署及邮件报警(zabbix、mysql-master、mysql-slave、LAP)

[复制链接]

尚未签到

发表于 2018-10-2 10:40:54 | 显示全部楼层 |阅读模式
  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中执行出错,请手动输入一遍,命令是没问题,可能是格式问题。
二、部署拓扑
DSC0000.png

三、详细部署步骤
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主从原理
DSC0001.png

  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,本实验不指定。
DSC0002.png


  •   slave修改my.cnf文件
DSC0003.png


  •   在master上面给slave授权
mysql> grant all on *.* to slave@"%" identified by "123456";  其中all代表所有权限
  %代表除本机外所有ip的主机均可连接,若本机连接需要把%改为localhost
mysql> flush privileges;  刷新权限

  •   重启master及slave
DSC0004.png


  •   查看mysql-bin及Position
  在master上执行
mysql> show master status;
DSC0005.png

  记录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;  注意以上红色字体,必须按照实际填写
DSC0006.png


  •   启动slave
mysql> slave start;
DSC0007.png


  •   在slave上查看同步状态
mysql> show slave status\G  如果如下两行为yes,代表主从同步成功。
DSC0008.png

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
DSC0009.png

mysql> create database zabbix   创建zabbix数据库并指定编码类型为utf8
DSC00010.png

DSC00011.png

mysql> grant all on zabbix.* to zabbix@"%" identified by '123456';  创建zabbix账户给zabbix使用,但注意如下报错:
DSC00012.png

  此处是因为我在zabbix主机使用slave登陆的,所以现在需要直接到mysql-master上面使用以上命令来授权并刷新权限。
DSC00013.png

  现在数据库与授权都做好了,可以开始导入sql包了
  找到sql包 DSC00014.png
  如上图所示,zabbix自带的有多种数据库包,当前我们直接使用mysql的即可;
DSC00015.png

  进入到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 DSC00016.png
[root@localhost zabbix-3.2.6]# yum install gcc –y  安装GCC后再次编译还会遇到一个问题如下图:
DSC00017.png

  提示找不到mysql library,如果是数据库在本地不会报这个错误。
  解决办法有两种:

  •   修改—with-mysql为–with-mysql=/usr/local/mysql55
  •   安装mysql-devel:yum install mysql-devel –y
  编译完成会提示如下图:
DSC00018.png

  但还是建议先执行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主配置文件目录
DSC00019.png


  •   修改主配置文件zabbix_server.conf
[root@localhost etc]# cp zabbix_server.conf zabbix_server.conf.bak  先备份然后修改
DSC00020.png

  把主配置文件内容修改为如下内容:
LogFile=/tmp/zabbix_server.log log  #存放路径  
DBHost=192.168.8.137                      #数据库master地址
  
DBName=zabbix                               #数据库名字
  
DBUser=zabbix                                  #数据库用户名
  
DBPassword=123456                          #数据库密码
DSC00021.png


  •   cp zabbix_server启动脚本至/etc/init.d/目录并授权
[root@localhost zabbix-3.2.6]# cp misc/init.d/tru64/zabbix_server /etc/init.d/zabbix_server
DSC00022.png

  注:若上述启动文件不可用,可以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
DSC00023.png

[root@localhost data]# netstat -anlp | grep zabbix  访问Apache主页
DSC00024.png

  至此整体环境已经搭建完成。
3.4 安装配置zabbix web

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

  需要在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用法不赘述
  安装修改完成后,刷新页面
DSC00026.png


  •   填写数据库信息
DSC00027.png


  •   填写监控信息
DSC00028.png

  若zabbix与Apache不在一个服务器 host可以填写zabbix服务器地址,此处暂不填写,后面会报错,后面处理

  •   最后核对信息
DSC00029.png


  •   安装完成
DSC00030.png

  注意此处由于我实现给发布目录赋予了写入权限,所以不会报如下图错误:
DSC00031.png

  遇此错误是因为该路径没有写入权限,可以下载图中提示的文件,然后上传到相应目录即可。

  •   点击完成,登入系统,默认用户名为admin,密码为zabbix
  •   解决Zabbix server is not running
  进入系统遇到如下错误
DSC00032.png

  这是由于zabbix与web 发布软件Apache不在一个服务器导致,需要求该发布目录中一下文件
DSC00033.png

  修改$ZBX_SERVER后跟zabbix服务器ip
DSC00034.png

  重启Apache、zabbix服务端
DSC00035.png

  至此全部部署完成。
3.5 zabbix邮件报警

  •   设置发件信息
  进入管理à报警媒介类型àEmail
DSC00036.png

  设置发件服务器信息,最后点击更新;
DSC00037.png

  选择接受人信息,这里选择admin就可以;
DSC00038.png

  选择报警媒介,点击添加;
DSC00039.png

  填写收件人邮箱,也可以根据需求设置时间和报警级别,通常全选,点击添加;(可添加多人)
DSC00040.png

  点击更新即可;
DSC00041.png

  点击配置à动作选择事件源”触发器”,可以新建也可以使用默认的;
DSC00042.png

  选择动作,添加触发条件,这里使用”触发器示警度”+”大于等于”+”警告”,代表警告级别以上就触发报警,点击添加;
DSC00043.png

  点击操作,修改默认操作步骤时间为60,再点击新的;
DSC00044.png

  点击发送到用户的添加,然后会弹出右边对话框,选择admin(若收件人不在admin里面则选择自己定义的);
DSC00045.png

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

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

DSC00048.png




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-607459-1-1.html 上篇帖子: mysql api---从一个小例子开始mysql编程入门(2) 下篇帖子: LDAP 与 MySql 连用 的JPA事物问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表