《ZABBIX全棧級監控實踐》系列將由淺入深探討如何實現ZABBIX全棧級別的監控。
本文是《ZABBIX全棧級監控實踐》的第四篇:主要討論使用Zabbix自帶的Auto-Discovery功能對監控Host進行模板關聯,從而提升監控和運維效率。
一、概述
作為運維人員,面對的系統往往是多種多樣的,比如這樣……
當然,我們可以為上述監控對象一個一個的分別套用模板,分別為他們設定各自的監控項(Item)和觸發器(Trigger)。但是監控需求如此復雜和數量龐大,難免會發生下列問題:
1、套用錯誤模板,導致大量not support的監控項。
2、為監控對象逐個關聯模板,耗費大量的時間。
3、新上線的監控對象,未及時添加監控或者關聯正確的模板。
4、已有監控對象的角色發生了變化(如原有的Windows上,增加了IIS的角色),未能及時關聯相應的監控模板。
……
上述這些問題都可能會造成無效的監控,一方面增加了監控噪音,另一方面會發現很多該要監控的東西,未得到有效的監控。
我們該如何解決這個問題呢?
二、配置自動發現(auto-discovery)功能
個人覺得:Zabbix雖然在使用方面有很多不夠人性化的地方,但是對于Zabbix而言,最高效、最值得稱道的功能有兩個,一個是低級別發現(low-level discovery),另一個是自動發現(auto-discovery)。兩者的區別是:低級別發現是自動發現一個監控主機(host)下同一類的監控項(如磁盤、網卡等),并添加為監控項;而自動發現是指Zabbix通過特定的規則(如端口,SNMP等),發現網絡中符合該規則的監控主機,并添加到Zabbix中。本文主要討論的是使用Zabbix的自動發現(Discovery)功能。
自動發現的原理是按照特定的規則去發現網絡上的監控主機,如FTP服務器一般使用21端口,Tomcat的端口一般為8080,所有的監控主機都可以被Zabbix ping通等。自動發現的前提是標準化,對于使用個性化配置的監控主機,不適合用自動發現功能。
自動發現的實現邏輯如下:
本文中,以自動發現Windows服務器,為Windows服務器套用對應模板為例,描述具體的實現過程。
1、登陸Zabbix Web,找到Configuration->Discovery標簽頁。
2、Discovery Rules中默認會有一條發現規則。這條規則是已經禁用的。我們需要按需新建一條發現規則,點擊右上方的Create discovery rule,如下圖新建一條發現規則。
我們可以直接通過Zabbix server或者proxy來發現監控主機(在Discovery by proxy中選擇)。要注意的是,這個發現的操作是由這臺server或者proxy發起的,因此在IP range中的網段范圍必須可以被server或者proxy訪問。如果不需要使用proxy,選擇No proxy即可。
IP range中,可以填寫單個IP(這個并沒什么太大的意義,因為自動發現希望達到批量添加的效果),或者IP段。
IP段的格式:192.168.1-10.1-255 IP range的覆蓋地址的總數量必須小于64000個。
IP掩碼:192.168.4.0/24
支持的掩碼為
/16 - /30 ? ?IPv4 addresses
/112 - /128 ? ?IPv6 addresses
IP列表:192.168.1.1-255, 192.168.2.1-100, 192.168.2.200, 192.168.4.0/24
Zabbix 3.0.0后的版本,這個參數支持空格,TAB制表位和多行分割。
Delay參數代表發現輪詢的時間,默認為3600秒。
最重要的部分在于Check,它指定了發現規則。發現規則非常豐富,從常用的ICMP PING,到端口檢測,以及網絡設備常用的SNMP,都支持。同時支持集中檢查規則組合使用。
對于檢測一臺監控主機是否為Windows,我們使用Zabbix agent的檢查類型,Key為system.uname。即讓Zabbix agent去獲取system.uname的值。
點擊Add保存該發現規則。
至此,我們已經指定了發現范圍和發現規則。
三、配置發現(Discovery)事件的動作(Action)
接著,我們要發現后的動作。對于被發現的Windows服務器,我們要自動為其關聯Windows模板。
在Configuration->Actions下,新建一個發現事件的動作。
按下圖方式配置這個Action:
還記得剛才我們在配置的system.uname嗎? 如上圖所示,當system.uname的返回值(Received Value)中包含(like)Windows時,自動添加主機,并關聯Template OS Windows模板。
其實Zabbix中發現事件的動作有很多種類型,以上只是最為簡單的一種方法。
三、驗證配置
在Monitoring->Discovery中,可以查看發現的設備。第一次在這個頁面中看到結果,需要在完成第一次輪詢(Delay)。網絡中不存在的地址不會在此顯示。
該頁面中,我們可以看到Host的上線時間(以Zabbix第一次掃描到的時間為起點)。
可以看到,11.0.0.1這臺Host,已經被Zabbix自動添加到了監控。可以在Configuration->Hosts中看到,已經成功關聯了Windows模板。
四、總結
第三篇中,我們講到了如何為Windows平臺部署Zabbix Agent。本篇我們講到了如何將已安裝Zabbix Agent的客戶端,按一定的規則添加到Zabbix監控平臺中。結合這兩部操作,基本上解決了我們Zabbix Agent客戶端部署和Zabbix Web端監控添加的問題。大大提高了Zabbix監控平臺的部署效率,降低了人工介入的失敗情況的發生。
Zabbix自動發現是非常強大的一個功能。類似于手機端的效率管理軟件IFTTT。實現的邏輯很簡單:
如果符合某個/些特定條件,那么就執行某個/些動作。
由于條件和動作的種類非常豐富,所以可以創造各種可能自動化運維的動作。當然,后期如果可以結合API或者腳本實現命令調用的話,Zabbix還能做到一些簡單的配置管理功能。
本文拋磚引玉,希望給各位看官到來更多的啟發:)