mirror of
https://github.com/LCTT/TranslateProject.git
synced 2024-12-23 21:20:42 +08:00
233 lines
8.6 KiB
Markdown
233 lines
8.6 KiB
Markdown
|
[#]: collector: (lujun9972)
|
||
|
[#]: translator: ( )
|
||
|
[#]: reviewer: ( )
|
||
|
[#]: publisher: ( )
|
||
|
[#]: url: ( )
|
||
|
[#]: subject: (How to Get Average CPU and Memory Usage from SAR Reports Using the Bash Script)
|
||
|
[#]: via: (https://www.2daygeek.com/linux-get-average-cpu-memory-utilization-from-sar-data-report/)
|
||
|
[#]: author: (Magesh Maruthamuthu https://www.2daygeek.com/author/magesh/)
|
||
|
|
||
|
How to Get Average CPU and Memory Usage from SAR Reports Using the Bash Script
|
||
|
======
|
||
|
|
||
|
Most Linux administrator monitor system performance with **[SAR report][1]** because it collect performance data for a week.
|
||
|
|
||
|
But you can easily extend this to four weeks by making changes to the “/etc/sysconfig/sysstat” file.
|
||
|
|
||
|
Also, this period can be extended beyond one month. If the value exceeds 28, the log files are placed in multiple directories, one for each month.
|
||
|
|
||
|
To extend the coverage period to 28 days, make the following change to the “/etc/sysconfig/sysstat” file.
|
||
|
|
||
|
Edit the sysstat file and change HISTORY=7 to HISTORY=28.
|
||
|
|
||
|
In this article we have added three bash scripts that will help you to easily view each data file averages in one place.
|
||
|
|
||
|
We have added many useful shell scripts in the past. If you want to check out that collection, go to the link below.
|
||
|
|
||
|
* **[How to automate daily operations using shell script][2]**
|
||
|
|
||
|
|
||
|
|
||
|
These scripts are simple and straightforward. For testing purposes, we have included only two performance metrics, namely CPU and memory.
|
||
|
|
||
|
You can modify other performance metrics in the script to suit your needs.
|
||
|
|
||
|
### Script-1: Bash Script to Get Average CPU Utilization from SAR Reports
|
||
|
|
||
|
This bash script collects the CPU average from each data file and display it on one page.
|
||
|
|
||
|
Since this is a month end, it shows 28 days data for August 2019.
|
||
|
|
||
|
```
|
||
|
# 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 "+----------------------------------------------------------------------------------+"
|
||
|
```
|
||
|
|
||
|
Once you run the script, you will get an output like the one below.
|
||
|
|
||
|
```
|
||
|
# 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
|
||
|
+----------------------------------------------------------------------------------+
|
||
|
```
|
||
|
|
||
|
### Script-2: Bash Script to Get Average Memory Utilization from SAR Reports
|
||
|
|
||
|
This bash script will collect memory averages from each data file and display it on one page.
|
||
|
|
||
|
Since this is a month end, it shows 28 days data for August 2019.
|
||
|
|
||
|
```
|
||
|
# 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 "+-------------------------------------------------------------------------------------------------------------------+"
|
||
|
```
|
||
|
|
||
|
Once you run the script, you will get an output like the one below.
|
||
|
|
||
|
```
|
||
|
# 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
|
||
|
+-------------------------------------------------------------------------------------------------------------------+
|
||
|
```
|
||
|
|
||
|
### Script-3: Bash Script to Get Average CPU & Memory Utilization from SAR Reports
|
||
|
|
||
|
This bash script collects the CPU & memory averages from each data file and displays them on a page.
|
||
|
|
||
|
This bash script is slightly different compared to the above script. It shows the average of both (CPU & Memory) in one location, not the other data.
|
||
|
|
||
|
```
|
||
|
# 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
|
||
|
```
|
||
|
|
||
|
Once you run the script, you will get an output like the one below.
|
||
|
|
||
|
```
|
||
|
# 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][a]
|
||
|
选题:[lujun9972][b]
|
||
|
译者:[译者ID](https://github.com/译者ID)
|
||
|
校对:[校对者ID](https://github.com/校对者ID)
|
||
|
|
||
|
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||
|
|
||
|
[a]: https://www.2daygeek.com/author/magesh/
|
||
|
[b]: https://github.com/lujun9972
|
||
|
[1]: https://www.2daygeek.com/sar-system-performance-monitoring-command-tool-linux/
|
||
|
[2]: https://www.2daygeek.com/category/shell-script/
|