這篇文章主要講解了“Zabbix實(shí)現自動(dòng)發(fā)現并監控”,文中的講解內容簡(jiǎn)單清晰,易于學(xué)習與理解,下面請大家跟著(zhù)小編的思路慢慢深入,一起來(lái)研究和學(xué)習“Zabbix實(shí)現自動(dòng)發(fā)現并監控MySQL”吧!
一、方案需求及思路
因跑MySQL服務(wù)的比較多,并且每臺服務(wù)器可能會(huì )運行多個(gè)不同端口的數據庫,如果單獨手動(dòng)一臺一臺去修改agent.conf,web添加監控,這樣太麻煩,費時(shí)費力。此時(shí)有兩種方案;其一:在每臺跑mysql的服務(wù)器上部署一個(gè)自動(dòng)發(fā)現腳本,修改agent.conf 并自定義KEY;其二:統一由一臺服務(wù)器來(lái)監控所有服務(wù)器上所有運行的mysql服務(wù)。發(fā)現好像方案二比較更簡(jiǎn)便些。
方案二思路:
假設有A、B、C、D、E五臺服務(wù)器,上面都跑有mysql,并且每臺都跑有2+個(gè)mysql,在此假定由A服務(wù)器來(lái)監控所有服務(wù)器上mysql的狀態(tài)。此時(shí)需要先把五臺服務(wù)器的IP及其上mysql服務(wù)所占用的port 記錄下來(lái),統一寫(xiě)到一個(gè)文件里:eg:
192.168.12.14 3306 192.168.12.14 3307 192.168.12.15 3308 192.168.12.15 3380 ……
把該文件放到zabbix 目錄下的某一個(gè)目錄,并賦權限,再寫(xiě)一個(gè)json的腳本來(lái)調取此文件,并且需要在執行腳本文件的時(shí)候來(lái)進(jìn)行IP傳值并輸出該IP上所有的port。
添加自定義key。其中需要定義一個(gè)自動(dòng)發(fā)現的key,然后定義一個(gè)根據IP查詢(xún)此服務(wù)器上所有端口的mysql狀態(tài)的key。重啟zabbix_agentd,通過(guò)zabbix_get來(lái)獲取參數看看是否正常。
配置web界面。在web配置界面中,創(chuàng )建一個(gè)主機,該主機的ip指向A服務(wù)器的IP,切該服務(wù)器的[HOST.NAME] 指向所要監控mysql的IP,([HOST.NAME]一般指的是”Visable name”),把監控mysql的服務(wù)器都指向一個(gè)組,然后調用自動(dòng)發(fā)現mysql模版。之后在創(chuàng )建剩下的幾臺服務(wù)器即可。
此方案也不是一個(gè)很好的方案,但相對來(lái)說(shuō)還是不錯的,以后若有新增加的mysql服務(wù)器,只需要修改寫(xiě)有IP和PORT的列表文件即可,不需要重啟agent。
二、配置Agent:
1、編輯mysqld文件
# cat /usr/local/zabbix/bin/mysqld 172.16.8.250 3306 172.16.8.250 3309 172.16.8.252 3306 172.16.8.252 3307
注:本文均在8.250上實(shí)現監控252上的數據庫及本地250的數據庫
2、mysql賦權限
分別將四個(gè)數據庫都賦給172.16.8.250主機以用戶(hù)zabbix,密碼111的訪(fǎng)問(wèn),show global status權限。
3、編輯discovery_mysql.sh
# cat /usr/local/zabbix/bin/discovery_mysql.sh #!/bin/bash #mysql low-level discovery #Script_name discovery_mysql.sh res=`cat /usr/local/zabbix/bin/mysqld|grep $1|grep -v "^#"|awk '{print $2}'` port=($res) printf '{\n' printf '\t"data":[\n' for key in ${!port[@]} do if [[ "${#port[@]}" -gt 1 && "${key}" -ne "$((${#port[@]}-1))" ]];then printf '\t {\n' printf "\t\t\t\"{#MYSQLPORT}\":\"${port[${key}]}\"},\n" else [[ "${key}" -eq "((${#port[@]}-1))" ]] printf '\t {\n' printf "\t\t\t\"{#MYSQLPORT}\":\"${port[${key}]}\"}\n" fi done printf '\t ]\n' printf '}\n'
賦執行權限:
# chmod +x /usr/local/zabbix/bin/discovery_mysql.sh
測試執行效果:
# sh /usr/local/zabbix/bin/discovery_mysql.sh 172.16.8.250 { "data":[ { "{#MYSQLPORT}":"3306"}, { "{#MYSQLPORT}":"3309"} ] }
把上述結果粘貼到j(luò )son檢測網(wǎng)站,查看結果是否正確 http://jsonlint.com/
4、修改agentd.conf
開(kāi)啟include選項
Include=/usr/local/zabbix/etc/zabbix_agentd/
添加mysql自動(dòng)發(fā)現規則,自定義key
# cat /usr/local/zabbix/etc/zabbix_agentd/mysql_discovery.conf #### $1 ==IP $2 == PORT $3==COMMAND UserParameter=zabbix_low_discovery[*],/bin/bash /usr/local/zabbix/bin/discovery.sh $1 UserParameter=mysql_stats[*],mysql -uzabbix -p111 -P$2 -h$1 -e "show global status"|grep "\<$3\>"|cut -f2 UserParameter=mysql.alive[*],mysqladmin -uzabbix -p111 -h$1 -P$2 ping|grep -c alive
5、測試:
重啟zabbix_agentd,在zabbix server中通過(guò)zabbix_get測試zabbix mysql自動(dòng)發(fā)現規則是否正確。
注:172.16.8.250是zabbix server,agent地址為127.0.0.1,請根據自己情況修改下面命令。
# zabbix_get -s 127.0.0.1 -k zabbix_log_discovery[172.16.8.250] { "data":[ { "{#MYSQLPORT}":"3306"}, { "{#MYSQLPORT}":"3309"} ] } # zabbix_get -s 127.0.0.1 -k mysql_stats[172.16.8.250,3306,Uptime]
可正確取得數據便為正確,
轉載請注明原文出處:http://www.minunix.com/2014/04/zabbix_low_discovery_mysql_01/
三、Zabbix WEB 添加主機
1、導入模版discovery_mysql.xml
2、添加主機:
鏈接模版:
注:因模版定義的更新時(shí)間為3600s,如需快速看到效果,可先修改模版自定義規則的“Interval”更新時(shí)間改為60,之后便可再”last data”中看到數據。
監控172.16.8.252,只需要創(chuàng )建主機,將visable name 的值172.16.8.250 改為172.16.8.252即可。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。
Copyright ? 2009-2022 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 特網(wǎng)科技 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 百度云 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站