手把手帶你用Zabbix進行操作系統監控
zabbix默認使用zabbix agent監控操作系統,其內置的監控項可以滿足系統大部分的指標監控,因此,在完成Zabbix agent的安裝后,只需在前端頁面配置并關聯相應的系統監控模板就可以了。如果內置監控項不能滿足監控需求,則可以通過system. run[command, ]監控項讓Zabbix agent運行想要的命令來獲取監控數據。
下面介紹Zabbix對于Linux和Windows的監控。
安裝Zabbix agent的過程就不贅述了,主要介紹一些關鍵的配置和功能。
操作系統相關監控項的選擇及優化
▊ Zabbix agent類型的監控項
在Zabbix官方手冊中,可以查看Zabbix agent類型的監控項鍵值說明,其中不僅列出了所有操作系統可使用的鍵值,還包括參數和注意事項等信息。對于Windows系統,官方還列出了其特有的監控項,如服務、性能計數器等。
同樣,手冊中也介紹了上述監控項對不同操作系統的使用情況,明確地指出了不同操作系統中可用及不可用的監控項。
▊ 監控系統主/被動模式的選擇及優化
建議使用Zabbix默認的操作系統模板監控相應的主機,但是需要一些優化來確保達到最好的監控效果,以及最大限度地減少Zabbix系統性能的開銷。
下面介紹Zabbix agent(active)和Zabbix agent監控項類型的區別。
前者又名主動模式監控項類型,后者為被動模式監控項類型。這里的主動和被動都是針對Zabbix agent來說的。主動模式監控項,顧名思義,就是Zabbix agent會主動上報監控數據給Zabbix server。而被動模式監控項就是指Zabbix server根據監控項的更新間隔向Zabbix agent拉取監控數據。兩者都有各自的適用范圍。
在小型環境中,當主機數量為200~500臺時,可以將大部分監控項設置為Zabbix agent(被動模式)類型的監控項,這樣,監控數據的更新時間不會受被監控對象的系統時間的影響,更新時間都是跟著Zabbix server走的。
在中大型環境中,建議將大部分監控項設置為Zabbix agent(active)(主動模式)類型的監控項,這樣,Zabbix agent會主動上報監控數據給Zabbix server,可以大大減小Zabbix系統的壓力。但主動模式監控項的監控數據會受到操作系統的時間影響,當被監控對象的系統時間與Zabbix server的系統時間有偏差時,其含有nodata函數的觸發器就會產生誤告警。
下面以Linux模板Template OS Linux為例進行優化。
經過多年的實踐經驗,建議將agent ping、Host local time及所有自動發現的規則項(不是監控項原型里的)都設置為被動模式,這樣就不會受到系統時間的影響了。將自動發現的監控項設為被動模式,主要是由于間隔時間太長,導致納管主機的監控數據很久才出來,這個時候,被動模式的監控項就可以使用“check now”的功能了。
監控頻率:與主機性能指標有關的監控項,如CPU、內存等,建議將頻率調整為1次/分鐘;而一些信息指標監控項,如Host name、Version of zabbix_agent(d) running等,建議將頻率設置為1次/小時(或更長);對于模板中的自動發現監控項,如Mounted filesystem discovery、Network interface discovery等,也建議將頻率設置為1次/小時;對于一些容量指標監控項,如總內存、總文件系統大小等,也都建議將頻率設置為1次/小時。
關閉無用的觸發器:在默認的模板中,官方提供了很多觸發器,在實際使用中,用戶可以根據自身需求開啟/關閉。
▊ 告警抑制及觸發器中宏變量的巧用
Zabbix提供了很多觸發器函數,用戶可以通過使用這些函數靈活地制定告警規則。下面就簡單介紹一下常用在操作系統監控中的觸發器函數。
(1)告警抑制。
告警抑制在監控中起到了很大的作用,可以有效減少誤告警。但Zabbix沒有直接相關的告警抑制選項,可以通過幾個常用的觸發器函數來達到抑制告警的目的。
告警抑制需求舉例:如果CPU iowait連續5min都大于20%,則告警{Template OS Linux:system.cpu.util[,iowait].min(5m)}>20,表示5min內的最小值大于20%就告警,即只有5min內的數據都大于20%才告警。基本上所有的告警都可以用類似的方法進行抑制。
(2)宏變量。
Zabbix有一個特性,就是模板關聯主機之后,主機中繼承自模板的監控項和觸發器的配置很多都是不能改的,這就導致使用者很難定制化一些告警閾值。但Zabbix提供了宏變量來解決這一問題。下面同樣以CPU iowait監控項的觸發器舉例。
對于{Template OS Linux:system.cpu.util[,iowait].avg(5m)}>20,其中的20為固定的值,現在有一種場景:有20臺主機,都套用了Linux的模板,但其中兩臺主機需要將CPU iowait的閾值調整成10%,其他不變。此時如果設置成固定的20,那么對于特定機器的閾值調整很難做到。解決方案如下:將模板中的觸發器寫成{Template OS Linux:system.cpu. util[,iowait].avg(5m)}>{$CPUIOWAIT},然后在模板的“宏”選項卡中添加一個模板宏“{$CPUIOWAIT}”,值為“20”,如圖1所示。
這是模板宏,此時將那兩臺需要修改閾值的主機的宏改為10就可以了,因為在主機中,主機宏的優先級是高于模板宏的優先級的。
(3)LLD宏變量。
LLD的宏變量解決了在自動發現中單個監控項宏的問題。例如,有以下場景:一臺主機中有很多文件系統,整個文件系統的告警閾值宏變量為85%,此時,有一個文件系統/opt,它的閾值需要設置為95%。為了解決這個問題,Zabbix也提供了LLD宏變量,書寫方式為:
{host:vfs.fs.size[{#FSNAME},pfree].last()}<{$LOW_SPACE_LIMIT:"{#FSNAME}" }
此時,在主機宏中添加“{$LOW_SPACE_LIMIT:"/opt "}”,值為“95”就可以了,如圖2所示。
Linux
本節主要介紹Linux系統中CPU、內存、文件系統相關Zabbix監控指標的使用及優化。
1.CPU使用率
Zabbix默認的CPU使用率相關的監控項共有15個,但是沒有可以表示主機總體CPU使用率的監控項。可以通過創建可計算類型的監控項來監控總體的CPU使用率指標,計算邏輯為“100-system.cpu.util[,idle]”,意思是用100減去CPU的空閑值,可以比較準確地表示總體CPU的使用率。
2.內存使用率
Zabbix默認的內存鍵值vm.memory.size中有很多參數。
total:總物理內存。
free:可用內存。
active:RAM中當前或最近使用的內存。
inactive:未使用內存。
wired:被標記為始終駐留在RAM中的內存,不會移動到磁盤中。
pinned:和wired一樣。
anon:與文件無關的內存(不能重新讀取)。
exec:可執行代碼,通常來自一個(程序)文件。
file:緩存最近訪問文件的目錄。
buffers:緩存文件系統元數據。
cached:緩存。
shared:可以同時被多個進程訪問的內存。
used:active + wired 內存。
pused:active + wired 總內存的百分比。
available:inactive + cached + free memory內存。
pavailable:inactive + cached + free memory占total的百分比。
可以看到,available、pavailable是inactive + cached + free memory的可用內存,而used、pused則不是,更建議給pavailable參數的內存監控項設置告警閾值。
3.文件系統
默認模板中關于文件系統的監控項共有5個。
Free disk space on {#FSNAME}。
Free disk space on {#FSNAME} (percentage)。
Free inodes on {#FSNAME} (percentage)。
Total disk space on {#FSNAME}。
Used disk space on {#FSNAME}。
建議將文件系統的監控項改為3個,分別為總容量、已使用大小、已使用的百分比大小,這樣也可以減小Zabbix的壓力。
Windows
本節主要介紹Windows系統中服務、性能計數器、事件日志相關Zabbix監控指標的使用及優化。
1.Windows服務的自動發現
在大部分情況下,用戶不會去關心所有Windows系統的服務,但默認模板會將所有的服務都發現出來并添加告警。對此,建議將模板中的Windows service discovery關閉,當有主機需要監控服務時,在主機上開啟,并添加過濾條件來找到需要監控的服務,如圖3所示。
2.Windows性能計數器監控
Zabbix提供了一個很重要的且專屬于Windows的監控項鍵值perf_counter [counter, ],通過這個鍵值,就可以監控性能計數器中的數據了,如監控項Average disk read queue length的鍵值為perf_counter[\234(_Total)\1402]。具體使用方法在官方手冊中有介紹。
3.Windows event log
在Windows中有一個重要的組件,就是event log。Zabbix同樣提供了相應的專屬鍵值來監控它,即eventlog[name,,,, ,,]。可以看到,這個鍵值中有非常多的參數,可以很準確地監控用戶需要的日志。
打開Windows中的事件查看器,選擇一個事件,如圖4所示。
可以看到,鍵值中的參數在圖4中都有出現。
name:日志名稱。
< severity >: 級別
< source >:來源
< eventid >: 事件ID
需要注意的是,上述參數都需要填寫英文。
本文節選自《Zabbix監控系統之深度解析和實踐》一書,歡迎閱讀本書學習更多相關內容。
本書詳情
往期推薦
Zabbix版本兼容性
Zabbix命令詳解
2021 Zabbix全年在線課報名
Zabbix 學習資料申請 -百格活動
Zabbix
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。