当前位置: 当前位置:首页 >数据库 >Linux学习-zabbix低级自动发现之mysql多实例 正文

Linux学习-zabbix低级自动发现之mysql多实例

2025-11-04 19:25:55 来源:多维IT资讯作者:人工智能 点击:352次

  本文除了指名在zabbix-server操作,学习z现其他均在zabbix-agent上操作

  前提:先完成单实例的低动发l多监控

  这里我的mysql单实例是直接yum安装的

  开启mysql多实例

  准备配置文件

[root@agent ~]# cp /etc/my.cnf /etc/my3307.cnf [root@agent ~]# vim /etc/my3307.cnf my3307.cnf内容如下 [mysqld] datadir=/data/3307/ socket=/data/3307/mysql.sock port=3307 user=mysql symbolic-links=0 [mysqld_safe] log-error=/data/3307/mysqld.log pid-file=/data/3307/mysqld.pid [root@agent ~]# cp /etc/my3307.cnf /etc/my3308.cnf [root@agent ~]# sed -i s#3307#3308#g /etc/my3308.cnf

  初始化数据库3307

[root@agent ~]# mysql_install_db --user=mysql --defaults-file=/etc/my3307.cnf [root@agent ~]# mysqld_safe --defaults-file=/etc/my3307.cnf &

  初始化数据库3308

[root@agent ~]# mysql_install_db --user=mysql --defaults-file=/etc/my3308.cnf [root@agent ~]# mysqld_safe --defaults-file=/etc/my3308.cnf &

  检查多实例是WordPress模板否正常

[root@agent ~]# mkdir /data/3306 [root@agent ~]# ln -s /var/lib/mysql/mysql.sock /data/3306/

  检查

[root@agent ~]# find /data -name "*.sock" /data/3306/mysql.sock /data/3308/mysql.sock /data/3307/mysql.sock [root@agent ~]# chmod 755 /data/* [root@agent ~]# ll /data/* -d drwxr-xr-x 2 root root 4096 Nov 23 01:45 /data/3306 drwxr-xr-x 4 mysql root 4096 Nov 23 01:39 /data/3307 drwxr-xr-x 4 mysql root 4096 Nov 23 01:40 /data/3308 [root@agent ~]# netstat -lntp|awk -F "[ :]+" /mysqld/{print$5} 3306 3307 3308 [root@agent ~]# mkdir /etc/zabbix/scripts [root@agent ~]# vi /etc/zabbix/scripts/discover.sh

  discover.sh脚本内容如下

#!/bin/bash #mysql low-level discovery res=`netstat -lntp|awk -F "[ :\t]+" /mysqld/{print$5}` port=($res) printf { printf "data":[ for key in ${!port[@]} do if [[ "${#port[@]}" -gt 1 && "${key}" -ne "$((${#port[@]}-1))" ]];thenprintf {printf "\"{#MYSQLPORT}\":\"${port[${key}]}\"},"else [[ "${key}" -eq "((${#port[@]}-1))" ]]printf {printf "\"{#MYSQLPORT}\":\"${port[${key}]}\"}"fidoneprintf ]printf }\n

  测试脚本

[root@agent ~]# sh /etc/zabbix/scripts/discover.sh{"data":[{"{#MYSQLPORT}":"3306"},{"{#MYSQLPORT}":"3307"},{"{#MYSQLPORT}":"3308"}]}sed -i 98a zabbix\tALL=(ALL)\tNOPASSWD: /bin/netstat /etc/sudoerssed -i s@^Defaults requiretty@#Defaults requiretty@g /etc/sudoers[root@agent ~]# cd /etc/zabbix/zabbix_agentd.d/[root@agent zabbix_agentd.d]# vi mysql.conf

  内容如下:

UserParameter=mysql.discovery,sh /etc/zabbix/scripts/discover.sh[root@agent zabbix_agentd.d]# service zabbix-agent restartShutting down Zabbix agent: [ OK ]Starting Zabbix agent: [ OK ]

  默认情况下载,zabbix会以zabbix用户的实例身份执行刚才的discover.sh脚本, netstat -lntup需要root用户的亿华云计算学习z现权限,所以这里我们使用suid来解决这个问题

​chmod u+s /usr/bin/netstat

  在zabbix-server上测试

[root@zabbix-server ~]# zabbix_get -s 192.168.56.23 -k mysql.discovery{"data":[{"{#MYSQLPORT}":"3306"},低动发l多{"{#MYSQLPORT}":"3307"},{"{#MYSQLPORT}":"3308"}]}[root@agent zabbix_agentd.d]# cd /etc/zabbix/zabbix_agentd.d[root@agent zabbix_agentd.d]# vi mysql.conf

  修改后的内容为

UserParameter=mysql.discovery,sh /etc/zabbix/scripts/discover.shUserParameter=mysql-status[*],echo "show global status where Variable_name=$2;" |mysql -S /data/$1/mysql.sock -N | awk {print $$2}UserParameter=mysql-ping[*],mysqladmin -S /data/$1/mysql.sock ping | grep -c aliveUserParameter=mysql-version,mysql -V[root@agent zabbix_agentd.d]# service zabbix-agent restartShutting down Zabbix agent: [ OK ]Starting Zabbix agent: [ OK ]

  在zabbix-server上分别进行如下测试

[root@zabbix-server ~]# zabbix_get -s 192.168.56.23 -k mysql-ping[3306]1[root@zabbix-server ~]# zabbix_get -s 192.168.56.23 -k mysql-ping[3307]1[root@zabbix-server ~]# zabbix_get -s 192.168.56.23 -k mysql-ping[3308]1

  导入我制作好的模板mysql_LLD_templates.xml文件

作者:系统运维
------分隔线----------------------------
头条新闻
图片新闻
新闻排行榜