1. 首页
  2. zabbix
  3. zabbix监控mysql服务器

zabbix监控mysql服务器

  • 发布于 2024-12-16
  • 7 次阅读

点击蓝字 关注我们


监控指标:

实例状态

连接数

流量

增删改查

缓冲池大小与利用率

1、编写监控数据采集脚本

cat /etc/my.cnf #创建一个普通用户用于免交互

[mysql]

host=192.168.0.14

user=wp

password=MyNewPass4!

[mysqladmin]

host=192.168.0.14

user=wp

password=MyNewPass4!

[mysqld]

user = mysql

port = 3306

datadir = /var/lib/mysql

socket = /var/lib/mysql/mysql.sock

bind-address = 0.0.0.0

pid-file = /var/run/mysqld/mysqld.pid

character-set-server = utf8

collation-server = utf8_general_ci

log-error = /var/log/mysqld.log

max_connections = 10240

open_files_limit = 65535

innodb_buffer_pool_size = 1G

innodb_flush_log_at_trx_commit = 2

innodb_log_file_size = 256M

innodb_flush_method = O_DIRECT

interactive_timeout = 1800

wait_timeout = 1800

slave-parallel-type = LOGICAL_CLOCK

slave-parallel-workers = 8

master-info-repository = TABLE

relay-log-info-repository = TABLE

测试:

echo “show variables where Variable_name='max_connections';” \|mysql -N \|awk '{print $2}'

监控数据采集脚本:

cat userparameter_mysql.conf

连接数

UserParameter=mysql.max_connections,echo “show variables where Variable_name='max_connections';” \| mysql -N \| awk '{print $2}'

UserParameter=mysql.current_connections,echo “show global status where Variable_name='Threads_connected';” \| mysql -N \| awk '{print $2}'

缓冲池

UserParameter=mysql.buffer_pool_size,echo “show variables where Variable_name='innodb_buffer_pool_size';” \| mysql -N \|awk '{printf “%.2f”,$2/1024/1024/1024}'

UserParameter=mysql.buffer_pool_usage_percent,echo “show global status where Variable_name='Innodb_buffer_pool_pages_free' or Variable_name='Innodb_buffer_pool_pages_total';” \| mysql -N \| awk '{a[NR]=$2}END{printf “%.1f”,100-((a[1]/a[2])*100)}'

增删改查

UserParameter=mysql.status[*],echo “show global status where Variable_name='$1';” \| mysql -N \| awk '{print $$2}'

实例状态

UserParameter=mysql.ping,mysqladmin ping \| grep -c alive

UserParameter=mysql.version,mysql -V

mv userparameter_mysql.conf /etc/zabbix/zabbix_agentd.d/

systemctl restart zabbix-agent

在zabbix server测试是否能获取到值

/usr/local/zabbix/bin/zabbix_get -s 192.168.0.14 -p 10050 -k “mysql.status[ status[Com_select]”

2、创建模板

测试主机关联zabbix自带模板:

3、将运行MySQL的主机关联模板

删除之前模板,导入做好的模板mysql_templates:

4、监控mysql主从同步

(1)在Zabbix Agent端/data/sh目录创建Shell脚本:mysql_ab_check.sh,写入如下代码:

!/bin/bash

/usr/local/mysql/bin/mysql -uroot -e 'show slave status\G' \|grep -E “Slave_IO_Running\|Slave_SQL_Running”\|awk '{print $2}'\|grep -c Yes

(2)在客户端Zabbix_agentd.conf配置文件中加入如下代码:

UserParameter=mysql.replication,sh /data/sh/mysql_ab_check.sh

(3) Zabbix服务器端获取监控数据,如果返回值为2,则证明丛库I/O、SQL线程均为YES,表示主从同步成功:

/usr/local/zabbix/bin/zabbix_get -s 192.168.149.129 -k mysql.replication

(4) Zabbix WEB平台,在192.168.149.129 hosts中创建item监控项,如图13-24(a)、13-24(b)所示,单击右上角create item,Key填写Zabbix Agentd配置文件中的mysql.replication即可:

MYSQL主从监控项创建Graph图像,如图所示:

MYSQL主从监控项创建触发器,如图所示,MYSQL主从状态监控,设置触发器条件为key值不等于2即可,不等于2即表示MYSQL主从同步状态异常,匹配触发器,执行Actions:

以上,既然看到这里了,如果觉得不错,随手点个赞、在看、转发三连吧,如果想第一时间收到推送,也可以给我个星标⭐~谢谢你看我的文章,我们,下次再见。

原文链接: https://mp.weixin.qq.com/s/ix1UL-mKRC-TX9mQlXXGPQ