十三zabbix低级自动发现之mysql

古人学问无遗力,少壮工夫老始成。这篇文章主要讲述十三zabbix低级自动发现之mysql相关的知识,希望能为你提供帮助。
一、简述低级自动发现举例
不管你一台机器启动几个mysql,我都只获取所有端口,然后把端口变成一个参数传递给监控项,监控项根据获得的端口,分别监控不同实例
系统自带的有网络接口、系统文件、cpu等
二、mysql环境准备192.168.10.128

mkdir /data/3307/data /data/3308/data -p
mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/3307/data
mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/3308/data
cat > /data/3307/my.cnf < < EOF
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/data/3307/data
port=3307
socket=/data/3307/mysql.sock
server_id=7
log_bin=/data/3307/mysql-bin
binlog_format=row
log_error=/data/3307/mysql.log
[mysql]
socket=/data/3307/mysql.sock
EOF
cat > /data/3308/my.cnf < < EOF
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/data/3308/data
port=3308
socket=/data/3308/mysql.sock
server_id=8
log_bin=/data/3308/mysql-bin
binlog_format=row
log_error=/data/3308/mysql.log
[mysql]
socket=/data/3308/mysql.sock
EOF
chown -R mysql.mysql /data/3307
chown -R mysql.mysql /data/3308
mysqld --defaults-file=/data/3307/my.cnf &
mysqld --defaults-file=/data/3308/my.cnf &
mysql -S /data/3307/mysql.sock -e \'select @@server_id; \'
mysql -S /data/3308/mysql.sock -e \'select @@server_id; \'

为两实例设置密码
mysqladmin -h 127.0.0.1 -uroot password \'123456\' -P3307
mysqladmin -h 127.0.0.1 -uroot password \'123456\' -P3308

创建了3307和3308俩实例
三、配置zabbix-agent1、获取mysql端口号netstat -lntp|awk -F "[ :\\t]+" \'/mysqld/{print$4}\'
2、配置脚本
[root@23bff2c4_1633529122 /]# cat /etc/zabbix/zabbix_agentd.d/discover.sh
#!/bin/bash
#mysql low-level discovery
res=`netstat -lntp|awk -F "[ :\\t]+" \'/mysqld/{print$4}\'`
port=($res)
printf \'{\'
printf \'"data":[\'
for key in ${!port[@]}
do
if [[ "${#port[@]}" -gt 1 & & "${key}" -ne "$((${#port[@]}-1))" ]]; then
printf \'{\'
printf "\\"{#MYSQLPORT}\\":\\"${port[${key}]}\\"},"
else [[ "${key}" -eq "((${#port[@]}-1))" ]]
printf \'{\'
printf "\\"{#MYSQLPORT}\\":\\"${port[${key}]}\\"}"
fi
done
printf \']\'
printf \'}\\n\'

chmod a+x /etc/zabbix/zabbix_agentd.d/discover.sh

3、给zabbix用户添加权限默认情况下载,zabbix会以zabbix用户的身份执行刚才的discover.sh脚本, netstat -lntup需要root用户的权限,所以这里我们使用suid来解决这个问题
chmod u+s /usr/bin/netstat
4、测试脚本sh /etc/zabbix/zabbix_agentd.d/discover.sh
十三zabbix低级自动发现之mysql

文章图片

5、配置文件
[root@23bff2c4_1633529122 /]# cat /etc/zabbix/zabbix_agentd.d/mysql.conf
UserParameter=mysql.discovery,sh /etc/zabbix/zabbix_agentd.d/discover.sh

重启zabbix-agent
systemctl restart zabbix-agent.service
6、测试在zabbix-server机器上测试
zabbix_get -s 192.168.10.128 -k mysql.discovery
十三zabbix低级自动发现之mysql

文章图片

7、添加监控项
[root@23bff2c4_1633529122 zabbix]# cat /etc/zabbix/zabbix_agentd.d/mysql.conf
UserParameter=mysql.discovery,sh /etc/zabbix/zabbix_agentd.d/discover.sh
UserParameter=mysql-status[*],echo "show global status where Variable_name=\'$2\'; " | HOME=/etc/zabbix /usr/local/mysql/bin/mysql -P $1 -N | awk \'{print $$2}\'

###mysql路径写全,不然mysql命令找不到,如果使用的是mariadb,可以正常找到mysql命令
额外设置一个账号密码文件,这个文件必须在mysql.conf的HOME路径下
[root@23bff2c4_1633529122 zabbix]# cat /etc/zabbix/.my.cnf
[mysql]
user=root
password=123456
host=127.0.0.1
[mysqladmin]
user=root
password=123456
host=127.0.0.1

重启zabbix-agent
systemctl restart zabbix-agent.service

?##直接将账号密码写进mysql.conf也行,但是zabbix-server验证会老是警告
十三zabbix低级自动发现之mysql

文章图片

8、验证zabbix_get -s 192.168.10.128 -k mysql-status[3307,Uptime]
十三zabbix低级自动发现之mysql

文章图片

四、web页面配置1、添加自动发现规则模板
十三zabbix低级自动发现之mysql

文章图片

十三zabbix低级自动发现之mysql

文章图片

十三zabbix低级自动发现之mysql

文章图片

十三zabbix低级自动发现之mysql

文章图片

十三zabbix低级自动发现之mysql

文章图片

2、主机关联模板
十三zabbix低级自动发现之mysql

文章图片

十三zabbix低级自动发现之mysql

文章图片

【十三zabbix低级自动发现之mysql】
十三zabbix低级自动发现之mysql

文章图片


    推荐阅读