共計 1846 個字符,預計需要花費 5 分鐘才能閱讀完成。
自動寫代碼機器人,免費開通
這篇文章主要為大家展示了“怎么使用 Zabbix 的自動發現來監控 mongo 數據庫”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓丸趣 TV 小編帶領大家一起研究并學習一下“怎么使用 Zabbix 的自動發現來監控 mongo 數據庫”這篇文章吧。
監控 mongo 寫個模板其實挺快的,如果公司每個 mongo 使用的端口都一致的話,就可直接建立一套模板,然后這個模板鏈接到各個服務器上即可。但如果公司使用 mongo 的端口如果不一致的話,那建議使用 zabbix 的自動發現的功能,自動發現 mongo 監聽的端口,并對它進行相關數據的收集。
先看一下效果圖
此監控圖是 zabbix 的篩選功能可能把相關的圖整合到一個頁面里面去。
具體的自動發現實現如下:
探索規則配置如上,機器上的 zabbix agent 配置如下:
UserParameter=mongo.discover,python /usr/local/zabbix/discover_mongo.py
其中 /usr/local/zabbix/discover_mongo.py 為自動發現的腳本,腳本內容如下:
#coding:utf-8 import simplejson as json import commands (status, output) = commands.getstatusoutput(sudo netstat -tlnp|grep mongod |awk {print $4} |awk -F : {print $(NF)} |sort -u|grep -v ^28 ) outputs = output.split(\n) ports = [] for port in outputs: ports += [{ {#MONGOPORT} : port}] print json.dumps({data :ports},sort_keys=True,indent=4)
使用系統命令 netstat 把監聽的端口篩選出來,然后以 json 的格式進行輸出。定義到此就可以自動發現 zabbix 監聽的端口。
注意:netstat 一般 zabbix 用戶沒有權限,需要 visudo 進行對應的設置,此腳本可能得針對自己的環境進行相對的調整。
探索完端口后,zabbix server 就需要以端口為其中一個參數向 zabbix agent 取數據,其中項目原型配置如下:
如果返回的 {#MONGOPORT} 有多個的話,那監控項目就乘以幾。
其中 mongo.status 的定義如下(此定義還是 zabbix agent 下):
UserParameter=mongo.status[*],sh /usr/local/zabbix/check_mongo.sh -p $1 -k $2 -K $3
使用一個腳本傳入參數來獲取 mongo 的一些數據收集,后續可直接擴展此腳本(- p 代表端口),mongo 的 serverStatus 有多個參數,采集的就用到 opcounters 等,- k 和 - K 能具體獲取其數值。其中腳本如下:
#!/bin/sh while getopts p:k:K: opt do case $opt in p ) mongo_port=$OPTARG;; k ) key1=$OPTARG;; K ) key2=$OPTARG;; ? ) echo parameter is wrong! exit 1;; esac done if [ ! ${mongo_port} ] || [ ! ${key1} ] || [ ! ${key2} ];then echo parameter is null exit 1 fi echo db.serverStatus().${key1} |mongo --port=${mongo_port}|sed s/,/\r\n/g |grep ${key2} |awk -F :|,|} {print $2}
部署完一個模板,把模板關聯到 mongo 的機器,就能收集相關的操作信息。在模板上再添加一個圖形原型,如下:
模板應用完如果沒問題就可以在 zabbix 的篩選中把 mongo 集群的數據匯在一個網頁上進行查看。
以上是“怎么使用 Zabbix 的自動發現來監控 mongo 數據庫”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注丸趣 TV 行業資訊頻道!
向 AI 問一下細節
丸趣 TV 網 – 提供最優質的資源集合!