Zabbix-(三)監控主機CPU、磁碟、記憶體並建立監控圖形
Zabbix-(三)監控主機CPU、磁碟、記憶體並建立監控圖形
一.前言
前文中已經講述了兩種方式對Zabbix的搭建,本文將講述如何在zaibbx上新增需要監控的主機,以及使用Zabbix自帶模板和自定義模板對主機的CPU、磁碟、記憶體進行監控,並觸發問題,並且在Zabbix儀表盤建立實時監控圖形。
準備
- Zabbix Server (Zabbix 4.4) (ip:192.168.152.140)
- 被監控主機A (Centos7.6),下文簡稱 Server-A (ip:192.168.152.142)
- 被監控主機B (Centos7.6),下文簡稱 Server-B (ip:192.168.152.143)
二.為被監控主機安裝zabbix-agent
Server-A、Server-B分別安裝zabbix-agent
# rpm -Uvh https://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm # yum install -y zabbix-agent
Server-A、Server-B配置zabbix-agent
# vim /etc/zabbix/zabbix_agentd.conf
修改以下配置:
- Server-A的zabbix_agentd.conf
Server=192.168.152.140 ServerActive=192.168.152.140 # Hostname要與在Zabbix介面配置的Hostname(主機名稱)保持一致 Hostname=Server-A
- Server-B的zabbix_agentd.conf
Server=192.168.152.140 ServerActive=192.168.152.140 # Hostname要與在Zabbix介面配置的Hostname(主機名稱)保持一致 Hostname=Server-B
分別啟動zabbix-agent
# systemctl start zabbix-agent
可以檢視agent日誌
# tailf /var/log/zabbix/zabbix_agentd.log
可能會出現以下內容,是由於zabbix介面上沒有配置主機,接下來將在zabbix頁面上進行主機配置
6981:20191030:111132.151 no active checks on server [192.168.152.140:10051]: host [Server-A] not found
三.Zabbix新增主機
通過頁面操作,將需要監控的主機新增到zabbix中
登入Zabbix,預設賬號:Zabbix,預設密碼:admin (可在zabbix資料庫 users表查詢)
- 點選【配置】-【主機】-【建立主機】,新增需要被監控的主機
首先配置【主機】資訊,新增Server-A,輸入配置項
配置項 值 * 主機名稱 Server-A 可見的名稱 Server-A * 群組 Linux servers (進行選擇) * agent代理程式的介面 IP地址: 192.168.152.142 埠: 10050 最後點選【儲存】
在【主機】頁面可以看到Server-A已經成功添加了
同時,Server-A的zabbix-agent日誌也不再列印 host [Server-A] not found
注: 由於在之前在安裝Zabbix server時,也在zabbix server上安裝了zabbix-agent,因此圖例上除了Server-A主機以外,還有zabbix server主機
通過全克隆新增主機Server-B
選擇需要複製的主機Server-A
點選【全克隆】(full clone)
修改主機名稱、agent IP地址等資訊
修改配置項 值 *主機名稱 Server-B *agent IP 192.168.152.143 最後點選【新增】,等待Server-B與zabbix server建立通訊
四.建立自定義模板(Template)
在新增主機步驟中,添加了2臺需要監控的主機,新增監控項時也可以給每臺主機單獨新增監控項,但是隨著主機數量增多,就會出現過多重複的操作,因此可以使用zabbix的Templates(模板)將Items(監控項和Triggers(觸發器)等眾多配置定義在模板中,將主機連結到定義好的模板上,就可以免去重複的操作。
下面將自定義模板,定義監控磁碟剩餘空間監控項,並配置觸發器當磁碟剩餘空間低於一定閾值時觸發告警。
- 建立自定義模板
點選【配置】-【模板】-【建立模板】
輸入模板資訊,完成後點選【新增】
配置項 值 * 模版名稱 Template Disk Free Size 可見的名稱 Template Disk Free Size * 群組 Linux servers (選擇) 描述 自定義磁碟剩餘空間模板 注: 讀者也可以自定義一個群組,並在自定義群組中建立模板,這個步驟本文不再示範
五.建立磁碟剩餘空間監控項和觸發器
建立自定義磁碟監控項(Item)
進入自定義模板的監控項模組
點選【建立監控項】
輸入監控引數
配置項 值 * 名稱 磁碟剩餘空間監控項 型別 Zabbix 客戶端 * 鍵值 vfs.fs.size[/,free] 單位 B ……其他配置項 根據需要填寫 這裡的鍵值 vfs.fs.size[/,free]是指,監控根路徑下,空餘的磁碟大小
點選【新增】
注:建立監控項(Items)可以參考官方建立監控項, 更多的鍵值(Keys)可以參考官方監控項型別
- 建立觸發器(Trigger)
觸發器可以配置當監控項監控到的資料達到一定閾值,從而觸發問題。
在Template Disk Free Size模板中選擇【觸發器】,點選【建立觸發器】
輸入觸發器引數
配置項 值 * 名稱 磁碟剩餘空間觸發器 嚴重性 嚴重(選擇) * 表示式/問題表現形式 {Template Disk Free Size:vfs.fs.size[/,free].last()}<15000000000 (可通過選擇監控項) 事件成功迭代 恢復表示式(選擇) * 恢復表示式 {Template Disk Free Size:vfs.fs.size[/,free].last()}>=15000000000 問題事件生成模式 多重(選擇) 表示式/問題表示形式
選擇已配置的磁碟剩餘空間監控項
配置結果 < 15000000000, 監控項中單位為B,這裡15GB換算成15000000000B
點選【插入】,可以看到如下表達式,表示式意思是,當檢測到磁碟弓箭剩餘不足15GB時,將觸發問題
{Template Disk Free Size:vfs.fs.size[/,free].last()}<15000000000
因此可以直接輸入問題恢復表示式,即磁碟剩餘空間高於15GB時,恢復問題
{Template Disk Free Size:vfs.fs.size[/,free].last()}>=15000000000
點選【新增】
再將該自定義模板,連結到Server-A、Server-B主機的模板中,參考建立主機新增連結,不過在篩選模板時,群組要選擇Linux servers(與建立模板時群組保持一致),新增後點擊【更新】
進入【配置】-【主機】-【Server-A】(或者 Server-B)-【監控項】中,可以搜尋到磁碟剩餘空間監控項已經新增成功
注:如果監控項狀態不為【已啟動】可以檢視zabbix server日誌進行排查
測試一下
當前Server-A主機磁碟剩餘空間,為15G
上傳一些檔案到Server-A,此時磁碟剩餘空間為14G
等待Zabbix監控到Server-A磁碟變化,檢視儀表盤,出現問題,配置成功
刪除Server-A大檔案,等待Zabbix監控到主機磁碟恢復,儀表盤問題恢復
六.監控CPU空閒率
在新增主機時,由於已經連結了Template OS Linux by Zabbix agent模板(該模板還連結了Template Module Linux CPU by Zabbix agent等若干個其他模板),Template Module Linux CPU by Zabbix agent模板自帶了許多監控項,其中包括CPU idle time 監控項,因此可以直接使用該監控項監控主機CPU空閒率數值,無需自定義監控項,只需要新增一個觸發器(Trigger)來讀取監控項觸發告警即可。
注: zabbix自帶模板中,有許多監控項可以直接利用起來,無需再單獨建立監控項,使用時可先在已有模板中查詢下可用的監控項。
使用自帶模板中監控項
直接使用CPU idle time 監控項即可,可以在【配置】-【主機】,【Server-A】的【監控項】中搜索到該監控項(在下圖中可以看到該監控項鍊接了模板)
在已有模板中新增觸發器(trigger)
這裡在模板Template Module Linux CPU by Zabbix agent新增一個觸發器。
點選【配置】-【模板】搜尋模板Template Module Linux CPU by Zabbix agent,並進入【觸發器】配置
建立觸發器操作流程參考上面步驟中的建立自定義觸發器,這裡說明一下配置引數
配置項 值 * 名稱 CPU空閒率觸發器 嚴重性 嚴重 (選擇) 表示式/問題表現式 {Template Module Linux CPU by Zabbix agent:system.cpu.util[,idle].avg(5m)}>=80 事件成功迭代 恢復表示式(選擇) * 恢復表示式 {Template Module Linux CPU by Zabbix agent:system.cpu.util[,idle].avg(5m)}<80 表示式/問題表現式:表示在5分鐘內CPU平均空閒率如果高於80%,那麼將觸發問題
新增表示式示例:
system.cpu.util[,idle]官方說明
測試一下
等待5分鐘,Zabbix server、Server-A、Server-B的CPU空閒率都高於80%,Dashboard介面觸發了問題,由於Zabbix server主機也連結了Template OS Linux by Zabbix agent模板,因此修改Template Module Linux CPU by Zabbix agent模板,Zabbix server的CPU空閒率也被監控,所以在修改模板時要注意。
七.監控記憶體佔用率
在上面的步驟中添加了磁碟剩餘空間、CPU空閒率監控,直接使用了Zabbix 客戶端型別的監控項的鍵值,但是有些監控項可能不能直接獲取,需要通過計算的方式來獲取,例如監控記憶體佔用率,雖然可以使用vm.memory.size這個鍵值,但是得到值並不是我們所期望的,參考下面官方的解釋,雖然mode中有pused (used, percentage),但是"used"="total - free" 而 “available"="free + buffers + cached"(核心版本Linux<3.14),實際是想要的值:
(available - total) / total
因此需要使用可計算的鍵值型別
官方對vm.memory.size以及引數解釋:
在Template OS Linux by Zabbix agent模板新增監控項
配置項 值 * 名稱 記憶體佔用率監控項 型別 可計算的 * 鍵值 memory.utilization (自定義) * 公式 100*(last("vm.memory.size[total]")-last("vm.memory.size[available]"))/last("vm.memory.size[total]") 資訊型別 浮點數 單位 % ……其他配置項 預設即可 自定義鍵值可自己輸入,具體規則參考官方鍵值規則
這裡就不再建立觸發器了,感興趣的讀者可以自行建立,可參考上面的觸發器建立步驟
八.Dashboard建立圖形
可以在首頁儀表盤裡建立圖形,實時檢視監控項的資料值。
回到zabbix首頁,點選【編輯儀表盤】-【新增構件】
- 建立磁碟剩餘空間圖形
輸入基本資訊
新增【主機】和【監控項】
左邊一欄選擇主機Server-A,右邊一欄選擇Server-A的磁碟監控項
再【新增新資料集】,同樣操作將Server-B的磁碟監控也新增到圖形中
新增CPU空閒率圖形
按照上面的步驟,新增Server-A,Server-B的CPU空閒率圖形
新增記憶體佔用率圖形
同樣按照上面的步驟,新增Server-A,Server-B的記憶體佔用率圖形
儲存設定並在儀表盤中檢視
點選【儲存設定】
在儀表盤頁面檢視圖形
九.參考文件
- Zabbix4.4官方建立監控項
- Zabbix4.4鍵值型別
- Zabbix4.4鍵值型別
- Zabbix4.4 vm.memory.size