接上篇:Zabbix自动发现与主动注册
在一个agent安装一个maraidb
拷贝一个原始配置文档并且修改配置用于开启多实例
按照配置文件初始化数据库
mysql_install_db --user=mysql --defaults-file=/etc/my3307.cnf
mysql_install_db --user=mysql --defaults-file=/etc/my3308.cnf
启动
mysqld_safe --defaults-file=/etc/my3307.cnf &
mysqld_safe --defaults-file=/etc/my3308.cnf &
定义一个脚本/etc/zabbix/zabbix_agentd.d/discover_mysql.sh
#!/bin/bash
#mysql low-lever discovery
res=`netstat -lntp|grep mysql |awk -F "[ :]+" '{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 '}'
手动执行脚本
sh discover_mysql.sh
输出为
{"data":[{"{#MYSQLPORT}":"3306"},{"{#MYSQLPORT}":"3307"},{"{#MYSQLPORT}":"3308"}]}
判断是不是json格式使用python里面的一个工具(能排版出来就是json)
sh discover_mysql.sh |python -m json.tool
自定义key去调用脚本/etc/zabbix/zabbix_agentd.d/discover_mysql.conf
UserParameter=discover_mysql, sh /etc/zabbix/zabbix_agentd.d/discover_mysql.sh
重启zabbix agent
在server上面查看
zabbix_get -s 192.168.80.160 -k discover_mysql
报错
因为netstat -anlp加了参数p需要root权限,而在server上面获取使用zabbix用户执行
在agent加修改
chmod u+s `which netstat`
取值正确了
在web创建模板 本次直接在主机上面创建discover规则
创建items的原型
修改配置文件/etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
UserParameter=mysql.status[*],echo "show global status where Variable_name='$2';" | HOME=/var/lib/zabbix mysql -uroot -p123456 -h127.0.0.1 -P $1 -N | awk '{print $$2}'
这里把密码固定了
设置多实例的密码
mysqladmin -h 127.0.0.1 -uroot password '123456' -P3306
mysqladmin -h 127.0.0.1 -uroot password '123456' -P3307
mysqladmin -h 127.0.0.1 -uroot password '123456' -P3308
修改完可以登录验证一下
重启zabbix agent
在zabbix server验证
zabbix_get -s 192.168.80.160 -k mysql.status[3306,Bytes_sent]
创建items原型(可以参考系统自定义的mysql模板)这里传递的两个参数第一个是端口号使用定义的变量代替
添加完克隆多个,为了区分不同端口名称可以加端口变量
创建完毕就自动发现了
下一篇:Zabbix分布式监控