Zabbix中內置了很多監控參數(Key_),可以獲取監控對象中的系統、CPU、網絡、內存、文件系統等信息。下面就詳細介紹一下這些監控參數的意義。
1. 測試獲取監控參數內容的方法
在Zabbix Server上使用zabbix_get命令可以從監控對象獲取監控參數的具體內容。zabbix_get命令的具體使用方法如下:
zabbix_get -s 目標服務器IP -p 端口(10050) -k {key}
zabbix_get命令實際的執行結果如下:
hadoop@centos:~$ zabbix_get -s 192.168.3.133 -p 10050 -k system.uname
2. 監控參數的實際意義
2.1 操作系統信息(OS)
Keys |
說明 |
system.boottime |
# 系統啟動的時間點(Host boot time)(單位:時間戳);API中參數history需指定為3; |
system.uptime |
# 系統已運行時長(System uptime)(單位:秒);API中參數history需指定為3; |
system.localtime |
# 系統時間(Host local time)(單位:時間戳);API中參數history需指定為3; |
system.hostname |
# 主機名(Host name);API中參數history需指定為1; |
kernel.maxfiles |
# 內核參數,可打開的最大文件數(Maximum number of opened files);API中參數history需指定為3; |
kernel.maxproc |
# 內核參數,支持的最大進程數(Maximum number of processes);API中參數history需指定為3; |
system.users.num |
# 目前登錄到系統中的用戶數量(Number of logged in users);API中參數history需指定為3; |
system.uname |
# 獲取系統信息(System information);API中參數history需指定為1; |
|
|
2.2 網卡信息(Network interfaces)
網卡按照最高網速可以分為百兆網卡(100Mbps)和千兆網卡(1000Mbps或1Gbps)。當傳輸大量的數據時,可能會出現流速過大的情況。對於Webapp而言,如果出現高並發,同時請求的頁面比較大時,就會出現流量過大的情況,也叫作帶寬被占滿了。如果試驗將網速觸發到頂速,可以在內網環境中,在兩台主機之間傳輸一個大文件,如果是百兆網卡可以傳輸幾個G的數據,如果是千兆網卡則需要傳輸幾十個G的數據,效果才會比較明顯。兩個主機之間傳輸數據時,網速最大不會超過網速比較小的網卡的最高網速。比如百兆網卡之間傳輸數據,最高配可能到達90Mbps以上;千兆網卡之間傳輸數據,最高配速可能到達900Mbps以上;百兆網卡和千兆網卡之間傳輸數據,最高配速只能到達90Mbps以上。
傳輸大量的數據,理論上會出現高流速的情況,如果沒有出現,則說明是數據傳輸的發送方或者接收方在處理數據上消耗了一些時間,這些時間攤平了數據的流速。此時如果需要提升傳輸速度,則需要減少發送發或接收方的數據處理操作。
Keys |
說明 |
net.if.out[br0] |
# 網卡流速,流出方向;時間間隔60s; # 獲取指定網卡(br0)的流出流量的流速值(Outgoing network traffic on br0),br0為網卡名稱,根據實際情況填寫;時間間隔60s; |
net.if.in[br0] |
# 網卡流速,流入方向(單位:字節); API中參數history需指定為3;下同;時間間隔60s; # 獲取指定網卡(br0)的流入流量的流速值(Incoming network traffic on br0),br0為網卡名稱,根據實際情況填寫;時間間隔60s; |
|
|
2.3 進程信息(Processes)
Keys |
說明 |
proc.num[] |
# 目前系統中的進程總數(Number of processes);時間間隔60s; |
proc.num[,,run] |
# 目前正在運行(處於運行態)的進程總數(Number of running processes);時間間隔60s; |
|
|
2.4 處理器信息(CPU)
--> 通過zabbix_get獲取負載值
hadoop@centos:~$ zabbix_get -s 192.168.0.38 -p 10050 -k system.cpu.load[percpu,avg1]
0.010000
hadoop@centos:~$ zabbix_get -s 192.168.0.38 -p 10050 -k system.cpu.load[percpu,avg5]
0.012500
hadoop@centos:~$ zabbix_get -s 192.168.0.38 -p 10050 -k system.cpu.load[percpu,avg15]
0.012500
合理的控制用戶態、系統態、io等待時間可以保證進程高效率的運行。
系統態運行時間較高說明進程進行系統調用的次數比較多。一般的程序,如果系統態運行時間占用過高,就需要優化程序,減少系統調用。
io等待時間的比例過高,則表明硬盤的IO性能差,如果是讀寫文件比較頻繁,讀寫效率要求比較高,可以考慮更換硬盤,或者使用多磁盤做Raid的方案。
Keys |
說明 |
system.cpu.switches |
# CPU的進程上下文切換(Context switches per seconds),單位sps,表示每秒采樣次數;API中參數history需指定為3;時間間隔60s; |
system.cpu.intr |
# CPU中斷數量(Interrupts per second); API中參數history需指定為3; |
system.cpu.load[percpu,avg1] |
# CPU每分鍾的負載值,按照核數做平均值(Processor load (1 min average per core));API中參數history需指定為0;下同 |
system.cpu.load[percpu,avg5] |
# CPU每5分鍾的負載值,按照核數做平均值(Processor load (5 min average per core)) |
system.cpu.load[percpu,avg15] |
# CPU每15分鍾的負載值,按照核數做平均值(Processor load (15 min average per core)) |
system.cpu.util[,softirq] |
# CPU的軟中斷時間,百分比形式(CPU softirq time);API中參數history需指定為0;下同 |
system.cpu.util[,steal] |
# CPU的偷盜的時間,百分比形式(CPU steal time); |
system.cpu.util[,idle] |
# CPU的空閑時間,百分比形式(CPU idle time);API中參數history需指定為0;下同;時間間隔60s; |
system.cpu.util[,user] |
# CPU的用戶態運行時間,百分比形式(CPU user time);時間間隔60s; |
system.cpu.util[,system] |
# CPU的系統態運行時間,百分比形式(CPU system time);時間間隔60s; |
system.cpu.util[,iowait] |
# CPU的io等待時間,百分比形式(CPU iowait time) |
system.cpu.util[,interrupt] |
# CPU的中斷時間,百分比形式(CPU interrupt time) |
system.cpu.util[,nice] |
# CPU的nice時間,百分比形式(CPU nice time) |
|
|
2.5 內存信息(Memory)
虛擬內存是由物理內存(即購買的內存條)和swap分區組成。物理內存占用過高之后,會將部分很久不用的數據轉儲到swap分區中。由此可見,在正常情況下,物理內存使用量並不高的情況下,不會占用swap分區。如果出現物理內存使用量過高,開始使用swap分區,或者swap分區使用過高的情況,就需要考慮購買並添加物理內存了。
---> 通過zabbix_get獲取內存使用信息
hadoop@centos:~$ zabbix_get -s 192.168.4.133 -p 10050 -k vm.memory.size[available]
14989234176
hadoop@centos:~$ zabbix_get -s 192.168.4.133 -p 10050 -k system.swap.size[,free]
10681548800
Keys |
說明 |
system.swap.size[available] |
# 物理內存目前可用的容量(Available memory)(單位:字節);API中參數history需指定為3;時間間隔60s; |
system.swap.size[,total] |
# swap分區的總容量(Total swap space);API中參數history需指定為3;時間間隔3600s; |
system.swap.size[,free] |
# swap分區尚可使用的容量(Free swap space);API中參數history需指定為3;時間間隔60s; |
system.swap.size[,pfree] |
# swap分區尚可使用的容量,百分比形式(Free swap space in %);API中參數history需指定為0;時間間隔60s; |
vm.memory.size[total] |
# 物理內存總量(Total memory)(單位:字節);API中參數history需指定為3;時間間隔3600s; |
|
|
2.6 文件系統信息(Filesystems)
文件系統的inode表示可以創建的文件的最大數量。在需要創建很多文件的系統中需要密切關注這個值。如果文件系統的容量沒有用完,但是inode的數量已經消耗完了,也再也不能創建文件了。
Keys |
說明 |
vfs.fs.inode[/,pfree] |
# 文件系統的指定分區中尚未使用的inode數量,百分比形式(Free inodes on / (percentage));API中參數history需指定為0;時間間隔60s; |
vfs.fs.size[/,free] |
# 文件系統中指定分區(目錄)中未使用的容量數值(Free disk space on /);API中參數history需指定為3;時間間隔60s; |
vfs.fs.size[/,pfree] |
# 文件系統中指定分區(目錄)中未使用的容量,百分比形式(Free disk space on / (percentage));API中參數history需指定為0;時間間隔60s; |
vfs.fs.size[/,used] |
# 文件系統中指定分區(目錄)中已使用的容量(Used disk space on /)(單位:字節);API中參數history需指定為3;下同;時間間隔60s; |
vfs.fs.size[/,total] |
# 文件系統中指定分區(目錄)的總容量(Total disk space on /);時間間隔3600s; |
|
|
2.7 安全信息(Security)
Keys |
說明 |
vfs.file.cksum[\/etc\/passwd] |
# 求指定文件的校驗和(Checksum)(單位:字節);API中參數history需指定為3;下同。 # 求/etc/passwd的校驗和(Checksum of /etc/passwd) |
|
|
2.8 Agent信息(Agent ping)
Keys |
說明 |
agent.ping |
# Agent的在線狀態(Agent ping);API中參數history需指定為3; |
agent.hostname |
# Zabbix Agent的hostname(Host name of zabbix_agentd running);API中參數history需指定為1;下同 |
agent.version |
# Agent的軟件版本號(Version of zabbix_agent(d) running) |
|
|
以上介紹了Zabbix中與系統相關的監控參數,基本覆蓋了獲取系統信息、影響系統穩定的各種參數,各個參數之間的相互影響需要在使用過程中細細體會。