您好,登錄后才能下訂單哦!
Zabbix系統中監控項(Items)的定義和管理非常重要,所有的監控指標都是通過定義不同的監控項收集數據。Zabbix通過主機作為一個邏輯單元組織和管理監控項,所有的監控項都必須屬于某個主機,且在同一主機中只能有一個唯一的監控項存在。
Zabbix 不同于與大多數其他監控解決方案的一個重要特征是Zabbix通過監控項從被監控對象收集的數據是原始數據,而不是告警或狀態的更新數據。大多數監控方案中,不管是通過agent或其他方法收集到監控數據后,會對該數據進行邏輯處理,然后將該數據的狀態發送到服務器中保存,并進一步進行處理。數據的處理流程如下圖6-1所示。
圖 6-1
而Zabbix中處理數據的流程會稍有不同,通過agent或其他方法收集到監控數據后,會直接發送到服務器中進行保存,然后觸發器邏輯會判斷數據的變化情況,進行下一步處理。在Zabbix中收集的數據和特定的觸發器的條件(如通過、失敗、正常、警告、錯誤等)沒有任何的關聯,在服務器的數據庫中保留原始的監控數據,并對數值類型的監控項數據,可以保留不同期間內的匯總和趨勢,像最小值、最大值和平均值等。如下圖6-2所示。
圖 6-2
Zabbix采取數據和決策邏輯分離的方式有兩個優勢:
首先,Zabbix中收集到的監控數據和觸發器邏輯、告警沒有直接的關聯,這樣我們可以把Zabbix作為一個純粹的數據收集器,并將這些數據通過圖形等可視化的方式展現出來,這在實際環境中是非常有用的。舉個例子,我們需要監控交換機每個端口的流量,目的只是收集數據建立基準線,評估可能的瓶頸,為擴展網絡基礎架構的規劃提供依據。類似的情況還有很多,比如說CPU的使用率、存儲的容量、特定應用的用戶并發率等等。
其次,所有收集到的原始數據統一保存在數據庫中,而不是某一次的監控數據或某一監控項的一部分監控數據。對于觸發器和決策邏輯你可能需要完整的數據來確切的定義你想要監控和告警的事件種類,這時你可以關聯到監控項的所有歷史數據。
Zabbix 中監控項本質上可以理解為一個關聯到主機的某種數據類型的標識符(或指標)。而這個標識符通常是一個名稱和關聯的監控項key,用來區分在整個監控環境中定義的成千上萬的監控項中關聯到主機中的監控項。監控項的數據類型也非常重要,Zabbix通過數據類型指定怎樣保存數據,怎樣可視化數據(數值類型的監控項能自動生成簡單的圖形,字符類型不能生成圖形),在觸發器中可以指定哪些函數能夠應用到監控項進行處理。
近日完成《深入淺出?zabbix 4.0》視頻教程的錄制并正式發布,該教程基于 zabbix 4.2 ,對Zabbix進行全面講解。歡迎大家圍觀。課程鏈接:https://edu.51cto.com/sd/ce000?
Zabbix中監控項根據連接的方式劃分出多種類型,也就是我們在第三章中介紹過的監控方式,它們之間依據不同的監控目標可以互相替換使用,但也有不能替換的監控方式,為完成監控目標只能使用某種類型,例如Zabbix aggregate監控方式。監控項收集監控數據時,根據數據流的方向不同,我們可以歸為兩類:Passive(被動式)和Active(主動式)。Passive意味著由Zabbix server發起初始化連接,Active意味著初始化連接是由被監控端發起。如下表6-1所示。
表 6-1
Item type | 方向 | 可替換為 |
Zabbix agent | Passive(被動式) | Zabbix agent(active) |
Zabbix agent(active) | Active(主動式) | Zabbix agent |
Simple checks | Passive(被動式) | Zabbix trapper |
SNMP agent | Passive(被動式) | Zabbix trapper |
SNMP trap | Active(主動式) | |
Zabbix internal | Server監控自身收集數據 | |
Zabbix trapper | Active(主動式) | 取決于監控數據的性質 |
Zabbix aggregate | 使用數據庫中已有的數據 | |
External checks | Passive(被動式) | Zabbix trapper |
Database monitor | Passive(被動式) | Zabbix trapper |
IPMI agent | Passive(被動式) | Zabbix trapper |
SSH agent | Passive(被動式) | Zabbix trapper |
TELNET agent | Passive(被動式) | Zabbix trapper |
JMX agent | Passive(被動式) | Zabbix trapper |
Calculate | 使用數據庫中已有的數據 |
?
定義監控項的Key時,要遵從Zabbix中定義的監控項Key的格式,如下圖6-3所示。
圖 6-3
其中Key為名稱,在Key名稱后面可以帶參數,也可以不帶參數。
Key名稱在同一主機中必須是唯一的,不能有相同的名稱存在。命名時使用的字符是有限制的,只允許使用下列的字符:
所有的數字(0-9)
所有的小寫字母(a-z)
所有的大寫字母(A-Z)
下劃線 ( _ )
短劃線 ( - )
點 ( . )
如下圖6-4所示。
圖 6-4
例如:
vfs.fs.size[/]
vfs.fs.size[/opt]
Key可以傳遞多個參數,這些參數必須用逗號分隔。如下圖6-5所示。
圖 6-5
其中每個parameter(參數)可以是帶引號的字符串或者是不帶引號的字符串,也可以是一個數組。如下圖6-6所示。
圖 6-6
想使用默認值時,參數也可以留空,但是必須要用逗號分隔,例如:icmpping[,,200,,500]中指定了ping的間隔時間為200毫秒,超時為500毫秒,其他的參數留空表示使用默認值。
如果參數是帶引號的字符串,使用的雙引號必須用反斜杠(\)進行轉義,雙引號中間可以使用任意Unicode字符。
如果參數是不帶引號的字符串,除了逗號和右方括號外任意的Unicode字符都可以使用。
如果參數是一個數組,需要使用方括號括起來,多個參數間用逗號分隔。
Zabbix中支持多種單位(Units)符號的使用,如果設置了單位符號,Zabbix將在接收數據后增加后置處理,并按照設置的單位顯示。
系統默認的,如果原始值超過1000,它會除以1000并相應的顯示。例如:設置單位是bps,如果接收數據的值是881764,將會顯示881.76Kbps。當使在用單位B(byte)、Bps(bytes per second)時,它會除以1024,因此在Zabbix中會顯示:1為1B/1Bps,1024為1KB/1KBps,1536為1.5KB/1.5KBps。
和時間相關的單位的處理包括:
Unixtime:將接收數據的值轉換為yyyy.mm.dd hh:mm:ss。為了轉換成功,監控項數據必須是一個Numeric(unsigned)數值類型。
Uptime:將接收數據的值轉換為hh:mm:ss 或N days,hh:mm:ss。例如,接收的值為881764(秒),將會顯示為10 days, 04:56:04。
S:將接收數據的值轉換為yyy mmm ddd hhh mmm sss ms,參數單位是秒。例如,接收的值為881764(秒),將顯示為 10d 4h 56m。通常只顯示3個主要的單位,像1m 15d 5h 或 2h 4m 46s。如果沒有day,只顯示 1m 5h(不會顯示分鐘、秒或微秒)。如果接收的值小于0.001,將會顯示為 < 1ms。
Zabbix中也保留了一些單位字符如:ms、rpm、RPM和%。
Zabbix中每個監控項收集數據的時間間隔可以通過設置 Updateinterval(in sec)來實現,例如你可以設置為30,意味著每隔30秒就收集一次監控項的值,這種設置簡單,不夠靈活。因此Zabbix中提供了Flexible intervals和scheduling intervals兩種方式可以靈活的設置監控項收集數據的時間。
Flexible intervals允許為特定的時間段重新定義默認更新的時間間隔,一個flexible intervals由Interval和Period來定義。
Interval是特定時間段中更新的時間間隔。
Period是使用flexible interval的時間段。用來定義Period的格式為d-d,hh:mm-hh:mm,d為星期幾,1代表星期一,2代表星期二,3代表星期三,… 7代表星期日。hh為小時,00 – 23。mm為分鐘,00 – 59。例如,1-5,09:00-18:0的意思是星期一到星期五的上午9點到下午18點。也可以指定多個用分號分隔的時間段,如d-d,hh:mm-hh:mm;d-d,hh:mm-hh:mm...。例如,1-5,09:00-18:00;6-7,10:00-16:00的意思是周一到周五的上午9點到下午18點,周六和周日上午10點到下午16點。
最多可以設置7個flexible intervals,如果多個flexible intervals重疊時,將使用重疊時間段內最小的Interval值。需要注意的是如果重疊的flexible Intervals的最小值是0,這時候對監控項的數據不再進行收集。在flexible intervals定義的時間段外,使用Updateinterval(in sec)中設置的時間間隔收集數據。
如果定義的interval正好等于時間段的長度,監控項只收集一次數據。如果interval大于時間段,監控項可能會收集一次數據或一次都沒有,因此不建議這種配置。如果interval小于時間段,那這個監控項最少會收集一次數據。
如果interval設置為0,那這個監控項在設置的時間段內不會收集數據。在設置的時間段結束時按照Update interval(in sec)中的時間間隔恢復對數據的收集。例如下表6-2所示。
表 6-2
Interval | Period | 說明 |
10 | 1-5,09:00-18:00 | 在工作時間內每10秒鐘收集一次監控項數據 |
0 | 1-7,00:00-7:00 | 晚上0點到7點停止收集監控項數據 |
0 | 7-7,00:00-24:00 | 星期日停止收集監控項數據 |
60 | 1-7,12:00-12:01 | 每天12點收集一次監控項數據 |
?
Scheduling intervals用來在特定的時間收集監控項數據。flexibleintervals旨在重新定義默認收集監控項數據的時間間隔,而Schedulingintervals用于指定一個獨立的收集監控項數據的時間表,它們是并行執行的。
一個Scheduling interval的定義格式是:md<filter>wd<filter>h<filter>m<filter>s<filter>。md為month days,wd為week days,h為hours,m為minutes,s為seconds。<filter>是用來指定特定前綴(例如days、hours、minutes、seconds)的值,它有自己的書寫格式:[<from>[-<to>]][/<step>][,<filter>]。格式中各參數的含義如下:
<from> 和 <to> 定義了匹配值的范圍。如果<to> 被省略時filter會匹配一個<from> 到 <from> 的范圍,如果<from> 也被忽略了,那filter匹配所有可能的值。
<step> 定義了一個步長,默認的步長值是1,意味著在定義的范圍內匹配所有的值。
filter是一個可選項,可用來定義多個匹配值。Scheduling interval中至少要定義一個filter,這個filter必須定義一個范圍或步長。
有效的<from> 和 <to> 的值如下表6-3所示。
表 6-3
前綴 | 說明 | <from> | <to> |
md | Month days | 1 - 31 | 1 - 31 |
Wd | Week days | 1 - 7 | 1 - 7 |
H | Hours | 0 - 23 | 0 - 23 |
M | Minutes | 0 - 59 | 0 - 59 |
s | Seconds | 0 - 59 | 0 - 59 |
<from> 的值必須小于或等于 <to>的值,<step> 的值必須大于或等于1,也可以小于或等于 <to> - <from>的值。
單數字的month days、hours、minutes和seconds的值前面可以加0,例如 md01-31,h/02等是有效的定義,但像md01-031 和 wd01-07(week days不能加0)就是無效的定義。
在Zabbix Web前端頁面中,需要使用多個Schedulingintervals時可以設置添加多行intervals。在Zabbix API中可以寫成一行,每個Schedulingintervals之間需要用分號分隔。執行時如果同時和多個intervals中定義的時間都匹配,那也僅執行一次,例如wd1h9;h9只在周一早上9點執行一次,不會因定義了2個h9而執行兩次。
為了更好的理解Scheduling intervals的定義,下面我們舉些例子一起來看看。
m0-59 :每分鐘執行
h9-17/2 :從9:00到17:00每2個小時執行(9:00, 11:00 …)
m0,30 或 m/30 :在每小時的hh:00和hh:30執行
m0,5,10,15,20,25,30,35,40,45,50,55或 m/5 :每5分鐘執行
wd1-5h9 :每周一到周五9:00執行
wd1-5h9-18 :每周一到周五的9:00、10:00、… 、18:00執行
h9,10,11 或 h9-11 :每天的9:00、10:00和11:00執行
md1h9m30 :每個月的第一天的9:30執行
md1wd1h9m30 :每個月的第一天并且是周一的9:30執行
h9m/30 :在9:00和9:30執行
h9m0-59/30 :在9:00、9:30執行
h9,10m/30 :在9:00、9:30、10:00、10:30執行
h9-10m30 :在9:30、10:30執行
h9m10-40/30 :在9:10、9:40執行
h9,10m10-40/30 :在9:10、9:40、10:10、10:40執行
h9-10m10-40/30 :在9:10、9:40、10:10、10:40執行
h9m10-40 :在9:10、9:11、9:12、 … 9:40執行
h9m10-40/1 :在9:10、9:11、9:12、 … 9:40執行
h9-12,15 :在9:00、10:00、11:00、12:00、15:00執行
h9-12,15m0 :在9:00、10:00、11:00、12:00、15:00執行
h9-12,15m0s30 :在9:00:30、10:00:30、11:00:30、12:00:30、15:00:30執行
h9-12s30 :在9:00:30、10:00:30、11:00:30、12:00:30執行
h9m/30;h20 :在9:00、9:30、10:00執行
監控項可以在模板或主機中創建,建議在模板中創建,這樣只需要創建一次,就可以連接到多個主機中使用。需要調整監控項的配置參數時,只需要修改一次,即可在連接該模板的主機中直接生效,降低日常維護的工作量,由此可見在模板中創建監控項的好處。
在Configuration --> Templates 頁面中找到需要創建監控項的模板,點擊該模板的items鏈接,或者在Configuration--> Hosts 頁面中找到需要創建監控項的主機,點擊該主機的items鏈接,進入items頁面,點擊右上角的Create item按鈕。
下面通過在模板中創建監控項的方式來介紹創建監控項的步驟:
1、???進入items頁面,點擊Create item按鈕。
2、???在item配置頁面,填寫相關信息。
3、???點擊Add按鈕保存。
4、???把模板連接到主機上。
?
監控項配置頁面如下圖6-7所示。
圖 6-7
監控項配置頁面中各參數的含義如下:
Name:監控項的名稱。可以使用宏變量,也可以從Key中引用$1、$2 … $9參數,例如:設置監控項名稱為Freedisk space on $1,如果監控項Key是 vfs.fs.size[/,free],那監控項名稱將變為Freedisk space on /($1是/,$2是free)。
Type:監控項的類型。詳見第三章中介紹的監控方式。
Key:監控項的Key。請參考前面6.3節的內容,如果監控項類型選擇Zabbix agent、Zabbix agent(active)、Simple check、SNMP trap、Zabbix internal、Zabbix aggregate、Databasemonitor時,Key的值必須能被Zabbix server或Zabbix agent支持。這個Key在同一主機中必須是唯一的。
Type of information:完成轉換后保存到數據庫中的數據類型。
Numeric(unsigned):64位無符號整數。
Numeric(float):浮點數,MySQL中允許的范圍是-999999999999.9999 到999999999999.9999 (double(16,4)),也支持科學記數法,例如1e+70,1e-70。
Character:字符或字符串,Mysql、Postgresql或Oracle中限制為 255 個字節。
Log:log日志文件。Mysql中允許65536個字節,Postgresql和Oracle中限制為65536個字符。
Text:文本。Mysql中允許65536個字節,Postgresql和Oracle中限制為65536個字符。
Data type:當Type of information中選擇Numeric(unsigned)時用來指定不同的數據類型。
Boolean:文字轉換成0或1保存。TRUE存儲為1,FALSE存儲為0,所有的值都匹配不區分大小寫的方式。True、t、yes、y、on、 up、running、enabled、available都識別為TRUE,false、f、no、n、off、down、unused、disabled、unavailable都識別為FALSE。另外,任意非零的數值都認為是TRUE,0被認為是FALSE。
Octal:八進制數據。
Decimal:十進制數據。
Hexadecimal:十六進制數據。
Zabbix將自動完成文字到數值的轉換,即便一個主機是由Zabbix proxy監控的,轉換也是由Zabbixserver完成的。
Units:設置單位符號,詳見本章6.4節。
Use custom multiplier:如果啟用該選項,所有接收到的值將會乘以設置的整數或浮點數。使用這個選項可以把KB、MBps等轉換為B、Bps。否則Zabbix中無法正確設置前綴(K、M、G等)。從Zabbix 2.2版本開始也支持科學計數法,如 1e+70。
Update interval(in sec):監控項每次收集數據的間隔時間,單位是秒。如果設置為0,監控項將停止收集數據,如果在Customintervals中(無論是flexible還是scheduling)設置了非0的值,監控項將按照該值收集數據。
Custom intervals:自定義監控項收集數據的時間,詳見本章6.5節。
History storage period(in days):數據庫中保留詳細歷史數據的天數。超出保留時間的舊數據會由housekeeper刪除。該參數中定義的值可以覆蓋在Administration --> General --> Housekeeper中設置的值。如果在Housekeeper中設置了全局的值,在設置該參數時將會顯示一個警告信息。建議設置一個比較小的值以減少history在數據庫中的大小。如果想保存比較長的歷史記錄,可以設置比較長的trends的保存時間。
Trend storage period(in days):在數據庫中保存歷史的趨勢數據(每小時的min、max、avg和count)。超出保留時間的舊數據會由housekeeper刪除。該參數中定義的值可以覆蓋在Administration--> General --> Housekeeper中設置的值。如果在Housekeeper中設置了全局的值,在設置該參數時將會顯示一個警告信息。需要注意的是只有Numeric類型的數據可以保存為趨勢數據,像character、log和text都不能保存為趨勢數據。
Store value:監控值的保存方式。有以下幾種:
As is:不做任何處理,保持原值。
Delta(speed per second):通過公式(value-prev_value)/(time-prev_time)計算,其中value是當前的值,prev_value是上一次的值,time是當前的時間,prev_time是上一次的時間。這個設置對收集不斷增長的每秒的速率是非常有用的。需要注意的是,如果當前的值小于上一次的值,Zabbix會丟棄計算的差值不做保存,等待下一次收集的值進行計算。例如通過SNMP監控交換機等設備端口流量時會設置這種方式。
Delta(simple change):通過公式(value-prev-value)計算,其中value是當前的值,prev-value是上一次的值。
Show value:對收集到的監控項數據進行映射。值映射后不會改變原值,僅僅是界面顯示變化了。只支持整數類型的監控項。不需要進行值映射時選擇As is保持原值。
Log time format:只有在Type選擇Log時會出現,支持下列占位符:
y:Year(1970-2038)
M:Month(01-12)
d:Day(01-31)
h:Hour(00-23)
m:Minute(00-59)
s:Second(00-59)
如果timestamp為空值將不做解析處理。
例如,在Zabbix agent日志文件中有這樣一行:23480:20100328:154718.045 Zabbix agent started. Zabbix 1.8.2(revision 11211)。其中開頭的6個字符是PID,接下來是日期、時間和其他內容,那這行Log的時間格式為pppppp:yyyyMMdd:hhmmss。在這里p和:只是一個占位符,除了yMdhms外可以是其他任意格式。
New application:設置新的監控項組名稱。創建監控項時可以同時創建監控項組。
Application:連接監控項到一個或多個已經存在的監控項組。
Populates host inventory field:當主機中Host inventory設置為Automatic時,該監控項的值會自動推送給選擇的inventroy字段。
Description:監控項的描述信息。
Enabled:勾選為啟用該監控項。
在Items頁面(Configuration--> Hosts --> Items或者Configuration --> Templates --> Items)列表中,點擊Name列中想要更新配置的監控項名稱,進入監控項配置界面修改配置參數,然后點擊頁面下方的Update按鈕保存。
如果需要對多個監控項進行更新,Zabbix給我們提供了一個批量更新的功能,當你從列表中選中多個監控項后,點擊頁面左下方的Mass update按鈕可以進行批量更新,完成更新后點擊Update按鈕保存。
在主機中配置監控項時,有時候添加監控項時,每個監控項的配置基本相同,但數量比較多,這時候我們可以先創建后一個監控項,然后克隆這個監控項。
需要克隆監控項時,首先要打開監控項的配置頁面,在頁面左下方你會看到Clone按鈕,點擊Clone按鈕后會出現一個新的監控項的配置頁面,這個配置頁面中的各個參數都是原來監控項中已經配置好的。你至少要修改監控項Key的配置,在主機中,監控項的名稱可以相同,但是Key必須是唯一的。修改完成后點擊Add按鈕添加監控項。
一個主機中的監控項可以復制到另一個主機、模板或主機組。在主機的監控項列表中選擇需要復制的監控項,然后點擊Copy按鈕,根據你的需要選擇相應的目標類型(主機組、主機或模板)和目標,點擊Copy按鈕完成監控項的復制。如下圖6-8所示。
圖 6-8
復制的監控項配置是完全一樣的,在復制過程中你沒有修改配置的機會,和克隆不一樣,克隆的過程中你可以修改配置。
當你想清除某些監控項的歷史和趨勢數據時,可以在主機的監控項列表中選擇相應的監控項,然后點擊Clear history按鈕,頁面中會彈出是否刪除歷史數據的確認,點擊確定按鈕,完成刪除。如下圖6-9所示。
圖 6-9
? ?在實際環境中,一些主機上會有很多監控項,在主機的監控項列表中對某個監控項進行操作時,可以通過Filter進行過濾,快速的定位。在設置過濾條件時可以使用主機、組、監控項名稱、監控項Key、類型、狀態等進行組合條件的過濾。如下圖6-10所示。
圖 6-10
? ?在主機的監控項列表中選擇需要刪除的監控項,點擊Delete按鈕就可以刪除選中的監控項及其歷史數據。在實際操作時,建議先將監控項設置為禁用狀態,不要直接刪除。
?
本文出自?http://ustogether.blog.51cto.com/8236854/1925780,如需轉載請與作者聯系。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。