溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Zabbix實現自動發現并監控MySQL

發布時間:2021-08-09 12:45:25 來源:億速云 閱讀:200 作者:chen 欄目:系統運維

這篇文章主要講解了“Zabbix實現自動發現并監控MySQL”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Zabbix實現自動發現并監控MySQL”吧!

一、方案需求及思路

因跑MySQL服務的服務器比較多,并且每臺服務器可能會運行多個不同端口的數據庫,如果單獨手動一臺一臺去修改agent.conf,web添加監控,這樣太麻煩,費時費力。此時有兩種方案;其一:在每臺跑mysql的服務器上部署一個自動發現腳本,修改agent.conf 并自定義KEY;其二:統一由一臺服務器來監控所有服務器上所有運行的mysql服務。發現好像方案二比較更簡便些。

方案二思路:

假設有A、B、C、D、E五臺服務器,上面都跑有mysql,并且每臺都跑有2+個mysql,在此假定由A服務器來監控所有服務器上mysql的狀態。此時需要先把五臺服務器的IP及其上mysql服務所占用的port 記錄下來,統一寫到一個文件里:eg:

192.168.12.14  3306 192.168.12.14  3307 192.168.12.15  3308 192.168.12.15  3380 ……

把該文件放到zabbix 目錄下的某一個目錄,并賦權限,再寫一個json的腳本來調取此文件,并且需要在執行腳本文件的時候來進行IP傳值并輸出該IP上所有的port。

添加自定義key。其中需要定義一個自動發現的key,然后定義一個根據IP查詢此服務器上所有端口的mysql狀態的key。重啟zabbix_agentd,通過zabbix_get來獲取參數看看是否正常。

配置web界面。在web配置界面中,創建一個主機,該主機的ip指向A服務器的IP,切該服務器的[HOST.NAME] 指向所要監控mysql的IP,([HOST.NAME]一般指的是”Visable name”),把監控mysql的服務器都指向一個組,然后調用自動發現mysql模版。之后在創建剩下的幾臺服務器即可。

此方案也不是一個很好的方案,但相對來說還是不錯的,以后若有新增加的mysql服務器,只需要修改寫有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上實現監控252上的數據庫及本地250的數據庫

2、mysql賦權限

分別將四個數據庫都賦給172.16.8.250主機以用戶zabbix,密碼111的訪問,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"} ] }

把上述結果粘貼到json檢測網站,查看結果是否正確 http://jsonlint.com/

4、修改agentd.conf

開啟include選項

Include=/usr/local/zabbix/etc/zabbix_agentd/

添加mysql自動發現規則,自定義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中通過zabbix_get測試zabbix mysql自動發現規則是否正確。

注: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、添加主機:

Zabbix實現自動發現并監控MySQL

鏈接模版:

Zabbix實現自動發現并監控MySQL

注:因模版定義的更新時間為3600s,如需快速看到效果,可先修改模版自定義規則的“Interval”更新時間改為60,之后便可再”last data”中看到數據。

監控172.16.8.252,只需要創建主機,將visable name 的值172.16.8.250 改為172.16.8.252即可。

感謝各位的閱讀,以上就是“Zabbix實現自動發現并監控MySQL”的內容了,經過本文的學習后,相信大家對Zabbix實現自動發現并監控MySQL這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女