在zabbix的監控系統中通常是由zabbix server與zabbix agent一起配合實現監控。在zabbix agent內建了很多監控基礎的監控項,參見這些監控項都是cpu, 檔案系統, 網路,磁碟等基礎的監控項。
對於自己開發服務的監控,zabbix提供了良好框架為使用者實現監控和報警。下面將以為mysql新增監控為例,介紹如何新增自定義監控。
localhost
角色:zabbix agent, zabbix server, mysql, 面板
在建立監控項之前要盡量考慮清楚要監控什麼,怎麼監控,監控資料如何儲存,監控資料如何展現,如何處理報警等。要進行監控的系統規劃需要對zabbix很了解,這裡只是提出監控的需求。
zabbix server與agent之間監控資料的採集主要是通過zabbix server主動向agent詢問某個key的值,agent會根據key去呼叫相應的函式去獲取這個值並返回給server端。zabbix 2.0.3的agent本並沒有內建mysql的監控功能(但是server端提供了相應的template配置),所以我們需要使用zabbix的user parameters功能,為mysql新增監控指令碼。
對於需求一 ,我們採用mysqladmin這個工具來實現,命令如下:
$ mysqladmin -uroot -ppasswd ping如果mysql狀態正常,會顯示mysqld is alive,否則會提示連線不上。對於伺服器端,mysqld is alive這樣的句子不好理解,伺服器端最好只接收1和0,1表示服務可用,0表示服務不可用。那麼再改進一下這個命令,如下:mysqld is alive
$ mysqladmin -uroot -ppasswd ping | grep -c alive
使用者名稱和密碼放在命令中對於以後的維護不好,所以我們在/var/lib/zbbix下建立乙個包含mysql使用者名稱和密碼的配置檔案「.my.cnf」,如下
[client]有了這個檔案後的命令變更為user=root
host=localhost
password=password
home=/var/lib
/zabbix mysqladmin ping | grep -c alive
做完這一步後需要做的就是,將這個監控命令新增到zabbix agent中,並與乙個key對應,這樣zabbox server就能通過這個key獲取mysql的狀態了。我們使用mysql.ping作為mysql狀態的key。
首先在去除/usr/local/etc/zabbix/zabbix_agentd.conf中「include=/usr/local/etc/zabbix_agentd.conf.d/」這一行的注釋符。
其次,在/usr/local/etc/zabbix_agentd.conf.d/目錄下建立userparameter_mysql.conf檔案。在檔案中新增如下命令:
userparameter=mysql.ping,home=/var/lib
/zabbix mysqladmin ping | grep -c alive
這個命令中」userparameter」表示這是乙個使用者自定義的指令碼;「=」號後是指令碼的內容;「mysql.ping」是key,「,」號後的命令會在zabbix server向agent發起獲取「mysql.ping」這個key的請求時被呼叫,並將返回值返回給server。
儲存並退出後可以使用下面的命令測試是否正常工作。
$ zabbix_agentd -t mysql.ping
mysql.ping [t|1]
同時,在server端也可以使用使用zabbix_get命令來測試從server端獲取指定的client端的資料,如下:
$ zabbix_get -s 127.0.0.1 -k mysql.ping
1
對於需求二 ,我們使用mysql的sql查詢來實現監控資料的獲取,最終的userparameter_mysql.conf檔案如下:
userparameter=mysql.status[*],echo 「show global status where variable_name=』$1′;」 | home=/var/lib/zabbix mysql -n | awk 『』
userparameter=mysql.size[*],echo 「select sum($(case 「$3″ in both|」") echo 「data_length+index_length」;; data|index) echo 「$3_length」;; free) echo 「data_free」;; esac)) from information_schema.tables$([[ "$1" = "all" || ! "$1" ]] || echo 」 where table_schema=』$1′」)$([[ "$2" = "all" || ! "$2" ]] || echo 「and table_name=』$2′」);」 | home=/var/lib/zabbix mysql -n
userparameter=mysql.ping,home=/var/lib/zabbix mysqladmin ping | grep -c alive
userparameter=mysql.version,mysql -v
由於zabbix server內建了mysql的監控模版,所以只需要將監控模版link到這個host即可。
如上圖所示,mysql的temlate中包含了14個監控項,乙個trigger,兩個graphe展現。下圖是mysql template的監控項:
mysql template中的trigger是對mysql.ping中最近接收到的資料進行判斷,如果等於0就會丟擲乙個warning級別的事件。
在設定了相應的action後,就能接收到mysql的報警郵件。
mysql template中的監控圖表:對於想詳細了解server端如何配置監控項的,可以閱讀手冊
Zabbix 自定義監控項
vi usr local zabbix etc zabbix agentd.conf unsafeuserparameters 1 userparameter check process,echo top b n 1 grep mysqld awk f server 192.168.1.12 然後r...
zabbix自定義監控項
1 自定義key 有時候我們想讓被監控端執行乙個zabbix沒有預定義的檢測,zabbix的使用者自定義引數功能提供了這個方法。我們可以在客戶端配置檔案zabbix angentd.conf裡面配置userparameter.語法如下 userparameter key,command 引數 描述 ...
zabbix 自定義監控項
對於zabbix提供的監控項可能有時無法滿足我們的監控需求,這時我們就可以提供zabbix提供的自定義監控項功能來實現,我這裡寫一些我自己在使用過程中遇到的問題。vim etc zabbix zabbix agentd.conf 該位置以自己安裝的為準,沒找到可用locate搜尋一下 unsafeu...