zabbix item詳解
zabbix監控項item是什麽
什麽是item
Items是從主機裏面獲取的所有數據。通常情況下我叫itme為監控項,例如我們ttlsa雲服務器加入了zabbix監控,我需要監控它的cpu負載,那麽實現這個方法的東西就叫item。接下來zabbix教程中提到的item都翻譯為監控項。
item構成
item由key+參數組成,item詳細介紹請看下回分析。
監控項中需要獲取cpu信息,則需要一個對應的監控key:system.cpu.load。如果是獲取網卡流量,那麽獲取網卡這個監控項需要key:net.if.in或者net.if.out。
一 般情況下key要與參數結合起來使用,例如獲取5分鐘的負載情況:system.cpu.load[avg5],avg5是對應的參數,如果是1 分鐘則使用avg1,如果是15分鐘則使用avg15(有人會問,如果是2分鐘是不是avg2,-!-,沒有這種說法)。網卡流量 net.if.in[eth0],使用eth0作為參數可以獲取到eth0網卡的進入流量,同樣看一看換成eth1,eth2等等。
結束
zabbix item是什麽,想必大家心中已經有了這個概念了,item types有那些呢
item types
- 什麽是item types
item types是由zabbix提供的各種類型的檢查器(這樣翻譯很奇怪),大致就是Zabbix agent, Simple checks, SNMP, Zabbix internal, IPMI, JMX monitoring等等。
那麽在哪裏可以看到這些東西呢?一般在創建或者配置一個監控項的時候。每次創建監控項你都必須選擇一個檢測類型。看如下圖:
nagios
zabbix監控類型
- item types註意點
從zabbix 2.0開始一臺主機可以定義多個接口,什麽是接口?agent、jmx、impi、snmp這些都是接口。假如你需要檢查他的硬件那你需要配置impi,如果你還需要檢測他的mysql、nginx之類的,你需要agent,監控什麽類型的item,你需要配置什麽類型的接口。如果你配置來多個接口,當需要檢查一個tiem,zabbix會依次(Agent→SNMP→JMX→IPMI)調用接口,直到找到合適的接口為止。
有些監控項完全由服務器端來完全,根本不需要agent,這個大家可以記一下。接下來的大部分時間都要花費在zabbix的監控類型。大家要做好心理準備。
- 結束
大家知道了什麽是item types,那麽我該如何創建監控項呢?
zabbix創建監控項item
上一篇文章我們已經了解了什麽叫zabbix item,本節內容來詳細講解如何創建一個item。我們帶著目的來學習這節內容。本節目標為,創建獲取cpu個數的監控項。
- 創建監控項
點擊配置(configuration)->主機(Hosts)->在你要配置的主機一欄上點擊Items->點擊create item。具體看截圖,各個參數我都已經標註清楚了。
item
zabbix-create-item
- Item 屬性詳解
屬性 描述
Host 主機或者模板
Name 監控項item名稱可以使用如下宏變量:
$1, $2…$9,這9個參數對應item key的參數位置。
例如: Free disk space on $1
如果item key為“vfs.fs.size[/,free]”,那麽對應的名稱會變成”Free disk space on /“,$1對應了第一個參數”/“,你明白了嗎?
Type item類型(常見agent、SNMP、agent(active)等),請看後續監控項類型相關文章.
Key 監控項item的key.點擊select可以看到系統很多自帶的key,也可以看到用戶自定義的key,如何自定義key,情繼續關註ttlsa後續的zabbix教程.
Host interface 主機接口,例如agent、SNMP、impi等
Type of information 獲取到得數據類型
Numeric (unsigned) – 64bit unsigned integer
Numeric (float) – floating point
numberCharacter – 字符串,最長255字節
Log – 日誌文件. key必須為log[].
Text – 大小無限制的文本
Data type 定義獲取到整數數據的數據類型
Boolean – 數據為0或者1.’true’表示1,’false’為0,不區分大小寫。
如下為True和False的定義:
TRUE – true, t, yes, y, on, up, running, enabled, available
FALSE – false, f, no, n, off, down, unused, disabled, unavailable
任何非0數字都被認為是TRUE,0被定義為FALSE.負數呢?
Octal – 八進制
Decimal – 十進制
Hexadecimal – 十六進制
zabbix將會自動把他們轉為數字
Units 默認情況下,如果原始值超過1000,那麽他會先除以1000並且顯示出來例如,設置了單位為bps並且收到的值為11102,將會顯示為11.1Kbps
如果單位被指定為 B (byte), Bps (bytes per second) ,那麽它會除以1024然後再顯示數據。所以大家在監控流量和文件大小的時候不要用錯單位,否則會出現數據不一致的情況。
如下為時間單位:
unixtime – 轉為 “yyyy.mm.dd hh:mm:ss”. 只能使用正數。
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個單元。有時候只會顯示2個單元,例如”1m 5h”(不包含分,秒,毫秒),如果返回的值小於0.001,他只會顯示”<1 ms”禁用單位:ms、rpm、RPM、%
Use custom multiplier 如果啟用這個選項,所有接收到的整數或者浮點數都會乘以這個文本框裏面的值。使用這個選項,zabbix將會把收到的KB,MBps等數據先轉為B,Bps。否則zabbix不能正確設置前綴(K,M,G等等).
zabbix 2.2開始支持科學計數法,例如:1e+70.
Update interval (in sec) 數據更新時間註意:如果設置為0,那麽這個數據將永久不更新。但是如果在靈活更新間隔(flexible interval)裏面設置了一個非0間隔,那麽以這個為準
Flexible intervals 可以創建例外的更新間隔,例如:
Interval:10,Period:1-5,10:00-19:00,表示周一到周五的早上10點到晚上19點每十秒更新一次數據。其余時間使用默認值。這邊最多只能設置7個靈活更新間隔.如果設置的多個靈活時間間隔有沖突,那麽他會使用最小的時間間隔。
兩個註意點:如果時間間隔被設置為0,那麽數據永久不會更新。它不能用在zabbix主動方式的item
Keep history(in days) 歷史記錄可以在數據庫中保存多久,過期的歷史數據將會被Housekeeper刪除.
從Zabbix2.2開始,這個值可以被一個全局值覆蓋:Administrator->General->Housekeeper->勾選Keep history(in days),輸入你希望歷史記錄保留的時間。
zabbix官方推薦大家盡量開啟他,盡量使用一個較短的歷史記錄。如果你想看歷史數據的畫,你可以將”趨勢歷史記錄Keep trends”的保留時間設置長一點。
Keep trends(in days) 趨勢數據(以小時為單位的min,max,avg,count的數據)在數據庫中保留時常,過期數據將會被HouseKeeping刪除。
從zabbix2.2開始.這個值可以被一個全局值覆蓋(請參考上面的Keep history)
備註:趨勢數據只能存數字類型數據,字符、日誌這些都無法存儲。
Store value As is – 數據不作處理
Delta (speed per second) –
計算值公式為 (value-prev_value)/(time-prev_time)
value – 獲取到得原始值
value_prev – 上次接收到的值
time – 當前時間
prev_time – 上次接收數據的時間一般用於數據增長的類型,例如:
網卡流量,每次獲取到得都是當前網卡總流量。比如第一次給的值是0字節(UNIX時間為1),第二獲取到得是3000字節(UNIX時間為31),那麽套用公式(3000-0)/(31-30),可以得出數據是100字節/秒
備註:如果當前獲取到的值比上一個值更小,那麽zabbix會忽略這個值,等待下一次的值
Delta (simple change) –
計算公式為 (value-prev_value),value – 當前值value_prev – 上次獲取到得值
Show value 值映射,需要配置數字映射到字符的映射表。例如:
1=>ttlsa.com訪問正常。如果key返回的數據為1,那麽監控頁面不會顯示1,而是顯示ttlsa.com訪問正常。key返回的數據只能為整數,並且不做任何修改保存到數據庫中。只有在顯示的時候才會根據映射表來展示相應的內容。
Log time format 只可以用在LOG類型中,支持占位符:
-
y: 年(0001-9999)
-
M: 月(01-12)
-
d: 日(01-31)
-
h: 小時(00-23)
-
m: 分鐘(00-59)
- s: 秒(00-59)如果時間搓留空不會被解析。
例如:
如 下為zabbix agent日誌” 23480:20100328:154718.045 Zabbix agent started. Zabbix 1.8.2 (revision 11211).”前面6個字符是PID,後面更上日期,時間和日誌內容,日誌時間類為“pppppp:yyyyMMdd:hhmmss”
備註:“p” 與 ”:” 為占位符,除了“yMdhms”不能為占位符,其它任意字符都可以作為占位符
New application 創建一個新的應用
Applications 包含多個應用,例如:
cpu、disk、network,監控項可以屬於多個應用
Populates host inventory field 數據自動填充到inventory資產清單的相應屬性,前提是你的inventory處於自動模式
Description 監控項的描述
Enabled 是否啟用這個監控項.
創建item快捷方法,編輯一個item,然後克隆這個item,修改name等等其它數據即可。
-
不可用的items
由於各種原因,某些item的數據無法獲取到,但是zabbix依舊會再固定的時間間隔內重新獲取數據
-
結束
不可不說這篇文章很重要,下一步zabbix item key詳解
zabbix item key詳解
上篇文章詳細介紹了zabbix創建item,本節詳細介紹item key的規範,涉及到key的名稱如何定義,key的參數如何定義。看完這片,以前總看不懂的key今天算是明白了。
-
靈活的參數
參數位置可用接收任意參數則是靈活的。例如vfs.fs.size[],””星號可以使用任意的參數,例如:
vfs.fs.size[/]
vfs.fs.size[/opt]- Key格式
Item key格式包含key名稱和他得參數,參數必須符合規範,請看下面的圖片。key的定義要遵循箭頭從做到右的規則,如果都符合,那這個key合法,否則不 合法。大致流程是:首先驗證key名是否合法,如果存在參數那麽驗證參數是否合法,如果沒有參數那直接跳過。如下圖的意思大家現在懂了嗎?
item
- Key名稱
key允許如下字符作為名稱:
0-9a-zA-Z_-.
大致意思是說允許字符:所有數字、有大小寫字幕、下劃線、減號、點.
key名稱從左到右走下規則,只要又一個字符不符合,那麽key就不合法。
item
- Key參數
item key可以又多個參數,他們之間用逗號’,’分開。如下圖
item
key參數可以是帶引號的字符串、不帶引號的字符串以及數組。如下圖。
item
quoted string:帶引號字符串
unquoted string:不帶引號字符串
array:數組
參數如果為空,那麽將會使用他設置的默認值。例如key icmpping[,,200,,500],其中3個參數都為空,那麽每200ms會ping一次,超時時間為500ms,其它為空的參數使用默認值。
4.1 參數- 帶引號
如果key參數帶引號,那麽任何unicode數據都合法,如果參數裏面帶有雙引號,那麽要使用”\"來轉義。具體如下
item
4.2 參數- 不帶引號
如果kye參數是一個不帶引號的字符串,除了逗號和右中括號其他任何unicode字符串都合法。具體看如下圖
item
4.3 參數- 數組
如果key參數是一個數組,那麽數組要多加一對中括號,並且數組裏面的參數同樣要遵循參數規範,具體如下圖
item
為什麽要自定義KEY
有時候我們想讓被監控端執行一個zabbix沒有預定義的檢測,zabbix的用戶自定義參數功能提供了這個方法。我們可以在客戶端配置文件zabbix_angentd.conf裏面配置UserParameter.
語法如下:
UserParameter=key,command
用戶自定義參數包含一個key和一個命令,key必須整個系統唯一,配置好之後,重啟客戶端。
然後配置item,在key的位置填上我們自定義的key即可。
用戶自定義參數裏指定的腳本由zabbix agent來執行,最大可以返回512KB的數據.
用戶自定義key實例
簡單點的命令示例:
UserParameter=ping,echo 1
如果調用ping這個key,將會收到返回值1.
更復雜的命令示例:
UserParameter=mysql.ping,mysqladmin -uroot ping|grep -c alive
如果返回1表示MySQL運行中,如果返回0表示MySQL掛了
靈活的自定義key:
如下為靈活的用戶自定義參數
UserParameter=key[*],command
參數 描述
Key 唯一. [*]表示裏面可以傳遞多個參數
Command 需要執行的腳本,key的[]裏面的參數一一對應$1到$9,一共9個參數。$0表示腳本命令.
註意事項
- 如果需要使用命令行裏面出現$2這種變量,那麽你要使用兩個$$2,例如awk ’{ print $$2 }’,之前就遇到過這個問題,不停的測試自己腳本輸出正常,但是zabbix卻拿不到數據,原來是出在這裏。為了防止和參數沖突,所以zabbix做了這 個規定。
- zabbix禁止使用一些不安全的參數,如下:
\ ‘ ” ` * ? [ ] { } ~ $ ! & ; ( ) < > | # @ - 從zabbix 2.0開始,zabbix返回文本數據可以是空格。
示例1
UserParameter=ping[*],echo $1
ping[0] - 將一直返回0
ping[aaa] - 將一直返回 ‘aaa‘
示例2
UserParameter=mysql.ping[*],mysqladmin -u$1 -p$2 ping | grep -c alive
如下參數用於監控MYSQL,並且可以傳遞用戶名和密碼。
mysql.ping[zabbix,our_password]
示例3----統計一個文件中有多少行被匹配?
UserParameter=wc[*],grep -c "$2" $1
如下方法將會返回文件中出現指定字符的行數
wc[/etc/passwd,root]
wc[/etc/services,zabbix]
zabbix item types監控類型
- 什麽是item types
item types是由zabbix提供的各種類型的檢查器(這樣翻譯很奇怪),大致就是Zabbix agent, Simple checks, SNMP, Zabbix internal, IPMI, JMX monitoring等等。
那麽在哪裏可以看到這些東西呢?一般在創建或者配置一個監控項的時候。每次創建監控項你都必須選擇一個檢測類型。看如下圖:
nagios
zabbix監控類型
- item types註意點
從zabbix 2.0開始一臺主機可以定義多個接口,什麽是接口?agent、jmx、impi、snmp這些都是接口。假如你需要檢查他的硬件那你需要配置impi,如果你還需要檢測他的mysql、nginx之類的,你需要agent,監控什麽類型的item,你需要配置什麽類型的接口。如果你配置來多個接口,當需要檢查一個tiem,zabbix會依次(Agent→SNMP→JMX→IPMI)調用接口,直到找到合適的接口為止。
有些監控項完全由服務器端來完全,根本不需要agent,這個大家可以記一下。接下來的大部分時間都要花費在zabbix的監控類型。大家要做好心理準備。
一旦我們創建好web監控之後,我們便可以查看web站點的性能狀況。zabbix一共給我們提供了6個item key,實際上就三個,分別針對單個階段和整個階段,三個item分別為web.test.in、web.test.fail、web.test.error,下面看看它的具體用法。
zabbix web監控項item詳解
web方案監控項
當web監控項創建好之後,下面的key會被自動添加好
key 描述
web.test.in[Scenario,,bps] 整個階段中的下載速度,單位字節/秒
類型: Numeric(float)
web.test.fail[Scenario] 整個檢測階段,失敗的階段個數,如果所有的階段(step)都成功,那麽返回0
類型: Numeric(unsigned)
web.test.error[Scenario] 返回最後一個錯誤信息(文本)
web監控項實例
創建觸發器“Web scenario failed”,表達式如下
{host:web.test.fail[Scenario].last(0)}#0
創建觸發器“Web application is slow”,表達式如下
{host:web.test.in[Scenario,,bps].last(0)}<10000
備註:Scenario改成你web方案的名稱即可
web方案階段監控項
key 描述
web.test.in[Scenario,Step,bps] 檢索指定階段的下載速度,字節每秒
類型: Numeric(float)
web.test.time[Scenario,Step] 獲取指定階段響應時間,時間計算從開始請求道獲取到所有響應信息之後
類型: Numeric(float)
web.test.rspcode[Scenario,Step] 檢索指定階段的http響應代碼
類型: Numeric(unsigned)
step item使用實例
創建觸發器 “Zabbix GUI login is too slow” trigger, 觸發器表達式如下
{zabbix:web.test.time[ZABBIX GUI,Login].last(0)}>3
說明:ZABBIX GUI是web方案的名稱,Login為階段(step)名稱
web監控項數據保留時間
web監控歷史數據數據保存30天,趨勢數據保存90天,老數據將被清除
zabbix agent 類型所有key:http://www.ttlsa.com/zabbix/zabbix-agent-types-and-all-keys/
zabbix item詳解