第2章Zabbix基礎進階

1.1自定義添加item

Items可以存在於模板(Template)中,也可以存在於主機(Host)中,模板的作用是可以複用,對需要重複配置的監控項歸類。

下面演示如何在bjstack模板中添加一個Items,Keymemory.uasge[MemTotal]以及memory.uasge[MemFree]

1.配置zabbix-agent配置文件,添加自定義key,修改配置文件必須重啓agent

/etc/zabbix/zabbix_agentd.conf中配置參數,寫法如下:

UserParameter=memory.uasge[*],/bin/cat /proc/meminfo |grep "$1"|awk '{print $$2}'

2.測試key是否能獲取值

[root@linux-node1 ~]# yum install zabbix-get -y

[root@linux-node1 ~]# zabbix_get -s 192.168.90.12 -k memory.uasge[MemTotal]

494328

[root@linux-node1 ~]# zabbix_get -s 192.168.90.12 -k memory.uasge[MemFree]

76584

確保能獲取到的值,就說明Key配置是正確的。提示:zabbix_get僅能測試獲取Agent監控方式的Key值,不能獲取其他類型的數據。

3.bjstack模板中默認不存在統計總內存的大小的Items,故我們需要自己添加item,添加方法:單擊ConfigurationTemplatesbjstackitemsCreate item,如圖1-10所示

image.png

1-10

4.自己定義的Key,手動添加即可

image.png

1-11

5.完整的key如圖1-12 (自定義key基本上都是如下模式,更多請看Zabbix監控實踐)

image.png

1-12

1.2Items key小結

用戶自定義參數(UserParameter)僅支持Agent方式,對於其他方式,它是不支持的。

1.Key自定義的語法格式

/etc/zabbix/zabbix_agentd.conf中配置參數,寫法如下。

UserParameter=key,command

除了上面這種寫法,還支持參數傳遞的寫法,具體如下。

UserParameter=key[*],command $1 $2 $3 ….

2.自定義Key中的特殊字符處理

如果Userparameter包含\’”`*[]{}~$!&;()<>|#@這些字符,默認情況下,Zabbix對這些參數是無法正常處理的,需要在Zabbix_agentd.conf中開啓參數UnsafeUserParameters,並將其值設置爲1,語句如下。

[root@linux-node1 ~]#vim /etc/zabbix/zabbix_agentd.conf

UnsafeUserParameters=1

3.自定義Key的例子

UserParameter=login-user,uptime|awk  -F ' ' '{print $4}'

然後重啓zabbix_agent 服務(注意:修改配置文件必須重啓。)

[root@linux-node1 ~]# zabbix_get -s 192.168.90.12 -k login-user #運行測試命令,查看下Key

2

4.子配置文件的配置

爲了便於維護和分類管理,UserParameter的內容可以單獨寫一個配置文件。

[root@linux-node1 ~]#vim /etc/zabbix/zabbix_agentd.conf

Include=/etc/zabbix/zabbix_agentd.d/

Includezabbix_agentd.conf中部分內容的子配置文件,注意:zabbix_agentd.conf.d/文件下所有的配置文件都會被當做子配置文件,如果有重複,會導致客戶端Agent啓動失敗。

5.用戶自定義參數總結

自定義Key的語法。

特殊字符的處理。

子配置文件的注意事項。

注意:

1.用戶自定義參數一定要包含一個key和一個命令,也可以是一個腳本

2.key在整個系統是唯一的,一個key可以定義多個items

3.用戶自定義參數返回值,最大返回512

4.自定義完後,重啓服務測試Key

1.3Zabbix常用Key

1.3.1CPUKey

system.cpu.intr #設備中斷整數

system.cpu.load[<cpu>,<mode>] #CPU負載   

system.cpu.num[<type>] #CPU數量處理器個數type

system.cpu.switches #上下文交換交換次數

system.cpu.util[<cpu>,<type>,<mode>] #CPU利用率百分比

建議:

CPU負載、上下文、使用率等在Template OS Linux這個模板中存在,需要調整觸發器,因爲默認觸發器較低(通過百分比來觸發報警。)

1.3.2內存的key

vm.memory.size[<mode>] #內存大小字節或百分比

system.swap.in[<device>,<type>] #磁盤交換到交換分期

system.swap.out[<device>,<type>] #交換分期到磁盤

system.swap.size[<device>,<type>] #交換分區大小或者百分比

建議:

內存在Template OS Linux這個模板中存在,調整下觸發器即可(通過百分比來觸發報警。)

1.3.3磁盤的key

vfs.dev.read[<device>,<type>,<mode>]  #磁盤讀取狀態整數

vfs.dev.write[<device>,<type>,<mode>] #磁盤寫入狀態整數

vfs.fs.inode[fs,<mode>] #磁盤inode數量pfree (空閒百分比), pused (使用百分比)

建議:

默認Template OS Linux模板有自動發現磁盤,以及外接數據盤,只需要修改自動觸發器即可。(如果需要監控inode,則可以通過自帶key,也可以通過自定義方式)

1.3.4網卡流量Key

net.if.in[if,<mode>]  #網卡入口流量

net.if.out[if,<mode>] #網卡出口流量

net.if.total[if,<mode>] #網卡進/出流量的總和

建議:

默認Template OS Linux模板都有自動發現網卡功能,所以基本我們只需要根據業務的流量來調整不同的觸發器。

1.3.5監控端口的Key

net.tcp.listen[port] #檢測TCP端口是否開啓

net.udp.listen[port] ##檢測UDP端口是否開啓

net.tcp.port[<ip>,port] #連接到指定的TCP端口

net.tcp.service[service,<ip>,<port>] #檢測服務是否開啓,並且端口可用

建議:

默認Template OS Linux沒有端口檢測,可以根據實際情況監控端口以及服務(也可以通過自定義腳本來實現)

1.3.6監控文件的key

vfs.file.cksum[file] #計算文件校驗

vfs.file.contents[file,<encoding>] #獲取文本內容若爲空,只返回 LF/CR characters.

vfs.file.exists[file] #檢測文件是否存在1:存在 0:不存在

vfs.file.md5sum[file] #文件MD5校驗碼文件MD5哈希值

vfs.file.size[file] #文件大小字節fzabbix必須有可讀此文件的權限

vfs.file.time[file,<mode>] #文件時間信息Unix 時間戳. modemodify (默認修改時間), access 最後訪問時間, change 最後改變時間

建議:

默認Template OS Linux只有一個文件校驗/etc/passwd,可根據不同的文件來做不同校驗或者大小的控制。

1.3.7監控進程的key

kernel.maxfiles #系統支持最大的open files整數

kernel.maxproc #系統支持最大的進程數量整數

建議:

進程在Template OS Linux這個模板中存在,調整下觸發器即可(低於多少即觸發)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章