如何使用 Bash 指令碼從 SAR 報告中獲取 CPU 和記憶體使用情況

2019-09-17 12:51:00

大多數 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/shecho "+----------------------------------------------------------------------------------+"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://"doneecho "+----------------------------------------------------------------------------------+"

執行指令碼後,你將看到如下輸出。

# 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.1008/02/2019        all      1.73      0.00      3.16      0.01      0.00     95.1008/03/2019        all      1.73      0.00      3.16      0.01      0.00     95.1108/04/2019        all      1.02      0.00      1.80      0.00      0.00     97.1808/05/2019        all      0.68      0.00      1.08      0.01      0.00     98.2408/06/2019        all      0.71      0.00      1.17      0.00      0.00     98.1208/07/2019        all      1.79      0.00      3.17      0.01      0.00     95.0308/08/2019        all      1.78      0.00      3.14      0.01      0.00     95.0808/09/2019        all      1.07      0.00      1.82      0.00      0.00     97.1008/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.1708/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/shecho "+-------------------------------------------------------------------------------------------------------------------+"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://"doneecho "+-------------------------------------------------------------------------------------------------------------------+"

執行指令碼後,你將看到如下輸出。

# 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         608/02/2019      1493126   2387666     61.53     29888   1147811   1569624     12.79   1696387    373346         308/03/2019      1489582   2391210     61.62     29888   1147076   1581711     12.89   1701480    370325         308/04/2019      1490403   2390389     61.60     29888   1148206   1569671     12.79   1697654    373484         408/05/2019      1484506   2396286     61.75     29888   1152409   1563804     12.75   1702424    374628         408/06/2019      1473593   2407199     62.03     29888   1151137   1577491     12.86   1715426    371000         808/07/2019      1467150   2413642     62.19     29888   1155639   1596653     13.01   1716900    372574        1308/08/2019      1451366   2429426     62.60     29888   1162253   1604672     13.08   1725931    376998         508/09/2019      1451191   2429601     62.61     29888   1158696   1582192     12.90   1728819    371025         408/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        1508/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/bashfor 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.sh08/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%