当前位置: 首页 > 工具软件 > zabbix-backup > 使用案例 >

zabbix 监控mysql权限_zabbix-监控mysql

夏侯腾
2023-12-01

监控mysql

主要监控myql的连接数、主从同步状态、同步延迟等。

实现mysql主从同步

从节点配置:

1、apt install mysql-server

2、vim /etc/mysql/mysql.conf.d/mysqld.cnf

[mysqld]

bind-address = 0.0.0.0

relay-log = /var/lib/mysql/relay-log

server-id = 204

3、systemctl restart mysql

主节点配置:

1、vim /etc/mysql/mysql.conf.d/mysqld.cnf

[mysqld]

bind-address = 0.0.0.0

server-id = 203

log-bin = /var/lib/mysql/master-log

2、systemctl restart mysql

mysql-master创建授权同步账号

mysql> grant replication slave on *.* to 'mysql-slave'@'192.168.3.%' identified by 'linux';

将主节点的数据备份到一个sql文件中

1、mysqldump --all-databases --single_transaction --flush-logs --master-data=2 --lock-tables > /opt/backup.sql

2、scp /opt/backup.sql 192.168.3.204:/opt

从节点导入sql语句

1、mysql < /opt/backup.sql

2、head -n30 /opt/backup.sql #查看二进制日志位置

CHANGE MASTER TO MASTER_LOG_FILE='master-log.000002', MASTER_LOG_POS=154;

#则表示master-log.000002之前的已经导入到当前的mysql中,从MASTER_LOG_POS=154之后的数据开始做主从同步

3、mysql> CHANGE MASTER TO MASTER_HOST='192.168.3.203',MASTER_USER='mysql-slave',MASTER_PASSWORD='linux',MASTER_LOG_FILE='master-log.000002',MASTER_LOG_POS=154;

#指定主从同步信息,指定同步账号,从指定的位置开启同步

4、mysql> start slave; #开启同步线程

5、mysql> show slave status\G;

zabbix通过percona插件监控mysql数据

percona插件会使用php获取mysql上的数据,所以需要安装php连接mysql的软件包;

安装完percona插件,里面会有一个自定义监控项的配置文件以及一个shell和php脚本,在通过监控项查询数据时会调用shell脚本,当在300s内还要查询这些监控项,则shell脚本会通过判断/tmp/下的指定文件的创建文件时的时间戳与当前时间做对比(第一次查询监控项的数据时,会生成此文件),如果小于300s,则不进行查询,如果大于300s,才进行查询;

shell脚本查询监控项的数据时,会通过调用php脚本获取数据库中的数据;

目前Percona与ubuntu自带的php 7.2不兼容,需要安装php 5.6版本;

安装percona插件

1、dpkg -i percona-zabbix-templates_1.1.8-1.artful_all.deb

2、cp /var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.conf.d/

#将percona官方的自定义监控项配置文件拷贝到zabbix agent的目录下

3、

安装php

1、add-apt-repository ppa:ondrej/php #安装php源

2、apt update

3、apt install -y php5.6 php5.6-mysql

4、vim /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php.cnf

$mysql_user ='root';

$mysql_pass ='';

#创建连接mysql的认证文件,php连接mysql需要有账号密码连接,并且该账号需要有权限访问数据库中的数据

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

#通过脚本查看是否能够获取到数据库中的数据

mysql-master服务器上agent的配置

1、vim /etc/zabbix/zabbix_agentd.conf #导入自定义监控项的配置文件

Include=/etc/zabbix/zabbix_agentd.conf.d/*.conf

User=root

AllowRoot=1

2、vim /lib/lib/systemd/system/zabbix-agent.service

#指定agent的service文件中启动agent的用户及组为root

3、systemctl daemon-reload

2、systemctl restart zabbix-agent

注:

修改agent的启动用户为root是因为,agent需要执行脚本去连接数据库,但是有的权限不支持普通用户执行,所以修改为root启动agent,去执行脚本

缩小数据获取间隔

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

if [ `expr $TIMENOW - $TIMEFLM` -gt 60 ]; then #修改脚本数据获取间隔

2、zabbix web上也需要把模板的监控项数据获取间隔修改为60s

server端测试

/apps/zabbix-server/bin/zabbix_get -s 192.168.3.203 -p 10050 -k MySQL.Open-files

zabbix web上也需要创建模板,把模板关联到主机;percona自带的模板不兼容zabbix 3、4,所以无法使用

mysql监控脚本

此脚本配置在mysql从节点上,主要用于查看从节点的主从同步延迟,以及主从同步的线程是否开启

1、vim /etc/zabbix/zabbix_agentd.d/mysql_monitor.sh

#!/bin/bash

Seconds_Behind_Master() {

NUM=$(mysql -uroot -e "show slave status\G;" | grep Seconds_Behind_Master | awk '{print $NF}')

echo "$NUM"

}

master_slave_check() {

NUM1=$(mysql -uroot -e "show slave status\G;" | grep -w Slave_IO_Running | awk '{print $NF}')

NUM2=$(mysql -uroot -e "show slave status\G;" | grep -w Slave_SQL_Running | awk '{print $NF}')

if [ $NUM1 == 'Yes' ] && [ $NUM2 == 'Yes' ];then

echo 50

else

echo 100

fi

}

main() {

case $1 in

Seconds_Behind_Master)

Seconds_Behind_Master

;;

master_slave_check)

master_slave_check

;;

esac

}

main $1

2、chmod a+x /etc/zabbix/zabbix_agentd.d/mysql_monitor.sh

agent配置

1、vim /etc/zabbix/zabbix_agentd.conf

Include=/etc/zabbix/zabbix_agentd.d/*.conf

AllowRoot=1 #zabbix用户是无法使用root账号登录数据库的

User=root

2、vim /etc/zabbix/zabbix_agentd.d/all.conf

UserParameter=mysql_monitor[*],/etc/zabbix/zabbix_agentd.d/mysql_monitor.sh "$1"

#所有的自定义监控项都放到一个单独的配置文件中,方便以后批量复制

3、vim /lib/systemd/system/zabbix-agent.service

User=root

Group=root

4、systemctl daemon-reload

5、systemctl restart zabbix-agent

server端测试

/apps/zabbix-server/bin/zabbix_get -s 192.168.3.204 -p 10050 -k mysql_monitor["Seconds_Behind_Master"]

0

小知识

stat -c %y FILENAME #查看此文件创建时的unix时间戳

 类似资料: