如何使用 Bash 指令碼從 SAR 報告中獲取 CPU 和記憶體使用情況
大多數 Linux 管理員使用 SAR 報告監控系統效能,因為它會收集一週的效能資料。但是,你可以通過更改 /etc/sysconfig/sysstat
檔案輕鬆地將其延長到四周。同樣,這段時間可以延長一個月以上。如果超過 28,那麼日誌檔案將放在多個目錄中,每月一個。
要將覆蓋期延長至 28 天,請對 /etc/sysconfig/sysstat
檔案做以下更改。
編輯 sysstat
檔案並將 HISTORY=7
更改為 HISTORY=28
。
在本文中,我們新增了三個 bash 指令碼,它們可以幫助你在一個地方輕鬆檢視每個資料檔案的平均值。
我們過去加過許多有用的 shell 指令碼。如果你想檢視它們,請進入下面的連結。
這些指令碼簡單明瞭。出於測試目的,我們僅包括兩個效能指標,即 CPU 和記憶體。你可以修改指令碼中的其他效能指標以滿足你的需求。
指令碼 1:從 SAR 報告中獲取平均 CPU 利用率的 Bash 指令碼
該 bash 指令碼從每個資料檔案中收集 CPU 平均值並將其顯示在一個頁面上。
由於是月末,它顯示了 2019 年 8 月的 28 天資料。
# vi /opt/scripts/sar-cpu-avg.sh
#!/bin/sh
echo "+----------------------------------------------------------------------------------+"
echo "|Average: CPU %user %nice %system %iowait %steal %idle |"
echo "+----------------------------------------------------------------------------------+"
for file in `ls -tr /var/log/sa/sa* | grep -v sar`
do
dat=`sar -f $file | head -n 1 | awk '{print $4}'`
echo -n $dat
sar -f $file | grep -i Average | sed "s/Average://"
done
echo "+----------------------------------------------------------------------------------+"
執行指令碼後,你將看到如下輸出。
# sh /opt/scripts/sar-cpu-avg.sh
+----------------------------------------------------------------------------------+
|Average: CPU %user %nice %system %iowait %steal %idle |
+----------------------------------------------------------------------------------+
08/01/2019 all 0.70 0.00 1.19 0.00 0.00 98.10
08/02/2019 all 1.73 0.00 3.16 0.01 0.00 95.10
08/03/2019 all 1.73 0.00 3.16 0.01 0.00 95.11
08/04/2019 all 1.02 0.00 1.80 0.00 0.00 97.18
08/05/2019 all 0.68 0.00 1.08 0.01 0.00 98.24
08/06/2019 all 0.71 0.00 1.17 0.00 0.00 98.12
08/07/2019 all 1.79 0.00 3.17 0.01 0.00 95.03
08/08/2019 all 1.78 0.00 3.14 0.01 0.00 95.08
08/09/2019 all 1.07 0.00 1.82 0.00 0.00 97.10
08/10/2019 all 0.38 0.00 0.50 0.00 0.00 99.12
.
.
.
08/29/2019 all 1.50 0.00 2.33 0.00 0.00 96.17
08/30/2019 all 2.32 0.00 3.47 0.01 0.00 94.20
+----------------------------------------------------------------------------------+
指令碼 2:從 SAR 報告中獲取平均記憶體利用率的 Bash 指令碼
該 bash 指令碼從每個資料檔案中收集記憶體平均值並將其顯示在一個頁面上。
由於是月末,它顯示了 2019 年 8 月的 28 天資料。
# vi /opt/scripts/sar-memory-avg.sh
#!/bin/sh
echo "+-------------------------------------------------------------------------------------------------------------------+"
echo "|Average: kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty |"
echo "+-------------------------------------------------------------------------------------------------------------------+"
for file in `ls -tr /var/log/sa/sa* | grep -v sar`
do
dat=`sar -f $file | head -n 1 | awk '{print $4}'`
echo -n $dat
sar -r -f $file | grep -i Average | sed "s/Average://"
done
echo "+-------------------------------------------------------------------------------------------------------------------+"
執行指令碼後,你將看到如下輸出。
# sh /opt/scripts/sar-memory-avg.sh
+--------------------------------------------------------------------------------------------------------------------+
|Average: kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty |
+--------------------------------------------------------------------------------------------------------------------+
08/01/2019 1492331 2388461 61.55 29888 1152142 1560615 12.72 1693031 380472 6
08/02/2019 1493126 2387666 61.53 29888 1147811 1569624 12.79 1696387 373346 3
08/03/2019 1489582 2391210 61.62 29888 1147076 1581711 12.89 1701480 370325 3
08/04/2019 1490403 2390389 61.60 29888 1148206 1569671 12.79 1697654 373484 4
08/05/2019 1484506 2396286 61.75 29888 1152409 1563804 12.75 1702424 374628 4
08/06/2019 1473593 2407199 62.03 29888 1151137 1577491 12.86 1715426 371000 8
08/07/2019 1467150 2413642 62.19 29888 1155639 1596653 13.01 1716900 372574 13
08/08/2019 1451366 2429426 62.60 29888 1162253 1604672 13.08 1725931 376998 5
08/09/2019 1451191 2429601 62.61 29888 1158696 1582192 12.90 1728819 371025 4
08/10/2019 1450050 2430742 62.64 29888 1160916 1579888 12.88 1729975 370844 5
.
.
.
08/29/2019 1365699 2515093 64.81 29888 1198832 1593567 12.99 1781733 376157 15
08/30/2019 1361920 2518872 64.91 29888 1200785 1595105 13.00 1784556 375641 8
+-------------------------------------------------------------------------------------------------------------------+
指令碼 3:從 SAR 報告中獲取 CPU 和記憶體平均利用率的 Bash 指令碼
該 bash 指令碼從每個資料檔案中收集 CPU 和記憶體平均值並將其顯示在一個頁面上。
該指令碼與上面相比稍微不同。它在同一位置同時顯示兩者(CPU 和記憶體)平均值,而不是其他資料。
# vi /opt/scripts/sar-cpu-mem-avg.sh
#!/bin/bash
for file in `ls -tr /var/log/sa/sa* | grep -v sar`
do
sar -f $file | head -n 1 | awk '{print $4}'
echo "-----------"
sar -u -f $file | awk '/Average:/{printf("CPU Average: %.2f%\n"), 100 - $8}'
sar -r -f $file | awk '/Average:/{printf("Memory Average: %.2f%\n"),(($3-$5-$6)/($2+$3)) * 100 }'
printf "\n"
done
執行指令碼後,你將看到如下輸出。
# sh /opt/scripts/sar-cpu-mem-avg.sh
08/01/2019
-----------
CPU Average: 1.90%
Memory Average: 31.09%
08/02/2019
-----------
CPU Average: 4.90%
Memory Average: 31.18%
08/03/2019
-----------
CPU Average: 4.89%
Memory Average: 31.29%
08/04/2019
-----------
CPU Average: 2.82%
Memory Average: 31.24%
08/05/2019
-----------
CPU Average: 1.76%
Memory Average: 31.28%
.
.
.
08/29/2019
-----------
CPU Average: 3.83%
Memory Average: 33.15%
08/30/2019
-----------
CPU Average: 5.80%
Memory Average: 33.19%
via: https://www.2daygeek.com/linux-get-average-cpu-memory-utilization-from-sar-data-report/
作者:Magesh Maruthamuthu 選題:lujun9972 譯者:geekpi 校對:wxy
訂閱“Linux 中國”官方小程式來檢視
相關文章
- PowerShell 指令碼來監控 CPU、記憶體和磁碟使用情況:指令碼記憶體
- 用 Bash 指令碼監控 Linux 上的記憶體使用情況指令碼Linux記憶體
- 在Linux中,如何檢查系統的CPU和記憶體使用情況?Linux記憶體
- 如何用bash shell 指令碼監控 Linux記憶體、磁碟和 CPU?指令碼Linux記憶體
- 利用Bash指令碼監控Linux伺服器的記憶體使用情況的相關資料指令碼Linux伺服器記憶體
- 監控 Python 記憶體使用情況和程式碼執行時間!Python記憶體
- Redis 記憶體突增時,如何定量分析其記憶體使用情況Redis記憶體
- 使用 vmstat 命令確定記憶體使用情況記憶體
- java程式碼實現檢視Tomcat記憶體使用情況JavaTomcat記憶體
- Linux效能優化:記憶體使用情況分析Linux優化記憶體
- 檢查 Linux 中記憶體使用情況的 8 條命令Linux記憶體
- 使用 top 命令瞭解 Fedora 的記憶體使用情況記憶體
- 使用show engine innodb status 檢視記憶體使用情況記憶體
- CPU快取和記憶體屏障快取記憶體
- Linux 檢視記憶體使用情況的幾種方法Linux記憶體
- Linux中顯示記憶體和CPU使用率最高的程式的SHELL指令碼例子Linux記憶體指令碼
- 檢視 Linux 系統中程序和使用者的記憶體使用情況Linux記憶體
- 檢視LINUX程式記憶體佔用情況Linux記憶體
- CPU快取記憶體快取記憶體
- Linux檢視伺服器記憶體使用情況的命令Linux伺服器記憶體
- 如何獲取EMMC記憶體大小記憶體
- comScore:COVID-19期間媒體使用情況報告
- 查詢表空間使用情況的指令碼指令碼
- obukhov/redis-inventory: 分析redis記憶體使用情況的CLI工具Redis記憶體
- CPU和記憶體如何互動的記憶體
- 談談CPU快取記憶體快取記憶體
- Linux系統下分析記憶體使用情況的管理工具Linux記憶體
- 總結Linux下檢視記憶體使用情況的多種方法Linux記憶體
- Winrm 獲取遠端windows伺服器 cpu、磁碟、記憶體Windows伺服器記憶體
- 多核cpu、cpu快取記憶體、快取一致性協議、快取行、記憶體快取記憶體協議
- IQVIA:2022年全球藥物使用情況報告
- 監控JVM記憶體使用情況,剩餘空間小於2M時報警JVM記憶體
- 如何使用 Docker 來限制 CPU、記憶體和 IO等資源?Docker記憶體
- Linux上執行記憶體中的指令碼和程式Linux記憶體指令碼
- Linux從頭學03:如何告訴 CPU,程式碼段、資料段、棧段在記憶體中什麼位置?Linux記憶體
- PHP 獲取程式碼執行時間和消耗的記憶體PHP記憶體
- 用於自動監控磁碟使用情況的 Shell 指令碼指令碼
- 如何在 Bash 指令碼中使用單行和多行註釋指令碼