一小時快速掌握zabbix配置的高效學習法【乾貨】

有人說zabbix難點在配置,面對很多的配置項,不知道所以然了,其實我覺得這是沒掌握好zabbix的學習方法,要掌握了zabbix的學習思路,可以在一個小時內快速掌握zabbix的各種配置,下面我將重點講述下如何快速、高效的對zabbix進行配置,已完成zabbix靈活的監控功能。

zabbix的配置全部都在zabbix web上完成,這點我非常喜歡,登錄到zabbix web平臺後,默認是英文界面,不過可以切換為中文界面,選擇導航欄中的“Administration”選項,然後選擇二級標籤“Users”選項,在“Users”選項下列出了當前zabbix的用戶信息,默認只有一個管理員用戶Admin可用於登錄zabbix web,點開Admin用戶,進入屬性設置界面,然後在“Language”選項中找到“Chinese(zh_CN)”選中即可切換到中文界面,刷新瀏覽器即可看到效果。

下面就以zabbix的中文界面為主進行介紹,所有涉及到的截圖和內容描述都以zabbix中文界面顯示作為標準。

1.1、模板的管理與使用

模板是zabbix的核心,因為模板集成了所有要監控的內容以及展示的圖形等等,zabbix的安裝部署完成後,自帶了很多模板(網絡設備模板、操作系統模板、常見應用軟件模板),這些模板能夠滿足我們80%左右的應用需要,所以一般情況下不需要我們單獨創建模板了。

點擊web上面的“配置”選項,然後選擇“模板”,就可以看到很多默認的模板,而模板是有多個內置項目組成的,基本的內置項目有應用集、監控項、觸發器、圖形、聚合圖形、自動發現、Web監測、鏈接的模板等這8個部分組成。在這8個部分中,監控項、觸發器、圖形、自動發現這4個部分是重點,也是難點。下面也會重點介紹著四個部分的具體實現過程。

在zabbix自帶的模板中,大部分是可以直接拿來使用的,這裡我們不需要對每個模板都進行了解,只需要對常用的一些模板重點掌握就行了。

1.2、創建應用集

點擊web上面的“配置”選項,然後選擇“模板”,任意選擇一個模塊,或者新建一個模板,在模板下,可以看到有應用集選項。進入應用集後,可以看到已有的應用集,也可以創建新的應用集。

應用集的創建很簡單,它其實是一個模板中,針對一類監控項的集合,例如要對CPU的屬性進行監控,那麼可以創建一個針對CPU的應用集,這個應用集下可以創建針對CPU的多個監控項。

應用集的出現主要是便於對監控項進行分類和管理,在有多個監控項,多種監控類型需要監控的情況下,就需要創建應用集。

這裡以“Template OS Linux”模板為例,進入此模板後,點開應用集,可以發現已經存在多個應用集,如下圖所示:

一小時快速掌握zabbix配置的高效學習法【乾貨】

如果有新的監控項需要加入,還可以點擊右上角的“創建應用集”創建一個新的應用集。

1.3、創建監控項

點擊web上面的“配置”選項,然後選擇“模板”,任意選擇一個模塊,或者新建一個模板,在模板下,可以看到有監控項選項。

監控項是zabbix監控的基礎,默認的模板下都存在了很多監控項,這裡以“Template OS Linux”模板為例,進入此模板後,點開監控項,可以發現已經存在多個監控項,如下圖所示:

一小時快速掌握zabbix配置的高效學習法【乾貨】

從圖中可以看出,默認的監控項的內容,每個監控項都對應一個鍵值,就是具體要監控的內容,鍵值的寫法是有統一規範的,zabbix針對不同監控項自帶了很多鍵值,用戶也可以自定義鍵值,此外,每個監控項還可以添加對應的觸發器,也就是說這個監控項如果需要告警的話,就可以添加一個觸發器,觸發器專門用來觸發告警。當然不是說每個監控項一定要有一個觸發器,需要根據監控項的內容而定。

點擊右上角的“創建監控項”,開始創建一個自定義監控項,如下圖所示:

一小時快速掌握zabbix配置的高效學習法【乾貨】

在這個界面中,重點是紅框標識出來的幾個地方,首先,“名稱”是創建的監控項的名稱,自定義一個即可,但是要能表達其監控項的含義,第二個“類型”是設置此監控項通過什麼方式進行監控,zabbix可選的監控類型有很多,常用的有zabbix客戶端、zabbix客戶端(主動式)、簡單檢查、SNMP客戶端、zabbix採集器等類型,zabbix客戶端監控也稱為zabbix客戶端(被動式)監控,就是通過在要監控的機器上安裝zabbix agent,然後zabbix server主動去agent上抓取數據來實現的監控,這是最常用的監控類型。而zabbix客戶端(主動式)監控也需要在被監控的機器上安裝zabbix agent,只不過zabbix agent會主動彙報數據到zabbix server,這是與zabbix客戶端(被動式)監控不同的地方。

接著下來就是對“鍵值”的設置,這是個難點,鍵值可以使用zabbix默認自帶的,也可以自定義自己的鍵值,zabbix自帶了很多鍵值,可滿足我們90%的需求,比如這裡我們想對服務器上某個端口的狀態做監控,就可以使用“net.tcp.service.perf[service,,<port>]”這個鍵值,此鍵值就是zabbix自帶的,如果要查看更多zabbix自帶鍵值,可以點擊上圖中“鍵值”選項後面的“選擇”按鈕,zabbix自帶的鍵值就可以全部顯示出來,如下圖所示:/<port>

一小時快速掌握zabbix配置的高效學習法【乾貨】

可以看到,zabbix自帶的鍵值根據監控類型的不同,也分了不同的監控鍵值種類,每個鍵值的含義也都做了很詳細的描述,我們可以根據需要的監控內容,選擇對應的鍵值即可。

“net.tcp.service.perf[service,,<port>]”這個鍵值用來檢查TCP服務的性能,當服務down時返回0,否則,返回連接服務花費的秒數,此鍵值既可用在“zabbix客戶端”類型的監控中,也可用在“簡單監控”類型中。/<port>

這個鍵值中,“net.tcp.service.perf”部分是鍵值的名稱,後面中括號中的內容是鍵值的監控選項,每個選項含義如下:

  • service:表示服務名,包含ssh、ntp、 ldap、 smtp、ftp、http、pop、 nntp、imap、 tcp、 https、telnet
  • ip:表示IP地址,默認是127.0.0.1,可留空。
  • port:表示端口,默認情況為每個服務對應的標準端口,例如ssh服務是22端口等。

比如要監控某個或某批服務器80端口的運行狀態,可以設置如下鍵值:

net.tcp.service.perf[http,,80]

此鍵值返回的信息類型是浮點型的,因此,在“信息類型”中要選擇“浮點數”。在創建監控項中,還有一個“更新間隔”,這個是用來設置多久去更新一次監控數據,可根據對監控項靈敏度的需求來設定,默認是30秒更新一次。

在創建監控項的最後,還有一個應用集的選擇,也就是將這個監控項放到哪個監控分類中,可以選擇已存在的應用集,也可以添加一個新的應用集。

所有設置完成後,最後點擊“添加”即可完成一個監控項的添加。

監控項可以添加到一個已經存在的模板中,也可以在一個新創建的模板中添加監控項,還可以在一個主機下創建監控項,推薦的做法是新建一個模板,然後在此模板下添加需要的應用集、監控項,然後在後面添加主機的時候,將這個創建的模板鏈接到主機下即可。不推薦在主機下創建監控項的原因是,如果有多個主機,每個主機都有相同的監控內容,那麼就需要在每個主機下都創建相同的監控項。

因此,構建zabbix監控,推薦的做法是,首先創建一個模板,然後在此模板下創建需要的監控項、觸發器等內容,最後在添加主機時直接將此模板鏈接到每個主機下即可,這樣,每個主機就自動鏈接上了模板中的所有監控項和觸發器。

1.4、創建觸發器

觸發器是用於故障告警的一個設置,將一個監控項添加觸發器後,此監控項如果出現問題,就會出激活觸發器,然後觸發器將自動連接告警動作,最後觸發告警。

觸發器同樣也推薦在模板中進行創建,點擊web上面的“配置”選項,然後選擇“模板”,任意選擇一個模塊,或者新建一個模板,在模板下,可以看到有觸發器選項。

點擊觸發器,可以看到有默認存在的觸發器,如下圖所示:

一小時快速掌握zabbix配置的高效學習法【乾貨】

從圖中可以看到,有觸發器的嚴重級別,觸發器名稱,觸發器表達式等幾個小選項,這裡面難點是觸發器表達式的編寫,要學會寫觸發器表達式,首先需要了解表達式中常用的一些函數及其含義。

在上圖我們看到,有diff、avg、last、nodata等這些標識,這就是觸發器表達式中的函數,下面就介紹下常用的一些觸發器表達式函數及其含義。

1、diff

參數:不需要參數

支持值類型:float,int,str,text,log

作用:返回值為1表示最近的值與之前的值不同,即值發生變化,0表示無變化。

2、last

參數:#num

支持值類型:float,int,str,text,log

作用:獲取最近的值,“#num”表示最近第N個值,請注意當前的#num和其他一些函數的#num的意思是不同的,例如:

last(0)或last()等價於last(#1),表示獲取最新的值,last(#3)表示最近第3個值(並不是最近的三個值),注意,last函數使用不同的參數將會得到不同的值,#2表示倒數第二新的數據。例入從老到最新值為1,2,3,4,5,6,7,8,9,10,last(#2)得到的值為9,last(#9)得到的值為2。

另外,last函數必須包含參數。

3、avg

參數:秒或#num

支持類型:float,int

作用:返回一段時間的平均值

例如,avg(5)表示最後5秒的平均值,avg(#5)表示最近5次得到值的平均值,avg(3600,86400)表示一天前的一個小時的平均值。

如果僅有一個參數,表示指定時間的平均值,從現在開始算起,如果有第二個參數,表示漂移,從第二個參數前開始算時間,#n表示最近n次的值。

4、change

參數:無需參數

支持類型:float,int,str,text,log

作用:返回最近獲得值與之前獲得值的差值,返回字符串0表示相等,1表示不同。

例如,change(0)>n表示最近得到的值與上一個值的差值大於n,其中,0表示忽略參數。

5、nodata

參數:秒

支持值類型:any

作業:探測是否能接收到數據,當返回值為1表示指定的間隔(間隔不應小於30秒)沒有接收到數據,0表示其正常接收數據。

在瞭解了觸發器表達式函數的含義之後,我們就可以創建和編寫觸發器表達式了,在觸發器頁面中,添加右上角的“創建觸發器”即可進入觸發器創建頁面了,如下圖所示:

一小時快速掌握zabbix配置的高效學習法【乾貨】

這個就是創建觸發器的頁面,首先輸入觸發器的名稱,然後標記觸發器的嚴重性,可以有6個等級選擇,這裡選擇一般嚴重,接下來就是表達式的編寫了,點擊表達式項後面的“添加”按鈕,即可開始構建表達式了,在構建表達式頁面,首先要選擇給哪個監控項添加觸發器,在“條件”界面下點擊後面的“選擇”按鈕,即可打開已經添加好的所有監控項,這裡就選擇剛剛添加好的“httpd server 80 status”這個監控項,接著,開始選擇觸發器表達式的條件,也就是上面介紹過的觸發器表達式函數,點擊“功能”下拉菜單,可以發現很多觸發器表達式函數,那麼如何選擇函數呢,當然是根據這個監控項的含義和監控返回值。

“httpd server 80 status”這個監控項的返回值是浮點數,當服務故障時返回0,當監控的服務正常時返回連接服務所花費的秒數。因此,我們就將返回0作為一個判斷的標準,也就是將返回值為0作為觸發器表達式的條件,要獲得監控項的最新返回值,那就是使用last()函數,因此選擇last()函數,接著,還有有個“間隔(秒)”選項,這個保持默認即可,重點是最後這個“結果”,這裡是設置last()函數返回值是多少時才進行觸發,根據前面對監控項的瞭解,last()函數返回0表示服務故障,因此這裡填上0即可。

這樣,一個觸發器表達式就創建完成了,完整的觸發器表達式內容是:

{Template OS Linux:net.tcp.service.perf[http,,80].last()}=0

可以看出,觸發器表達式由4部分組成,第一部分是模板或主機的名稱,第二部分是監控項對應的鍵值,第三部分是觸發器表達式函數,最後一部分就是監控項的值。這個表達式所表示的含義是:http服務的80端口獲取到的最新值如果等於0,那麼這個表達式就成立,或者返回true。

觸發器創建完成後,兩個監控的核心基本就完成了,後面還有創建“圖形”、“聚合圖形”等選項,這些都比較簡單,就不過多介紹了。

1.5、創建主機組和主機

點擊web上面的“配置”選項,然後選擇“主機群組”,即可到添加主機群組界面,默認情況下,已經有很多主機群組了,可以使用已經存在的主機群組,也可以創建新的主機群組,點擊右上角“創建主機群組”可以創建一個新的群組,主機群組要先於主機創建,因為在主機創建界面中,已經沒有創建群組的選項了。

主機群組創建完成後,點擊web上面的“配置”選項,然後選擇“主機”,即可到添加主機界面,默認情況下,只有一個zabbix server主機,要添加主機,點擊右上角“創建主機”按鈕,即可進入如下頁面:

一小時快速掌握zabbix配置的高效學習法【乾貨】

主機的創建很簡單,需要重點關注紅框標註的內容,首先,“主機名稱”這個需要特別注意,可以填寫主機名,也可以寫IP地址,但是都要和zabbix agent主機配置文件zabbix_agent.conf裡面的Hostname配置的內容一致才行。

“群組”就是指定主機在哪個主機群組裡面,點擊後面的“選擇”即可查看目前的主機群組,選擇一個即可,最後要添加的是“agent代理程序接口”,也就是zabbix server從哪個地址去獲取zabbix agent的監控數據,這裡填寫的是zabbix agent的ip地址和端口號,此外,根據監控方式的不同,zabbix支持多種獲取監控數據的方式,支持SNMP接口、JMX接口、IPMI接口等,可根據監控方式不同選擇需要的接口即可。

主機的設置項主要就這幾個,最後還需要設置主機鏈接的模板,點擊主機下面的“模板”標籤,即可顯示主機和模板的鏈接界面,如下圖所示:

一小時快速掌握zabbix配置的高效學習法【乾貨】

點擊“鏈接指示器”後面的“選擇”按鈕,即可顯示上圖的界面,這裡可以選擇要將哪些模板鏈接到此主機下,根據模板的用途,這裡我們選擇了“Template OS Linux”模板,當然也可以選擇多個模板連接到同一個主機下,選擇完成,點擊“選擇”即可回到下圖所示界面:

一小時快速掌握zabbix配置的高效學習法【乾貨】

這個界面的操作需要小心,在剛剛添加了模板後,需要先點擊上面的那個“添加”按鈕,這樣剛才選擇的模板才能生效,最後在點擊最下面的“添加”按鈕,172.16.213.232主機添加完成。

最後,點擊剛剛創建好的主機,即可進入主機編輯模式,可以看到,在主機下,已經有應用集、監控項、觸發器、圖形等選項和內容了,這就是鏈接模板後,自動導入到主機下面的,當然在主機編輯界面下也可以創建或修改應用集、監控項、觸發器、圖形等內容。

1.6、觸發器動作配置

動作的配置也是zabbix的一個重點,點擊web上面的“配置”選項,然後選擇“動作”,即可到“動作”設置界面,動作的添加根據事件源的不同,可分為觸發器動作、自動發現動作、自動註冊動作等,這裡首先介紹下觸發器動作的配置方式。

在此界面的右上角,先選擇事件源為“觸發器”,然後點擊“創建動作”按鈕,開始創建一個基於觸發器的動作,如下圖所示:

一小時快速掌握zabbix配置的高效學習法【乾貨】

觸發器動作配置,其實是設置監控項在故障時發出的信息,以及故障恢復後發送的信息設置,動作的“名稱”可以隨意設置,動作的狀態設置為“已啟用”,接著點開“操作”標籤,此標籤就是設置監控項在故障的時候發送信息的標題和消息內容以及一些發送的頻率和接收人,如下圖所示:

一小時快速掌握zabbix配置的高效學習法【乾貨】

在這個界面中,重點是設置發送消息的“默認操作步驟持續時間”、“默認標題”以及“消息內容”, “默認操作步驟持續時間”就是監控項發生故障後,持續發送故障信息的時間,這個時間範圍為"60" 和 "604800" 之間,單位是秒。

“默認標題”以及“消息內容”是通過zabbix的內置宏變量實現的,例如{TRIGGER.STATUS}、{TRIGGER.SEVERITY}、{TRIGGER.NAME}、{HOST.NAME}等都是zabbix的內置宏變量,不需要加“$”就可以直接引用。這些宏變量會在發送信息的時候轉換為具體的內容。

“默認標題”以及“消息內容”設置完成後,還需配置消息內容的發送頻率和接收人,點擊上圖中“操作”步驟中的“新的”按鈕,即可顯示如下圖界面:

一小時快速掌握zabbix配置的高效學習法【乾貨】

在這個設置界面中,重點看操作細節部分,“步驟”是設置發送消息事件的次數,0表示無窮大,也就是持續一直髮送,“步驟持續時間”是發送消息事件的間隔,默認值是60秒,輸入0也表示默認值,“操作類型”有發送消息和遠程命令兩個選項,這裡選擇“發送消息”,“發送到用戶群組”和“發送到用戶”是指定將消息發送給指定的用戶組和用戶,一般選擇將消息發送到用戶群組即可,因為這樣更方便,後期有新用戶加入的話,直接將此用戶加入用戶群組中即可,省去了有新用戶時每次都要修改消息發送設置的麻煩。最後,還有一個“僅送到”選項,這裡是設置將消息通過什麼媒介發送,默認有Email、Jabber、SMS三種方式,可以選擇所有,也可以選擇任意一個,這裡選擇Email,也就是通過郵件方式發送消息。

綜上所述,這個操作過程表達的意思是:事件的持續時間是1個小時(3600s),每隔1分鐘(60s)產生一個消息事件,一共產生3個消息事件,產生消息事件時,發送給Zabbix administrators用戶組中的所有用戶,最後消息內容會使用Email媒介發送給用戶。

所有設置完成後,一定要點擊上圖左下角的“添加”按鈕,這樣剛才的設置才能保存生效。

接著,再看創建動作中的“恢復操作”標籤,如下圖所示:

一小時快速掌握zabbix配置的高效學習法【乾貨】

“恢復操作”跟“操作”標籤類似,是用來設置監控項故障恢復後,發送消息事件的默認標題和消息內容,這兩部分就是通過zabbix的內部宏變量實現的,重點看最下面的“操作”選項,點擊“新的”按鈕,即可打開操作的具體設置界面,如下圖所示:

一小時快速掌握zabbix配置的高效學習法【乾貨】

這個界面是設置當監控項故障恢復後,向Zabbix administrators用戶組中的所有用戶通過Email介質發送消息。也就是故障恢復消息。

最後,還是要點擊上圖左下角的“添加”按鈕,這樣剛才的設置才能保存生效。

1.7、報警媒介類型配置

報警媒介類型是用來設置監控告警的方式,也就是通過什麼方式將告警信息發送出去,常用的告警媒介有很多,例如Email、Jabber、SMS等,這是三種默認方式,還可以擴展到微信告警、釘釘告警等方式,至於選擇哪種告警方式,以愛好和習慣來定就行了。

默認使用較多的是通過Email方式進行消息的發送告警,郵件告警方式的優勢是簡單、免費,加上現在有很多手機郵件客戶端工具(網易郵件大師、QQ郵箱),通過簡單的郵件告警設置,幾乎可以做到實時收取告警信息。

點擊web上面的“管理”選項,然後選擇“報警媒介類型”,即可到報警媒介設置界面,然後點擊“Email”進入編輯頁面,如下圖所示:

一小時快速掌握zabbix配置的高效學習法【乾貨】

這個界面是設置Email報警屬性,“名稱”可以是任意名字,這裡輸入“Email”,“類型”選擇“電子郵件”,當然也可以選擇“腳本”、“短信”等類型,“SMTP服務器”是設置郵件告警的發件服務器,我們這裡使用網易163郵箱進行郵件告警,因此設置為“smtp.163.com”即可,接著是“SMTP”服務器端口,輸入默認“25”,“SMTP HELO”可保持默認即可,“SMTP電郵”就是發件人的郵箱地址,輸入一個網易163郵箱地址即可,安全連接選擇默認的“無”即可,“認證”方式選擇“用戶名密碼”認證,然後輸入發件人郵箱登錄的用戶名和密碼即可。

所有設置完成,點擊“添加”按鈕完成郵件媒介告警的添加。到這裡為止,zabbix中一個監控項的添加流程完成了。

最後,我們再來梳理下一個監控項添加的流程,一般操作步驟是這樣的:

首先新創建一個模板,或者在默認模板基礎上新增監控項、監控項添加完成,接著對此監控項添加一個觸發器,如果有必要,還可以對此監控項添加圖形,接著,開始添加主機組和主機,在主機中引用已經存在的或新增的模板,然後創建觸發器動作,設置消息發送事件,最後,設置報警媒介,配置消息發送的介質,這就是一個完整的zabbix配置過程。

1.8、監控狀態查看

當一個監控項配置完成後,要如何看是否獲取到數據了呢,點擊web上面的“監測中”選項,然後選擇“最新數據”,即可看到監控項是否獲取到了最新數據,如下圖所示:

一小時快速掌握zabbix配置的高效學習法【乾貨】

在查看最新監控數據時,可以通過此界面提供的過濾器快速獲取想查看的主機或者監控項的內容,這裡我們選擇“linux servers”主機組,“http server”應用集下所有監控項的數據,點擊“應用”按鈕,即可顯示過濾出來的數據信息,重點看“最新數據”一列的內容,那個“0.0005”就是獲取的最新數據,通過不斷刷新此頁面,可以看到最新數據的變化。如果你的監控項獲取不到最新數據,那麼顯示的結果將會是淺灰色。要想查看一段時間的歷史數據,還可以點擊右邊的那個“圖形”鏈接,即可通過圖形方式展示一段時間的數據趨勢,如下圖所示:

一小時快速掌握zabbix配置的高效學習法【乾貨】

這個就是監控項“httpd server 80 status”的趨勢數據,此圖形曲線是自動生成,無需設置,由於我們使用的是中文界面,在圖形展示數據的時候,可能會在左下角有中文的地方出現亂碼,這是默認編碼非中文字體導致的,需要簡單做如下處理,過程如下:

1、進入 C:\Windows\Fonts選擇其中任意一種中文字體例如 “黑體” (SIMHEI.TTF)

2、將Windows下的中文字體文件上傳到zabbix web目錄下的fonts目錄(本例是/usr/local/nginx/html/zabbix/fonts)

3、修改zabbix的web前端的字體設置,將如下兩行修改為:

打開/usr/local/nginx/html/zabbix/include/defines.inc.php文件,找到如下兩行:

define('ZBX_FONT_NAME', 'DejaVuSans');
define('ZBX_GRAPH_FONT_NAME', 'DejaVuSans');
修改為
define('ZBX_FONT_NAME', 'simhei');
define('ZBX_GRAPH_FONT_NAME', 'simhei');

其中simhei為字庫名字,不用寫ttf後綴。這樣就行了,刷新一下瀏覽器,中文字體顯示應該就正常了。

好啦,zabbix的核心配置就這麼多,很簡單吧,掌握這個學習思路,那zabbix就簡單多了。


分享到:


相關文章: