cpu相關參數的理解


簡介

  最近在線上跑的的業務,同事跟我說zabbix沒有告警,當時機器上cpu 占用很高,idle已經很低了,但是cpu確實沒有報警出來。然后我開始分析cpu的告警條件觸發器等,做下這次的總結分析過程。

首先我查看該機器上告警觸發條件,觸發器配置的是

{base_template:system.cpu.util[,user].count(#3,85,"ge")}>1 

  該觸發器表示用戶空間占用的百分比三次監測超過85%進行告警。然后我通過機器上的top命令查看該值都是多少

看了這圖之后我發現跟我的認知有些不一樣了,我之前的理解cpus 應該是各個進程占用的總和才對呢,實際上並不是這樣。

先看下這兩條的基礎含義:

Cpu(s):表示用戶空間占用CPU的百分比。

%CPU:表示上次更新到現在的CPU時間占用百分比。

在看下每個邏輯cpu核占用的百分比

   實際上Cpu(s) 表示所有用戶進程占用整個cpu的平均值,因為每一個核心占用的百分比不同,所以來看平均值。

  %CPU顯示的是進程占用一個核的百分比,而不是整個cpu(16核)的百分比,有時候可能大於100,那是因為該進程啟用了多線程占用了多個核心,所以有時候我們看該值得時候會超過100%,但不會超過總核數*100。

  這樣來看的話,監控的觸發器確實就不會被觸發了,為了能監控實際的數據進行告警,所以監控的策略觸發器需要調整下,將之前的觸發器上在添加一個或的條件進行觸發

{base_template:system.cpu.util[,idle].avg(1m)}<15

  就是判斷空閑的百分比,當空閑小於15%即使用超過85%進行告警通知。

 

 

ps:cpu壓測觸發小事例

先用一個小一點的數字測試,觀察圖形之后再逐步加大

echo "scale=500; 4*a(1)" | bc -l -q
該命令是計算圓周率后面的500位

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM