Zabbix監控系統中內建的監控引數(Key)詳解
轉載自:https://blog.csdn.net/xkjcf/article/details/78559273?locationNum=10&fps=1
Zabbix 中內建了很多監控引數(Key),我們可以通過在客戶端配置檔案中定義key,獲取監控物件中的系統、CPU、網路、記憶體、檔案系統等資訊。下面就詳細介紹一下這些監控引數的意義。
1. 舉例
假如我的需求是:監控某臺Web伺服器的80埠的併發連線數,並設定圖形。
先分析該需求,可以分為兩步。第一步是要建立自定義監控項,第二步是要針對該監控項設定成圖形。監控專案有一個核心元素就是資料來源,有了資料來源才可以建立監控項。
- 首先在zabbix-agent端上編輯自定義指令碼:
[[email protected] ~]# vim /usr/local/sbin/estab.sh #寫入下面內容
#!/bin/bash
## 獲取80埠併發連線數
netstat -ant |grep ':80 ' |grep -c ESTABLISHED # netstat -an 可檢視系統TCP連線數;ESTABLISHED表示正在連線中的狀態,另外80後面多個空格是為了精確,避免包含8080埠
- 儲存後,需要修改指令碼許可權(讓zabbix使用者也能執行):
[[email protected] ~]# chmod 777 /usr/local/sbin/estab.sh
- 還需要編輯zabbix-agent的配置檔案,定義監控項的key:
[[email protected] ~]# vim /etc/zabbix/zabbix_agentd.conf #增加下面兩行 UnsafeUserParameters=1 #表示使用自定義指令碼 UserParameter=my.estab.count[*],/usr/local/sbin/estab.sh #自定義監控項的key為my.estab.count,後面的[*]裡面寫指令碼引數,沒有可以省略,指令碼為 /usr/local/sbin/estab.sh
- 儲存配置檔案後重啟zabbix-agent服務:
[[email protected] ~]# systemctl restart zabbix-agent
- 然後到服務端做個驗證,檢視剛剛配置是否正確,在服務端執行命令:
[[email protected] fonts]# zabbix_get -s 192.168.33.129 -p 10050 -k 'my.estab.count'
0 #因為129伺服器上沒有任何80埠的訪問,所以為0,只要能夠獲取到客戶端的資料,就說明剛剛配置沒有問題
- 然後第二步就是在zabbix 的web介面去建立監控項並設定成圖形,這裡不是重點,不做過多贅述(參考:https://blog.csdn.net/miss1181248983/article/details/81220983 )
2. 測試獲取監控引數內容的方法
上面例子中,我們就自定義了key——my.estab.count
,通過設定key來獲得我們想要監控的資訊。
在Zabbix Server上使用zabbix_get
命令可以從監控物件獲取監控引數的具體內容。
- zabbix_get命令的具體使用方法:
zabbix_get -s 目標伺服器IP -p 埠(10050) -k {key}
- 示例:
[email protected]:~$ zabbix_get -s 192.168.0.5 -p 10050 -k system.uname # key為 system.uname
Linux ubuntu 4.2.0-16-generic #19-Ubuntu SMP Thu Oct 8 15:35:06 UTC 2015 x86_64
3. 監控引數的實際意義
3.1 作業系統資訊(OS)
# 系統啟動的時間點(Host boot time)
system.boottime
# 系統已執行時長(System uptime)
system.uptime
# 系統時間(Host local time)
system.localtime
# 主機名(Host name)
system.hostname
# 核心引數,可開啟的最大檔案數(Maximum number of opened files)
kernel.maxfiles
# 核心引數,支援的最大程序數(Maximum number of processes)
kernel.maxproc
# 目前登入到系統中的使用者數量(Number of logged in users)
system.users.num
# 獲取系統資訊(System information)
system.uname
3.2 網絡卡資訊(Network interfaces)
# 網絡卡流速,流入方向
net.if.in
# 獲取指定網絡卡(br0)的流入流量的流速值(Incoming network traffic on br0)
net.if.in[br0]
# 網絡卡流速,流出方向
net.if.out
# 獲取指定網絡卡(br0)的流出流量的流速值(Outgoing network traffic on br0)
net.if.out[br0]
3.3 程序資訊(Processes)
# 程序數量(Number of processes)
proc.num
# 目前系統中的程序總數(Number of processes)
proc.num[]
#目前正在執行(處於執行態)的程序總數(Number of running processes)
proc.num[run]
3.4 處理器資訊(CPU)
# CPU的程序上下文切換(Context switches)
system.cpu.switches
# CPU中斷數量(Interrupts per second)
system.cpu.intr
# CPU的負載值,程序佇列的平均長度(Processor load)
system.cpu.load
# CPU每分鐘的負載值,按照核數做平均值(Processor load (1 min average per core))
system.cpu.load[percpu,avg1]
# CPU每5分鐘的負載值,按照核數做平均值(Processor load (5 min average per core))
system.cpu.load[percpu,avg5]
# CPU每15分鐘的負載值,按照核數做平均值(Processor load (15 min average per core))
system.cpu.load[percpu,avg15]
CPU的負載值可以使用uptime命令檢視,但是Zabbix所獲得到CPU負載值與uptime所顯示的結果並不同,它的結果是uptime所顯示的負載值除以主機的CPU核數。
測試結果如下:
[email protected]:/tmp$ uptime
14:08:59 up 21 days, 19 min, 2 users, load average: 0.04, 0.05, 0.05
[email protected]:/tmp$ cat /proc/cpuinfo|grep processor|wc -l
4
通過zabbix_get獲取負載值
[email protected]:~$ zabbix_get -s 192.168.0.38 -p 10050 -k system.cpu.load[percpu,avg1]
0.010000
[email protected]:~$ zabbix_get -s 192.168.0.38 -p 10050 -k system.cpu.load[percpu,avg5]
0.012500
[email protected]:~$ zabbix_get -s 192.168.0.38 -p 10050 -k system.cpu.load[percpu,avg15]
0.012500
# CPU的使用率
system.cpu.util
# CPU的空閒時間,百分比形式(CPU idle time)
system.cpu.util[,idle]
# CPU的使用者態執行時間,百分比形式(CPU user time)
system.cpu.util[,user]
# CPU的系統態執行時間,百分比形式(CPU system time)
system.cpu.util[,system]
# CPU的io等待時間,百分比形式(CPU iowait time)
system.cpu.util[,iowait]
# CPU的中斷時間,百分比形式(CPU interrupt time)
system.cpu.util[,interrupt]
# CPU的nice時間,百分比形式(CPU nice time)
system.cpu.util[,nice]
# CPU的軟中斷時間,百分比形式(CPU softirq time)
system.cpu.util[,softirq]
# CPU的偷盜的時間,百分比形式(CPU steal time)
system.cpu.util[,steal]
系統態執行時間較高說明程序進行系統呼叫的次數比較多。一般的程式,如果系統態執行時間佔用過高,就需要優化程式,減少系統呼叫。
io等待時間的比例過高,則表明硬碟的IO效能差,如果是讀寫檔案比較頻繁,讀寫效率要求比較高,可以考慮更換硬碟,或者使用多磁碟做Raid的方案。
3.5 記憶體資訊(Memory)
# 系統中swap分割槽的使用情況
system.swap.size
# swap分割槽的總容量(Total swap space)
system.swap.size[,total]
#swap分割槽尚可使用的容量(Free swap space)
system.swap.size[,free]
# swap分割槽尚可使用的容量,百分比形式(Free swap space in %)
system.swap.size[,pfree]
# 獲取實體記憶體的使用情況
vm.memory.size
# 實體記憶體總量(Total memory)
vm.memory.size[total]
#實體記憶體目前可用的容量(Available memory)
vm.memory.size[available]
虛擬記憶體是由實體記憶體(即購買的記憶體條)和swap分割槽組成。實體記憶體佔用過高之後,會將部分很久不用的資料轉儲到swap分割槽中。由此可見,在正常情況下,實體記憶體使用量並不高的情況下,不會佔用swap分割槽。如果出現實體記憶體使用量過高,開始使用swap分割槽,或者swap分割槽使用過高的情況,就需要考慮購買並新增實體記憶體了。
記憶體的資訊可以使用free命令檢視,其中<實體記憶體目前可用的容量>的值約等於free和cached的數值之和。
[email protected]:/tmp$ free -b
total used free shared buffers cached
Mem: 16784355328 16692240384 92114944 108625920 15360000 14823591936
-/+ buffers/cache: 1853288448 14931066880
Swap: 10691276800 9728000 10681548800
通過zabbix_get獲取記憶體使用資訊
[email protected]:~$ zabbix_get -s 192.168.0.38 -p 10050 -k vm.memory.size[available]
14989234176
[email protected]:~$ zabbix_get -s 192.168.0.38 -p 10050 -k system.swap.size[,free]
10681548800
3.6 檔案系統資訊(Filesystems)
# 檔案系統中的inode的使用情況
vfs.fs.inode
# 檔案系統的指定分割槽中尚未使用的inode數量,百分比形式(Free inodes on / (percentage))
vfs.fs.inode[/,pfree]
檔案系統的inode表示可以建立的檔案的最大數量。在需要建立很多檔案的系統中需要密切關注這個值。如果檔案系統的容量沒有用完,但是inode的數量已經消耗完了,也再也不能建立檔案了。
# 檔案系統中的使用容量詳情
vfs.fs.size
# 檔案系統中指定分割槽(目錄)中未使用的容量數值(Free disk space on /)
vfs.fs.size[/,free]
# 檔案系統中指定分割槽(目錄)中未使用的容量,百分比形式(Free disk space on / (percentage))
vfs.fs.size[/,pfree]
# 檔案系統中指定分割槽(目錄)中已使用的容量(Used disk space on /)
vfs.fs.size[/,used]
# 檔案系統中指定分割槽(目錄)的總容量(Total disk space on /)
vfs.fs.size[/,total]
3.7 Web應用資訊(WebApp)
Web應用資訊的引數,預設沒有配置在任何模板中,需要設定了web scenario之後才能夠看到。
# Web頁面下載速度
web.test.in
# 指定方案中所有步驟的頁面平均下載速度(Download speed for scenario "baidu.test".)
web.test.in[baidu.test,bps]
# 指定方案中指定步驟的頁面下載速度(Download speed for step "baidu" of scenario "baidu.test".)
web.test.in[baidu.test,baidu,bps]
# Web應用測試是否失敗(Failed step of scenario)
web.test.fail
# 指定方案是否測試失敗(Failed step of scenario "baidu.test".)
web.test.fail[baidu.test]
# Web應用測試錯誤詳情(Last error message of scenario)
web.test.error
# 指定方案中各個步驟中最後出現的錯誤詳情(Last error message of scenario "baidu.test".)
web.test.error[baidu.test]
# Web應用響應狀態碼(Last error message of scenario)
web.test.rspcode
# 指定方案中指定步驟的頁面響應狀態碼(Response code for step "baidu" of scenario "baidu.test".)
web.test.rspcode[baidu.test,baidu]
# Web應用響應時間(Response time.)
web.test.time
# 指定方案中指定步驟的頁面響應時間(Response time for step "baidu" of scenario "baidu.test".)
web.test.time[baidu.test,baidu,resp]
檢測Webapp的效能,頁面測試是否出現錯誤,測試錯誤詳情,頁面的響應時間,通過頁面大小和響應時間計算頁面的下載速度等。
3.8 安全資訊(Security)
# 求指定檔案的校驗和(Checksum)
vfs.file.cksum
# 求/etc/passwd的校驗和(Checksum of /etc/passwd)
vfs.file.cksum[/etc/passwd]
3.9 Agent資訊(Agent ping)
# Agent的線上狀態(Agent ping)
agent.ping
# Zabbix Agent的hostname(Host name of zabbix_agentd running)
agent.hostname
# Agent的軟體版本號(Version of zabbix_agent(d) running)
agent.version
以上介紹了Zabbix中與系統相關的監控引數,基本覆蓋了獲取系統資訊、影響系統穩定的各種引數,各個引數之間的相互影響需要在使用過程中細細體會。