十三zabbix低级自动发现之mysql
Posted 哭泣的馒头
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了十三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-agent
1、获取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
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
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验证会老是警告
8、验证
zabbix_get -s 192.168.10.128 -k mysql-status[3307,Uptime]
四、web页面配置
1、添加自动发现规则模板
2、主机关联模板
以上是关于十三zabbix低级自动发现之mysql的主要内容,如果未能解决你的问题,请参考以下文章