Zabbix低級主動發現之MySQL多實例

  接上篇: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分佈式監控

相關文章
相關標籤/搜索