zabbix低级自动发现之mysql多实例

2017-10-28 分类:监控 阅读(4804) 评论(0)

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

前提:先完成单实例的监控

这里我的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 &

检查多实例是否正常

[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))" ]];then

printf '{'

printf "\"{#MYSQLPORT}\":\"${port[${key}]}\"},"

else [[ "${key}" -eq "((${#port[@]}-1))" ]]

printf '{'

printf "\"{#MYSQLPORT}\":\"${port[${key}]}\"}"

fi

done

printf ']'

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/sudoers

sed -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 restart

Shutting down Zabbix agent:     [ OK ]

Starting Zabbix agent:     [ OK ]

默认情况下载,zabbix会以zabbix用户的身份执行刚才的discover.sh脚本, netstat -lntup需要root用户的权限,所以这里我们使用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"},{"{#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.sh

UserParameter=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 alive

UserParameter=mysql-version,mysql -V

[root@agent zabbix_agentd.d]# service zabbix-agent restart

Shutting 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文件

评论已关闭

登录

忘记密码 ?

切换登录

注册