Zabbix监控MySQL以及主从状态

环境

MySQL主库:192.168.253.128

MySQL从库:192.168.253.140

Zabbix主机的ip:192.168.253.133

Zabbix版本:3.0

系统:CentOS7

第一步:安装Zabbix3.0

下载链接:https://www.zabbix.com/download?zabbix=3.0&os_distribution=centos&os_version=7&db=MySQL

官方文档: https://www.zabbix.com/documentation/3.0/manual

安装相关依赖包

yum install httpd php php-mysql php-mbstring php-gd php-bcmath php-ldap php-xml mariadb mariadb-server -y

安装zabbix agent和zabbix server

rpm -i https://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
yum install zabbix-server-mysql zabbix-web-mysql zabbix-agent zabbix-get -y

第二步:配置数据库

安装数据库

systemctl start mariadb #启动数据库
ln -sv /var/lib/mysql/mysql.sock  /tmp/mysql.sock
mysql -uroot   #进入mysql

创建数据库和授权用户

扫描二维码关注公众号,回复: 4892607 查看本文章
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by 'password';
MariaDB [(none)]> quit;

导入表结构

zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -ppassword zabbix

第三步:配置php时区

修改/etc/php.ini

date.timezone = Asia/Shanghai

第四步:修改Zabbix配置文件

修改/etc/zabbix/zabbix_server.conf

ListenPort=10051 ##监听的端口
LogType=file       ##日志的记录的类型,这里表示记录在文件中
LogFile=/var/log/zabbix/zabbix_server.log #日志路径
LogFileSize=0   #日志大小,超过则会进行切割,0表示不切割
PidFile=/var/run/zabbix/zabbix_server.pid #pid文件路径
DBHost=localhost #数据库位置  必填
DBName=zabbix #数据库名称   必填
DBUser=zabbix  #连接数据库的用户名   必填
DBPassword=password  #连接数据库对应的密码  必填
DBSocket=/tmp/mysql.sock #socket文件路径  
DBPort=3306  #数据库开放的端口 必填

第五步:启动zabbix server和httpd

systemctl  start httpd 
zabbix_server -c /etc/zabbix/zabbix_server.conf 

访问http://192.168.253.133/zabbix

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
初始账号密码为Admin/zabbix

第六步:在MySQL上安装zabbix-agent

在主库与从库安装yum源和zabbix-agent

rpm -i https://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
yum install zabbix-agent -y

修改配置文件/etc/zabbix/zabbix_agentd.conf

Server=192.168.253.133  #这里的ip是zabbix的Server端ip
Hostname=192.168.253.128 #这里是主机名,必须唯一所以用ip代替

从库也做对应的修改

启动zabbix-agent

systemctl  start zabbix-agent

第八步:安装percona公司提供的监控模版

官方文档:https://www.percona.com/doc/percona-monitoring-plugins/LATEST/zabbix/index.html

下载地址: https://www.percona.com/downloads/percona-monitoring-plugins/LATEST/

需要创建一个用户用于监控,只需要在主库创建就可以了,因为主从同步这样从库也会同步过去。

mysql> GRANT ALL ON *.* TO 'monitor'@'192.168.253.%' IDENTIFIED BY '123456';

由于获取MySQL数据的方式是通过PHP的,所以还需要下载相关的依赖

yum install php  php-mysql -y

下载rpm包然后上传到MySQL主库和从库的虚拟机上

 rpm -ivh percona-zabbix-templates-1.1.8-1.noarch.rpm

安装完成后会多两个目录

/var/lib/zabbix/percona/scripts #这个目录是获取数据的脚本目录
/var/lib/zabbix/percona/templates #这个是存放模版和配置项的目录

设置配置文件

mkdir -p /etc/zabbix_agentd.conf.d/
cp /var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf /etc/zabbix_agentd.conf.d/userparameter_percona_mysql.conf

修改主配置文件/etc/zabbix/zabbix_agentd.conf ,添加下面一行

Include=/etc/zabbix_agentd.conf.d/

修改文件/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh

HOST=192.168.253.128 #需要改成监控的主机,从库则写从库的IP地址

修改文件/var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php

$mysql_user = 'monitor';  #用于监控的用户
$mysql_pass = '123456'; #密码

测试是否能成功获取数据

/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh gg

在这里插入图片描述
获取到数据就表示成功

重启agent

systemctl restart zabbix-agent 

从库也做对应的修改,即可

第九步:创建主机,导入模版文件

需要上传模版文件到主机

sz /var/lib/zabbix/percona/templates/zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.8.xml

然后创建主机
在这里插入图片描述

在这里插入图片描述

再创建个从库的主机
在这里插入图片描述

在这里插入图片描述

导入模版
在这里插入图片描述

在这里插入图片描述
选择文件就选刚才上传的文件
在这里插入图片描述
导入的时候出现了一个问题

Invalid tag "/zabbix_export/date": "YYYY-MM-DDThh:mm:ssZ" is expected.

在这里插入图片描述
这是由于Percona公司的模版适用于Zabbix的2.x系列的,而我们这里用的是3.0版本所以不兼容,解决方法也很简单,把这个模版导入zabbix2.4然后再导出来就可以了。

从zabbix2.4导出的就可以再导入zabbix3.0了
在这里插入图片描述
这次就导入成功了
在这里插入图片描述
然后关联相关的模版
在这里插入图片描述
点击Update,然后在从库的主机也关联一下

发现有一些错误
在这里插入图片描述
原因:在获取数据的时候,会创建一个文件/tmp/192.168.253.140-mysql_cacti_stats.txt,在这个文件里存放数据,而这个文件的属主和属组是root
在这里插入图片描述
所以需要改一下权限就可以了

chown -R zabbix:zabbix /tmp/192.168.253.128-mysql_cacti_stats.txt

类似的也修改一下从库的文件权限

这样就可以了

在这里插入图片描述

第十步:自定义脚本监控主从状态

这部分只需要在从库的主机上做就可以了

脚本内容

#!/bin/bash
#连接数据库的密码需要放在/etc/my.cnf中,不然会连接失败
#表示连接的主机
DBHost=192.168.253.140  

 #脚本名称
prog=$(basename $0)     

#用于获取主从延迟时间的函数
Seconds_Behind_Master(){   
  Num=$(mysql -h $DBHost -e "show slave status \G;"|grep "Seconds_Behind_Master:"  | awk -F: '{print $2}')
  echo $Num
}

#检查主从是否正常连接,如果正常返回50,如果连接失败错误,则返回100,后续可以根据这个值设置触发器
Master_Slave_Check(){
  Num1=$(mysql  -h $DBHost -e "show slave status\G;" | grep "Slave_IO_Running" | awk -F: '{print $2}' | sed 's/^[ \t]*//g')
  Num2=$(mysql  -h $DBHost -e "show slave status\G;" |  grep "Slave_SQL_Running:" | awk -F: '{print $2}' | sed 's/^[ \t]*//g' )

if [[  $Num1 == "Yes" && $Num2 == "Yes" ]]
then 
   echo 50 
else
   echo 100
fi
}
 
#当用户输入错误,输出提示信息   
usage() {
  echo "Usage: $prog {Seconds_Behind_Master|Master_Slave_Check}"
}

main(){
  case $1 in
    Seconds_Behind_Master)
      Seconds_Behind_Master;
      ;;
    Master_Slave_Check)
      Master_Slave_Check;
      ;;
    *)
      usage
      exit 1
      ;;
   esac
}

main $1

监控主从主要监控几个项

Slave_IO_Running: Yes  #表示IO线程正在运行
Slave_SQL_Running: Yes  #表示SQL线程正在运行
Seconds_Behind_Master: 0 #表示延迟了多久

然后就可以通过下面这个脚本进行监控了。使用的时候还需要注意一下,为了安全,把连接的账号密码放到了/etc/my.cnf文件中,添加下面几行

[client]
user=monitor
password=123456

测试脚本能否成功获取数据MySQL_Monitor.sh
在这里插入图片描述
需要给脚本加上执行权限

chmod +x MySQL_Monitor.sh
mkdir -p  /etc/zabbix/zabbix_agentd_scripts/  #创建一个目录存放脚本
mv MySQL_Monitor.sh  /etc/zabbix/zabbix_agentd_scripts/

创建配置文件,自定义键

[root@localhost scripts]# cat /etc/zabbix/zabbix_agentd.d/monitor.conf
UserParameter=mysql_monitor[*],/etc/zabbix/zabbix_agentd_scripts/MySQL_Monitor.sh "$1"

然后再重启zabbix-agent

systemctl  restart zabbix-agent

在192.168.253.133上,获取键值测试一下

[root@localhost ~]# zabbix_get  -s 192.168.253.140 -k "mysql_monitor[Master_Slave_Check]"
50
[root@localhost ~]# zabbix_get  -s 192.168.253.140 -k "mysql_monitor[Seconds_Behind_Master]"
0

在这里插入图片描述
然后再zabbix中自定义键就行了
在这里插入图片描述

在这里插入图片描述
可以看到成功获取到数据了。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/L835311324/article/details/85853457