zabbix服務器端通過與zabbix agent通信來獲取客戶端服務器的數據,agent分為兩個版本,其中一個是主動一個是被動,在配置主機我們可以看到一個是agent,另一個是agent(active)。前者為被動檢測,后者為主動檢測。那么主動和被動區別在哪里呢?
被動:zabbix server向zabbix agent討要數據。
主動:zabbix agent提交數據給zabbix server。
監控項keys列表
以下表格是zabbix agent所支持的所有.請大家一一過目,認識他們就行,不需要背下來。
1 、Zabbix Agent(active)
概述
這些檢查與Zabbix agent進行通信實現數據的采集。
一共有被動和主動兩種agent模式. 在配置監控項時,你可以選擇所需的類型:
- Zabbix agent 被動模式,Zabbix Server向Agent索要數據(默認, 如果要監控的客戶端較多, zabbix server 主機負載會過大)
- Zabbix agent (active) 主動模式,Agent主動上報數據給Zabbix Server
支持的監控項key
下表提供了可用的Zabbix agent監控項的詳細信息。
請參考:
必填和可選參數
沒有尖括號的參數是強制性的,標有尖括號< >的參數是可選的。
Key |
|||
描述 |
返回值 |
參數 |
注釋 |
agent.hostname |
|||
Agent主機名 |
字符串 |
String |
從配置文件返回Agent主機名的實際值。 |
agent.ping |
|||
Agent可用性檢查 |
0- 不可用 1 - 可用 |
可使用Show value將: 0映射為down 1映射為up |
使用nodata()觸發器函數檢查主機不可用性。 |
agent.version |
|||
Zabbix Agent的版本 |
字符串 |
|
例如返回值:1.8.2 |
kernel.maxfiles |
|||
系統支持的打開文件的最大數量 |
整數 |
|
|
kernel.maxproc |
|||
系統支持的最大進程數 |
整數 |
|
|
log[file,<regexp>,<encoding>,<maxlines>,<mode>,<output>,<maxdelay>] |
|||
日志文件監控 |
Log |
file- 日志文件完整路徑和名稱 skip- 跳過處理的歷史數據(僅影響新創建的監控項)。 類型:float。 值: 0-(默認)不忽略日志文件行; > 0.0 -忽略舊行,以便在“maxdelay”秒內獲取最近分析的行。使用前請閱讀maxdelay注釋! |
監控項必須定義為主動檢查(即active). 注意:除“Result為TRUE”之外的所有全局正則表達式類型始終返回整個匹配行,並忽略輸出參數。 |
log.count[file,<regexp>,<encoding>,<maxproclines>,<mode>,<maxdelay>] |
|||
日志文件監控中匹配行的數量。 |
整數 |
file - 日志文件完整的路徑和名稱 默認值為 4*'MaxLinesPerSecond'在zabbix_agent配置文件. skip - 跳過處理的舊數據(僅影響新創建的監控項)。 類型: float. 值: 0 - (默認) 從不忽略每行日志; > 0.0 - 忽略舊行,以便在“maxdelay”秒內獲取最近分析的行。 在使用前請閱讀maxdelay參數 的注解! |
該監控項必須配置為主動檢查(Active) |
logrt[file_regexp,<regexp>,<encoding>,<maxlines>,<mode>,<output>,<maxdelay>] |
|||
支持監控輪詢的日志文件。 |
Log |
file_regexp - 文件名以及正則表達式定義的文件名的絕對路徑。 skip - 跳過處理的舊數據(僅影響新創建的監控項)。 類型:float。 值: 0-(默認)不忽略日志文件行; > 0.0-忽略舊行,以便在“maxdelay”秒內獲取最近分析的行。使用前請閱讀maxdelay參數注釋! |
監控項必須定義為主動檢查active. 注意:除“Result為TRUE”之外的所有全局正則表達式類型始終返回整個匹配行,並忽略輸出參數。 |
logrt.count[file_regexp,<regexp>,<encoding>,<maxproclines>,<mode>,<maxdelay>] |
|||
支持對輪詢日志文件監控中匹配的行數。 |
整型 |
file_regexp - 文件名以及正則表達式定義的文件名的絕對路徑 默認值為 4*'MaxLinesPerSecond' 定義在 zabbix_agent配置文件. skip - 跳過處理舊數據(僅影響新創建的監控項)。 類型:float。 值: 0-(默認)不忽略日志文件行; > 0.0-忽略舊行,以便在“maxdelay”秒內獲取最近分析的行。 使用前請閱讀maxdelay參數注釋! |
監控項必須定義為主動檢查.(Active) |
net.dns[<ip>,name,<type>,<timeout>,<count>,<protocol>] |
|||
檢查DNS服務是否開啟(通過查詢某個域名來檢查),可用來檢查內網DNS服務是否在正常,或檢測公網上 的某個DNS服務器是否可用 |
0 - DNS宕了(服務器沒有響應或DNS解析失敗) |
ip - DNS服務器的IP地址(默認DNS服務器為空,在Windows上被忽略,不支持) |
示例: |
net.dns.record[<ip>,name,<type>,<timeout>,<count>,<protocol>] |
|||
執行一個DNS查詢 使用這里的DNS服務器執行一條解析 |
字符串與所需類型的信息 |
ip - DNS服務器的IP地址(默認DNS服務器為空,在Windows上被忽略) |
示例: |
net.if.collisions[if] |
|||
Number of out-of-window collisions. |
整型 |
if - 網卡名稱 |
|
net.if.discovery |
|||
網絡接口列表用於低級發現。 |
JSON對象 |
|
Zabbix agent從2.0之后開始支持。 |
net.if.in[if,<mode>] |
|||
網卡流入量統計。 |
整型 |
if - 網卡名 (Unix); 網卡完整描述或IPv4地址(Windows) |
在Windows上,該選項從64位計數器獲取值(如果可用)。64位接口統計計數器在Windows Vista和Windows Server 2008中引入。如果64位計數器不可用,agent使用32位計數器。 |
net.if.out[if,<mode>] |
|||
網卡流出量統計。 |
整型 |
if - 網卡名稱 (Unix); 網卡完整描述或IPv4地址(Windows) |
在Windows上,該選項從64位計數器獲取值(如果可用)。64位接口統計計數器在Windows Vista和Windows Server 2008中引入。如果64位計數器不可用,agent使用32位計數器。 |
net.if.total[if,<mode>] |
|||
網卡的進出流量統計信息的總和。 |
整型 |
if - 網卡名稱(Unix); 網卡完整描述或IPv4地址(Windows) |
在Windows上,該選項從64位計數器獲取值(如果可用)。64位接口統計計數器在Windows Vista和Windows Server 2008中引入。如果64位計數器不可用,agent使用32位計數器。 你可以使用net.if.discovery或net.if.list監控項在Windows上獲取網卡說明。 |
net.tcp.listen[port] |
|||
檢查此TCP端口是否處於監聽狀態, 即檢查某個端口是否啟動。 |
0 - 未監聽 |
port - TCP端口 |
示例: |
net.tcp.port[<ip>,port] |
|||
檢查是否可以將TCP連接到指定的端口。
|
0 - 不能連接 |
ip - IP地址 (默認是 127.0.0.1) |
示例: |
net.tcp.service[service,<ip>,<port>] |
|||
檢查服務是否正在運行並接受TCP連接。 |
0 - 服務down了 |
service - 如下任一服務: 注意: 第一個參數,服務名稱必須按照上述的方式書寫,如http,不能寫成httpd 對於其他沒有涉及到的服務,可使用tcp port - 端口號 (默認為標准服務端口號)
|
示例: |
net.tcp.service.perf[service,<ip>,<port>] |
|||
檢測TCP服務性能 |
0 - 服務停止。 |
service - 如下任一服務: 注意: 第一個參數,服務名稱必須按照上述的方式書寫,如http,不能寫成httpd 對於其他沒有涉及到的服務,可使用tcp |
示例: |
net.udp.listen[port] |
|||
檢測UDP端口是否處於監聽狀態。 |
0 - 未監聽。 |
port - UDP端口 |
示例: |
net.udp.service[service,<ip>,<port>] |
|||
檢查服務是否正在運行並能響應UDP請求 |
0 - 服務停了。 |
service - ntp (參考 詳細信息) 目前僅支持ntp服務(時間服務器) |
示例: |
net.udp.service.perf[service,<ip>,<port>] |
|||
檢測UDP服務的性能 |
0 - 服務停了 |
service - ntp (參考詳細信息) |
示例: |
proc.cpu.util[<name>,<user>,<type>,<cmdline>,<mode>,<zone>] |
|||
進程CPU利用率百分比。 |
浮點型 |
name - 進程名 (默認為 all processes) 使用netsteat -tunlp顯示結果的最后一列 current (默認), all. 此參數僅在Solaris平台上受支持。 從Zabbix 3.0.3開始,如果agent程序已在Solaris上編譯且沒有區域支持,而是在支持區域的較新Solaris上運行,並且<zone>參數為缺省值或當前值,則agent程序將返回NOTSUPPORTED(該代理程序不能將結果限制為僅當前區)。但在這種情況下,支持<zone>參數值all。 |
示例: |
proc.mem[<name>,<user>,<mode>,<cmdline>,<memtype>] |
|||
用戶進程使用的內存。 |
整型 |
name - 進程名 (默認是all processes) 使用netsteat -tunlp顯示結果的最后一列 默認是vsize(虛擬內存大小) 所有系統均支持的有3個: vsize 虛擬內存大小 rss 駐留集大小 pmem 駐留集占總內存的百分比 |
示例: |
proc.num[<name>,<user>,<state>,<cmdline>] |
|||
進程數量 |
整型 |
name - 進程名稱 (默認是 all processes) all (默認), run, sleep, zomb |
示例: |
service.info[service,<param>] 測試不成功 |
|||
服務信息 |
|
關於服務的信息: Param取值為state或startup時: 返回整數 State: 0 - running, 1 - paused, 2 - start pending, 3 - pause pending, 4 - continue pending, 5 - stop pending, 6 - stopped, 7 - unknown, 255 - no such service; startup: 0 - automatic, 1 - automatic delayed, 2 - manual, 3 - disabled, 4 - unknown Param取值為displayname, path, user時: 返回值為字符串string類型 Param取值為description時: 返回值為Text類型 |
|
services[<type>,<state>,<exclude>] 測試不成功 |
|||
列表服務 |
|
返回0表示空, 如果是列表則是每行一個內容 |
|
sensor[device,sensor,<mode>] |
|||
硬件傳感器讀數 |
浮點型 |
device - 設備名稱 |
在Linux 2.4上讀取 /proc/sys/dev/sensors 在Zabbix 1.8.4之前,使用傳感器[temp1]格式。 |
system.boottime |
|||
系統啟動時間 |
整數 (Unix時間戳) |
|
|
system.cpu.discovery |
|||
檢測到的CPU/CPU內核列表。用於低級發現。 |
JSON對象 |
|
所有平台從2.4.0開始支持 |
system.cpu.intr |
|||
設備中斷數 |
整數 |
|
數字越大說明系統系統越忙碌,頻繁在各個應用之間切換 |
system.cpu.load[<cpu>,<mode>] |
|||
CPU負載 |
浮點數 |
cpu - 可能的值: avg1 (默認), avg5, avg15 |
示例: |
system.cpu.num[<type>] |
|||
CPU的數量 |
整數 |
type - 可能的值: |
示例: |
system.cpu.switches |
|||
上下文交換的數量。 |
整數 |
|
舊名稱: system[switches] |
system.cpu.util[<cpu>,<type>,<mode>] |
|||
CPU利用率。 |
浮點型 |
cpu - <CPU序號> 或者 all (默認值) type - 可能的值: |
示例: |
system.hostname[<type>] |
|||
系統主機名 |
字符串型 |
type (僅Windows使用) – netbios (默認) 或者 host |
該值由Windows上的GetComputerName()(對於netbios)或gethstname()(用於host)函數以及其它系統上的“hostname”命令獲取。 |
system.hw.chassis[<info>] |
|||
機架信息(需要機架是網絡設備) |
字符串 |
info – full (默認), model, serial, type or vendor之一 |
示例: system.hw.chassis[full] |
system.hw.cpu[<cpu>,<info>] |
|||
CPU信息 |
字符串或者整型 |
cpu - <CPU序號> 或者 all (默認) |
示例: |
system.hw.devices[<type>] |
|||
列出PCI或者USB設備 通過執行lspci指令獲得信息 |
文本型 |
type - pci (默認) 或者 usb |
示例: |
system.hw.macaddr[<interface>,<format>] |
|||
列出MAC地址 |
字符串型 |
interface - all (默認) 或者為一個正則表達式 |
列出與給定接口正則表達式名稱匹配的網卡的MAC地址(所有網卡的所有列表)。 |
system.localtime[<type>] |
|||
系統時間 |
整數 - type為 utc |
type - 可能的值: local - 'yyyy-mm-dd,hh:mm:ss.nnn,+ hh:mm'格式的時間 |
此監控項參數從Zabbix agent 版本2.0開始支持。 示例: |
system.run[command,<mode>] 提示遠程指令不能執行 |
|||
在主機上運行指定的命令 |
命令執行的文本結果 |
command - 要執行的命令 |
最多可以返回512KB的數據,包括截斷的尾隨空格。 否則會提示:Remote commands are not enabled. |
system.stat[resource,<type>] |
|||
系統信息。 |
整型或浮點型 |
ent - 該分區有權接收的處理器單元數(float) |
|
system.sw.arch |
|||
軟件架構信息。 |
字符串型 |
|
示例: |
system.sw.os[<info>] |
|||
操作系統信息 |
字符串 |
info - 可能的值: |
示例: |
system.sw.packages[<package>,<manager>,<format>] |
|||
列出已安裝的軟件包。 |
文本 |
package - all (默認) 或者為正則表達式 |
列表(按字母順序)安裝的包名稱與給定的包regexp匹配的包(全部列出它們全部)。 |
system.swap.in[<device>,<type>] |
|||
交換(從設備到內存)統計。 |
整型 |
device - 用於交換的設備 (默認是all) 有關默認的詳細信息請參考 支持的平台 |
示例: |
system.swap.out[<device>,<type>] |
|||
交換(從內存到設備)統計。 |
整型 |
device - 用於交換的設備 (默認是all) |
示例: |
system.swap.size[<device>,<type>] |
|||
交換空間大小(以字節為單位)或百分比(total)。 |
Integer - 字節 |
device - 用於交換的設備 (默認是 all) pfree (空閑交換空間,百分比), pused (使用交換空間,百分比), total(總交換空間), used (使用交換空間) |
如果沒有指定設備,Zabbix代理只會考慮交換設備(文件),物理內存將被忽略。 例如,在Solaris系統上,swap -s命令包含一部分物理內存和交換設備(與swap -l不同)。 |
system.uname |
|||
系統相關信息 |
字符串 |
|
返回值的示例(Unix): |
system.uptime |
|||
系統正常運行時間(以秒為單位) |
整數 |
|
在監控項配置中, 使用 s 或者 uptime 單位來獲取可讀取的值。 |
system.users.num |
|||
已登錄用戶數 |
整數 |
|
who 命令用於代理端獲取該值。 |
vfs.dev.read[<device>,<type>,<mode>] |
|||
磁盤讀取統計信息 |
Integer – Type取值為 sectors, operations, bytes |
device - 磁盤設備 (默認為 all) sectors per second(每秒扇區數) operations per second(每秒操作數) bytes per second(每秒字節數)
|
不同操作系統的“類型”參數的默認值: |
vfs.dev.write[<device>,<type>,<mode>] |
|||
磁盤寫入統計信息 |
整數 - 類型 為sectors, operations, bytes 浮點型 - 類型 為 sps, ops, bps |
device - 磁盤設備 (默認為all) sectors per second(每扇區數) operations per second(每秒操作數) bytes per second(每秒字節數)
mode - 可能的值: avg1 (默認), avg5, avg15 |
不同操作系統的“類型”參數的默認值: |
vfs.dir.size[dir,<regex_incl>,<regex_excl>,<mode>,<max_depth>] |
|||
目錄大小(以字節為單位) |
整數 |
dir - 目錄的絕對路徑
disk - 獲取磁盤使用情況 (作為 du -s -B1 dir). 和du命令不同,vfs.dir.size 監控項在計算目錄大小時會將隱藏的文件也包含在內(作為 du -sb .[^.]* * 在 dir內).
1 (默認) - 無限 0 - 不會遍歷到子目錄。 |
僅計算具有zabbix用戶讀取權限的目錄。 |
vfs.file.cksum[file] |
|||
文件checksum校驗,由UNIX cksum算法計算實現 |
整型 |
file - 文件全路徑 |
示例: |
vfs.file.contents[file,<encoding>] |
|||
檢索文件的內容 |
文本 |
file - 文件全路徑 默認是utf-8 |
如果文件為空或僅包含LF/CR字符,則返回空字符串。 |
vfs.file.exists[file] |
|||
檢測文件是否存在。 |
0 - 不存在 |
file - 文件的全路徑 |
示例: |
vfs.file.md5sum[file] |
|||
文件的MD5 checksum |
字符串(文件的MD5哈希) |
file - 文件的全路徑 |
示例: |
vfs.file.regexp[file,regexp,<encoding>,<start line>,<end line>,<output>] |
|||
查找文件中的字符串 |
包含匹配字符串的行,或由可選輸出參數指定的行 |
file - 文件完整路徑 |
只返回第一個匹配行。\\如果沒有行與表達式匹配,則返回空字符串。 |
vfs.file.regmatch[file,regexp,<encoding>,<start line>,<end line>] |
|||
查詢文件中的字符串 |
0 - 不匹配 |
file - 文件全路徑 |
start line, end line 和output 參數從版本2.2開始支持。 |
vfs.file.size[file] |
|||
文件大小(按字節) |
整數 |
file - 文件全路徑 |
文件必須具有Zabbix用戶讀的權限。 |
vfs.file.time[file,<mode>] |
|||
文件時間信息。 |
整數(Unix時間戳) |
file - 文件全路徑 access - 最后一次訪問時間, change - 最后一次修改時間 |
示例: |
vfs.fs.discovery |
|||
掛載的文件系統列表。用於低級發現 |
JSON對象 |
|
Zabbix agent從版本2.0開始支持。 |
vfs.fs.inode[fs,<mode>] |
|||
inode的數量或百分比 |
整型 - 針對數量 |
fs - 文件系統 |
示例: |
vfs.fs.size[fs,<mode>] |
|||
磁盤空間,以字節為單位,用百分比表示。 |
整數 - 針對字節 |
fs - 文件系統 |
在安裝卷的情況下,返回本地文件系統的磁盤空間。 |
vm.memory.size[<mode>] |
|||
內存大小,以字節為單位,以百分比表示。 |
整數 - 用於字節 |
mode - 可能的值: |
此監控項接受3類參數: |
web.page.get[host,<path>,<port>] |
|||
獲取網頁內容。 包括響應頭和實體 curl -I + 實體部分 |
網頁源碼 |
host - 主機名 |
失敗時返回一個空字符串。 |
web.page.perf[host,<path>,<port>] |
|||
加載完整網頁的時間(以秒為單位) |
浮點 |
host - 主機名 |
失敗時返回一個空字符串。 |
web.page.regexp[host,<path>,<port>,<regexp>,<length>,<output>] |
|||
在網頁上查找字符串。 |
匹配的字符串,或由可選的“輸出”參數指定 |
host - 主機名 |
如果找不到匹配或失敗,則返回一個空字符串。 |
一個特定於Linux的注意事項:Zabbix Agent必須具有權限讀取文件系統/proc(因此要給zabbix用戶(運行zabbix agent的用戶)足夠的權限)。
參閱www.grsecurity.org的內核修補程序限制非特權用戶的訪問權限。
可用的編碼
encoding參數用於指定處理相應監控項檢查的編碼,以便獲取的數據不會被破壞。 有關支持的編碼(代碼頁標識符)的列表,請參閱相應的文檔,例如libiconv(GNU Project)或Microsoft Windows SDK文檔“代碼頁標識符”的文檔。
如果傳遞空encoding,則默認使用UTF-8(用於較新的Unix/Linux發行版的默認語言環境,請參閱系統設置)或使用具有系統特定擴展(Windows)的ANSI。
關於監控項的一些疑難問題
1)如果與passive agent(被動式)一起使用,Zabbix Server服務器配置中的超時值可能需要高於Agent配置文件中的超時值。 否則,該監控項可能無法獲取任何值,因為zabbix server請求agent時首先超時。