《ZABBIX全棧級監(jiān)控實踐》系列將由淺入深探討如何實現(xiàn)ZABBIX全棧級別的監(jiān)控揍魂。
本文是《ZABBIX全棧級監(jiān)控實踐》的第四篇:主要討論使用Zabbix自帶的Auto-Discovery功能對監(jiān)控Host進行模板關(guān)聯(lián)镐侯,從而提升監(jiān)控和運維效率欠窒。
一、概述
作為運維人員弯汰,面對的系統(tǒng)往往是多種多樣的序调,比如這樣……
當然与纽,我們可以為上述監(jiān)控對象一個一個的分別套用模板堰怨,分別為他們設(shè)定各自的監(jiān)控項(Item)和觸發(fā)器(Trigger)芥玉。但是監(jiān)控需求如此復(fù)雜和數(shù)量龐大,難免會發(fā)生下列問題:
1备图、套用錯誤模板灿巧,導(dǎo)致大量not support的監(jiān)控項。
2揽涮、為監(jiān)控對象逐個關(guān)聯(lián)模板抠藕,耗費大量的時間。
3绞吁、新上線的監(jiān)控對象,未及時添加監(jiān)控或者關(guān)聯(lián)正確的模板唬格。
4家破、已有監(jiān)控對象的角色發(fā)生了變化(如原有的Windows上颜说,增加了IIS的角色),未能及時關(guān)聯(lián)相應(yīng)的監(jiān)控模板汰聋。
……
上述這些問題都可能會造成無效的監(jiān)控门粪,一方面增加了監(jiān)控噪音,另一方面會發(fā)現(xiàn)很多該要監(jiān)控的東西烹困,未得到有效的監(jiān)控玄妈。
我們該如何解決這個問題呢?
二髓梅、配置自動發(fā)現(xiàn)(auto-discovery)功能
個人覺得:Zabbix雖然在使用方面有很多不夠人性化的地方拟蜻,但是對于Zabbix而言,最高效枯饿、最值得稱道的功能有兩個酝锅,一個是低級別發(fā)現(xiàn)(low-level discovery),另一個是自動發(fā)現(xiàn)(auto-discovery)奢方。兩者的區(qū)別是:低級別發(fā)現(xiàn)是自動發(fā)現(xiàn)一個監(jiān)控主機(host)下同一類的監(jiān)控項(如磁盤搔扁、網(wǎng)卡等),并添加為監(jiān)控項蟋字;而自動發(fā)現(xiàn)是指Zabbix通過特定的規(guī)則(如端口稿蹲,SNMP等),發(fā)現(xiàn)網(wǎng)絡(luò)中符合該規(guī)則的監(jiān)控主機鹊奖,并添加到Zabbix中苛聘。本文主要討論的是使用Zabbix的自動發(fā)現(xiàn)(Discovery)功能。
自動發(fā)現(xiàn)的原理是按照特定的規(guī)則去發(fā)現(xiàn)網(wǎng)絡(luò)上的監(jiān)控主機嫉入,如FTP服務(wù)器一般使用21端口焰盗,Tomcat的端口一般為8080勾徽,所有的監(jiān)控主機都可以被Zabbix ping通等腻窒。自動發(fā)現(xiàn)的前提是標準化,對于使用個性化配置的監(jiān)控主機峻贮,不適合用自動發(fā)現(xiàn)功能垫竞。
自動發(fā)現(xiàn)的實現(xiàn)邏輯如下:
本文中澎粟,以自動發(fā)現(xiàn)Windows服務(wù)器,為Windows服務(wù)器套用對應(yīng)模板為例欢瞪,描述具體的實現(xiàn)過程活烙。
1、登陸Zabbix Web遣鼓,找到Configuration->Discovery標簽頁啸盏。
2、Discovery Rules中默認會有一條發(fā)現(xiàn)規(guī)則骑祟。這條規(guī)則是已經(jīng)禁用的回懦。我們需要按需新建一條發(fā)現(xiàn)規(guī)則气笙,點擊右上方的Create discovery rule,如下圖新建一條發(fā)現(xiàn)規(guī)則怯晕。
我們可以直接通過Zabbix server或者proxy來發(fā)現(xiàn)監(jiān)控主機(在Discovery by proxy中選擇)潜圃。要注意的是,這個發(fā)現(xiàn)的操作是由這臺server或者proxy發(fā)起的舟茶,因此在IP range中的網(wǎng)段范圍必須可以被server或者proxy訪問谭期。如果不需要使用proxy,選擇No proxy即可吧凉。
IP range中隧出,可以填寫單個IP(這個并沒什么太大的意義,因為自動發(fā)現(xiàn)希望達到批量添加的效果)客燕,或者IP段鸳劳。
IP段的格式:192.168.1-10.1-255 IP range的覆蓋地址的總數(shù)量必須小于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后的版本也搓,這個參數(shù)支持空格赏廓,TAB制表位和多行分割。
Delay參數(shù)代表發(fā)現(xiàn)輪詢的時間傍妒,默認為3600秒幔摸。
最重要的部分在于Check,它指定了發(fā)現(xiàn)規(guī)則颤练。發(fā)現(xiàn)規(guī)則非常豐富既忆,從常用的ICMP PING,到端口檢測嗦玖,以及網(wǎng)絡(luò)設(shè)備常用的SNMP患雇,都支持。同時支持集中檢查規(guī)則組合使用宇挫。
對于檢測一臺監(jiān)控主機是否為Windows苛吱,我們使用Zabbix agent的檢查類型,Key為system.uname器瘪。即讓Zabbix agent去獲取system.uname的值翠储。
點擊Add保存該發(fā)現(xiàn)規(guī)則。
至此橡疼,我們已經(jīng)指定了發(fā)現(xiàn)范圍和發(fā)現(xiàn)規(guī)則援所。
三、配置發(fā)現(xiàn)(Discovery)事件的動作(Action)
接著欣除,我們要發(fā)現(xiàn)后的動作住拭。對于被發(fā)現(xiàn)的Windows服務(wù)器,我們要自動為其關(guān)聯(lián)Windows模板。
在Configuration->Actions下滔岳,新建一個發(fā)現(xiàn)事件的動作瘟檩。
按下圖方式配置這個Action:
還記得剛才我們在配置的system.uname嗎? 如上圖所示澈蟆,當system.uname的返回值(Received Value)中包含(like)Windows時,自動添加主機卓研,并關(guān)聯(lián)Template OS Windows模板趴俘。
其實Zabbix中發(fā)現(xiàn)事件的動作有很多種類型,以上只是最為簡單的一種方法奏赘。
三寥闪、驗證配置
在Monitoring->Discovery中,可以查看發(fā)現(xiàn)的設(shè)備磨淌。第一次在這個頁面中看到結(jié)果疲憋,需要在完成第一次輪詢(Delay)。網(wǎng)絡(luò)中不存在的地址不會在此顯示梁只。
該頁面中缚柳,我們可以看到Host的上線時間(以Zabbix第一次掃描到的時間為起點)。
可以看到搪锣,11.0.0.1這臺Host秋忙,已經(jīng)被Zabbix自動添加到了監(jiān)控」怪郏可以在Configuration->Hosts中看到灰追,已經(jīng)成功關(guān)聯(lián)了Windows模板。
四狗超、總結(jié)
第三篇中弹澎,我們講到了如何為Windows平臺部署Zabbix Agent。本篇我們講到了如何將已安裝Zabbix Agent的客戶端努咐,按一定的規(guī)則添加到Zabbix監(jiān)控平臺中苦蒿。結(jié)合這兩部操作,基本上解決了我們Zabbix Agent客戶端部署和Zabbix Web端監(jiān)控添加的問題麦撵。大大提高了Zabbix監(jiān)控平臺的部署效率刽肠,降低了人工介入的失敗情況的發(fā)生。
Zabbix自動發(fā)現(xiàn)是非常強大的一個功能免胃。類似于手機端的效率管理軟件IFTTT音五。實現(xiàn)的邏輯很簡單:
如果符合某個/些特定條件,那么就執(zhí)行某個/些動作羔沙。
由于條件和動作的種類非常豐富躺涝,所以可以創(chuàng)造各種可能自動化運維的動作。當然,后期如果可以結(jié)合API或者腳本實現(xiàn)命令調(diào)用的話坚嗜,Zabbix還能做到一些簡單的配置管理功能夯膀。
本文拋磚引玉,希望給各位看官到來更多的啟發(fā):)