接上篇:Zabbix自動發現與主動註冊html
在一個agent安裝一個maraidbpython
拷貝一個原始配置文檔而且修改配置用於開啓多實例mysql
按照配置文件初始化數據庫web
mysql_install_db --user=mysql --defaults-file=/etc/my3307.cnf mysql_install_db --user=mysql --defaults-file=/etc/my3308.cnf
啓動sql
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 '}'
手動執行腳本json
sh discover_mysql.sh 輸出爲 {"data":[{"{#MYSQLPORT}":"3306"},{"{#MYSQLPORT}":"3307"},{"{#MYSQLPORT}":"3308"}]}
判斷是否是json格式使用python裏面的一個工具(能排版出來就是json)bash
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分佈式監控