45321 发表于 2016-5-13 09:43:37

zabbix自动发现监控多台mysql

1: 前言
    由于前面写的博客,zabbix自动发现监控redis、zabbix自动发现监控mongo这两篇博客虽然都能自动发现并监控,但是由于每个zabbix_agentd都得配置,监控起来非常不方便,因此,再做了个模板,能够自动发现并监控多台mysql。这个方法在监控mongo、redis或者mysql主从等时候也都适用。

2: 在zabbix_agentd下编写自动发现并监控多台mysql的脚本,脚本如下:
#!/bin/sh
#zhuangweihong 20160512 zabbix discover mysql

mysqlconf=`cat /usr/local/zabbix/mysql.conf|grep -v '^#'`
mysqlcount=`echo "${mysqlconf}"|wc -l`

if [[ -z "$mysqlconf" ]];then
    echo "mysql has not find"
    exit 2
fi

printf '{\n'
printf '\t"data":[\n'
mycount=1
echo "$mysqlconf"|while read line;do
    myip=`echo $line|awk '{print $1}'`
    myport=`echo $line|awk '{print $2}'`
    if [ $mysqlcount -eq $mycount ];then
      printf "\t\t\t{\"{#MYSQLIP}\":\"$myip\",\"{#MYSQLPORT}\":\"$myport\"}\n"
    else
      printf "\t\t\t{\"{#MYSQLIP}\":\"$myip\",\"{#MYSQLPORT}\":\"$myport\"},\n"
      let "mycount++"
    fi
done

printf '\t]\n'
printf '}\n'
exit 0

其中配置文件vim /usr/local/zabbix/mysql.conf,第一个参数为ip,第二个参数为port,例如:
192.168.0.1 3306

192.168.0.2 3306

3: 在zabbix_agentd添加配置如下:
UserParameter=zabbix.discovery.mysql.all,/usr/local/zabbix/zabbix_discover_mysql.sh
UserParameter=mysql.status.all[*],mysql -h $3 -P$1 -e "show global status"|grep "$2[[:space:]]"|cut -f2

注意事项:
    1: mysql.cnf里面可以配置个用户名和密码,假如配置如下:

    user=zabbix

    password=xxxxx

    2: 被监控的机器上必须要有usage权限,命令如下:

    grant usage on *.* to zabbix@'192.168.0.99' identified by 'xxxxx';
      192.168.0.99配置成zabbix_agentd的ip

    3: 配置完成后zabbix_agentd重启


4: 在zabbix_server的网页添加自动发现模版:命名为:MySQL Discovery Service ALL。

5: 添加自动发现规则,命名和键值如下:MySQL Discovery Service ALL、zabbix.discovery.mysql.all。设置成15分钟发现一次,失效的发现保留一天即可。配置截图如下:


6: 创建监控项原型,名称和键值如下:
{#MYSQLIP}/{#MYSQLPORT}:MySQL bytes sent per second       mysql.status.all[{#MYSQLPORT},Bytes_sent,{#MYSQLIP}]
{#MYSQLIP}/{#MYSQLPORT}:MySQL bytes received per second   mysql.status.all[{#MYSQLPORT},Bytes_received,{#MYSQLIP}]
{#MYSQLIP}/{#MYSQLPORT}:MySQL service is running          net.tcp.service
监控一下自己想监控的项目。

截部分图如下:


7: 如何扩展?
    想要多监控几台mysql的话,只需要vim /usr/local/zabbix/mysql.conf添加自己想要监控的mysql ip和mysql port,然后在对应的mysql上grant usage on *.* to zabbix@'192.168.0.99' identified by 'xxxxx';即可。zabbix会自动发现并监控,如果哪些突然不想监控的话,配置上去除后,等一天后zabbix就会删除了。

页: [1]
查看完整版本: zabbix自动发现监控多台mysql