十三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

\'十三、zabbix低级自动发现之mysql_zabbix\'

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_zabbix_02\'

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_zabbix_03\'

8、验证

zabbix_get -s 192.168.10.128 -k mysql-status[3307,Uptime]

\'十三、zabbix低级自动发现之mysql_zabbix_04\'

四、web页面配置

1、添加自动发现规则模板

\'十三、zabbix低级自动发现之mysql_zabbix_05\'

\'十三、zabbix低级自动发现之mysql_zabbix_06\'

\'十三、zabbix低级自动发现之mysql_zabbix_07\'

\'十三、zabbix低级自动发现之mysql_zabbix_08\'

\'十三、zabbix低级自动发现之mysql_zabbix_09\'

2、主机关联模板

\'十三、zabbix低级自动发现之mysql_zabbix_10\'

\'十三、zabbix低级自动发现之mysql_zabbix_11\'

\'十三、zabbix低级自动发现之mysql_zabbix_12\'

以上是关于十三zabbix低级自动发现之mysql的主要内容,如果未能解决你的问题,请参考以下文章

Zabbix监控之低级自动发现以及MySQL多实例

Zabbix学习笔记(三十三)

zabbix自动发现规则之磁盘IO监控

Zabbix分布式监控

zabbix5.0自动发现和自动注册

使用 zabbix 自动发现监控 MySQL