Zabbix监控案例(八)MySQL监控

Zabbix监控案例(八)MySQL监控

原本有一个数据库,现配置数据库主从复制。原本的数据库为主服务器,新装的数据库为从服务器。

  • 从数据库上
  1. 在从服务器上安装数据库
    ubuntu
apt update
apt install mysql-server-5.7 mysql-client-5.7

CentOS

yum install mariadb mariadb-server
  • 主数据库上
  1. 主服务器上,数据库配置开启log-bin
server-id=10
log-bin
  1. 重启服务
systemctl restart mariadb
  1. 授权复制帐号
GRANT REPLICATION SLAVE ON *.* TO 'repluser'@'%' IDENTIFIED BY '123456'; 
  1. 导出现有的数据库
mysql -uroot -hlocalhost -A > all.sql
  • 从数据库上
  1. 从数据库设置server-id,
vim /etc/mysql/mysql.conf.d/mysql.cnf
server-id=10
  1. 重启服务,并导入数据
systemctl restart mysql
mysql -uroot < all.sql
  1. 进入数据库,配置主从
CHANGE MASTER TO MASTER_HOST='192.168.99.21',MASTER_USER='repluser',MASTER_PASSWORD='123456',MASTER_LOG_FILE='master-log.000001',MASTER_LOG_POS=9525112;

start slave;
  1. 查看状态
show slave status \G;

在这里插入图片描述

  1. 下载监控插件
    https://www.percona.com/downloads/percona-monitoring-plugins/LATEST/
    在这里插入图片描述

  2. 安装

dpkg -i percona-zabbix-templates_1.1.8-1.artful.all.deb
add-apt-repository ppa:ondrej/php
apt-get update
apt install php5.6 php-mysql
  1. 在从服务器上,安装zabbix-agent,准备监控从数据库
dpkg -i zabbix-release_4.0-3+bionic_all.deb
apt update
apt install zabbix-agent
  1. 配置agent
vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.99.21
ServerActive=192.168.99.21
Hostname=192.168.99.24
  1. 复制监控的配置到agent配置目录下
cp /var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/
  1. 编辑配置文件
vim /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php.cnf
   <?php  
...
   $mysql_user='root';
   $mysql_pass='123';

如果数据库没有设置密码就留空

  1. 重启服务
systemctl restart zabbix-agent
  1. zabbix server端上添加主机
    在这里插入图片描述

  2. 本地测试

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

在这里插入图片描述

这个脚本中主要执行的是这个命令(图中划线),–host后面跟的是数据库的ip.
这个脚本执行结果会返回一个数字,如果没有则检查数据库能否连通
在这里插入图片描述
在这里插入图片描述

  1. zabbix服务端测试
zabbix_get -s 192.168.99.24 -p 10050 -k "MySQL.Key-read-requests"

在这里插入图片描述

  1. 导入模板(下载模板)
    在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  1. 关联模板
    在这里插入图片描述

  2. 稍等一会,查看数据
    在这里插入图片描述

  3. 有数据了
    在这里插入图片描述
    如何解决这些问题

cannot convert value to numeric type
#
Value "sudo: no tty present and no askpass program specified0" of type "string" is not suitable for value type "Numeric (float)"
#
Value "rm: cannot remove '/tmp/127.0.0.1-mysql_cacti_stats.txt': Operation not permitted0" of type "string" is not suitable for value type "Numeric (float)"

在这里插入图片描述

授权给zabbix用户root权限

# vim /etc/sudoers
zabbix ALL =(ALL) NOPASSWD: ALL

修改脚本,在31行的rm前加sudo

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

在这里插入图片描述

再看看监控项是否启用
在这里插入图片描述

监控主从复制状态

  1. 准备脚本
touch mysql_monitor.sh
chmod +x mysql_monitor.sh
vim mysql_monitor.sh
#!/bin/bash

DBHOST="127.0.0.1"
DBUser="root"
DBPass="123"

Seconds_Behind_Master(){
	NUM=`mysql -u${DBUser} -p${DBPass} -h${DBHOST}   -e "show slave status\G;" 2> /dev/null | grep "Seconds_Behind_Master:" | awk -F: '{print $2}'`
	echo $NUM
}

master_slave_check(){
NUM1=`mysql -u${DBUser} -p${DBPass} -h${DBHOST} -e "show slave status\G;" 2> /dev/null | grep "Slave_IO_Running" | awk -F:  '{print $2}' | sed 's/^[ \t]*//g'`
#echo $NUM1
NUM2=`mysql -u${DBUser} -p${DBPass} -h${DBHOST} -e "show slave status\G;" 2> /dev/null | grep "Slave_SQL_Running:" | awk -F:  '{print $2}' | sed 's/^[ \t]*//g'`
#echo $NUM2
if test $NUM1 == "Yes" &&  test $NUM2 == "Yes";then
    echo 1
else
    echo 0
fi
}

main(){
    case $1 in
    Seconds_Behind_Master)
        Seconds_Behind_Master;
        ;;
	master_slave_check)
	   master_slave_check
	   ;;
    esac
}
main $1

注意修改你的数据库连接的信息

  1. 添加配置,也可以在主配置文件里
# vim /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
UserParameter=mysql_monitor[*],/etc/zabbix/zabbix_agentd.d/mysql_monitor.sh "$1"
  1. 重启agent
systemctl restart zabbix-agent.service
  1. server端测试
zabbix_get -s 192.168.99.24 -p 10050 -k "mysql_monitor[master_slave_check]"

Warning忽略即可
在这里插入图片描述

  1. 在主机添加监控项
    在这里插入图片描述

  2. 验证数据
    在这里插入图片描述

发布了254 篇原创文章 · 获赞 346 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/weixin_42758707/article/details/101348535