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
1. 什么是item types
item types是由zabbix提供的各種類型的檢查器(這樣翻譯很奇怪),大致就是Zabbix agent, Simple checks, SNMP, Zabbix internal, IPMI, JMX monitoring等等。
那么在哪里可以看到這些東西呢?一般在創建或者配置一個監控項的時候。每次創建監控項你都必須選擇一個檢測類型。看如下圖:
2. item types注意點
從zabbix 2.0開始一台主機可以定義多個接口,什么是接口?agent、jmx、impi、snmp這些都是接口。假如你需要檢查他的硬件那你需要配置impi,如果你還需要檢測他的mysql、nginx之類的,你需要agent,監控什么類型的item,你需要配置什么類型的接口。如果你配置來多個接口,當需要檢查一個tiem,zabbix會依次(Agent→SNMP→JMX→IPMI)調用接口,直到找到合適的接口為止。
有些監控項完全由服務器端來完全,根本不需要agent,這個大家可以記一下。接下來的大部分時間都要花費在zabbix的監控類型。大家要做好心理准備。
3. 結束
大家知道了什么是item types,那么我該如何創建監控項呢?
zabbix創建監控項item
上一篇文章我們已經了解了什么叫zabbix item,本節內容來詳細講解如何創建一個item。我們帶着目的來學習這節內容。本節目標為,創建獲取cpu個數的監控項。
1. 創建監控項
點擊配置(configuration)->主機(Hosts)->在你要配置的主機一欄上點擊Items->點擊create item。具體看截圖,各個參數我都已經標注清楚了。
zabbix-create-item
2. 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等等其它數據即可。
3. 不可用的items
由於各種原因,某些item的數據無法獲取到,但是zabbix依舊會再固定的時間間隔內重新獲取數據
4. 結束
不可不說這篇文章很重要,下一步zabbix item key詳解
zabbix item key詳解
上篇文章詳細介紹了zabbix創建item,本節詳細介紹item key的規范,涉及到key的名稱如何定義,key的參數如何定義。看完這片,以前總看不懂的key今天算是明白了。
1. 靈活的參數
參數位置可用接收任意參數則是靈活的。例如vfs.fs.size[*],”*”星號可以使用任意的參數,例如:
vfs.fs.size[/]
vfs.fs.size[/opt]
2. Key格式
Item key格式包含key名稱和他得參數,參數必須符合規范,請看下面的圖片。key的定義要遵循箭頭從做到右的規則,如果都符合,那這個key合法,否則不 合法。大致流程是:首先驗證key名是否合法,如果存在參數那么驗證參數是否合法,如果沒有參數那直接跳過。如下圖的意思大家現在懂了嗎?
3. Key名稱
key允許如下字符作為名稱:
0-9a-zA-Z_-.
大致意思是說允許字符:所有數字、有大小寫字幕、下划線、減號、點.
key名稱從左到右走下規則,只要又一個字符不符合,那么key就不合法。
4. Key參數
item key可以又多個參數,他們之間用逗號’,’分開。如下圖
key參數可以是帶引號的字符串、不帶引號的字符串以及數組。如下圖。

quoted string:帶引號字符串
unquoted string:不帶引號字符串
array:數組
參數如果為空,那么將會使用他設置的默認值。例如key icmpping[,,200,,500],其中3個參數都為空,那么每200ms會ping一次,超時時間為500ms,其它為空的參數使用默認值。
4.1 參數- 帶引號
如果key參數帶引號,那么任何unicode數據都合法,如果參數里面帶有雙引號,那么要使用”\"來轉義。具體如下
4.2 參數- 不帶引號
如果kye參數是一個不帶引號的字符串,除了逗號和右中括號其他任何unicode字符串都合法。具體看如下圖

4.3 參數- 數組
如果key參數是一個數組,那么數組要多加一對中括號,並且數組里面的參數同樣要遵循參數規范,具體如下圖

為什么要自定義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表示腳本命令. |
注意事項
1. 如果需要使用命令行里面出現$2這種變量,那么你要使用兩個$$2,例如awk ’{ print $$2 }’,之前就遇到過這個問題,不停的測試自己腳本輸出正常,但是zabbix卻拿不到數據,原來是出在這里。為了防止和參數沖突,所以zabbix做了這 個規定。
2. zabbix禁止使用一些不安全的參數,如下:
\ ' ” ` * ? [ ] { } ~ $ ! & ; ( ) < > | # @
3. 從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監控類型
1. 什么是item types
item types是由zabbix提供的各種類型的檢查器(這樣翻譯很奇怪),大致就是Zabbix agent, Simple checks, SNMP, Zabbix internal, IPMI, JMX monitoring等等。
那么在哪里可以看到這些東西呢?一般在創建或者配置一個監控項的時候。每次創建監控項你都必須選擇一個檢測類型。看如下圖:
2. 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監控項數據保留時間
zabbix agent 類型所有key:http://www.ttlsa.com/zabbix/zabbix-agent-types-and-all-keys/





