web-dev-qa-db-ja.com

CPU負荷平均+ X時間の履歴のCPU負荷平均を取得する方法

次のように平均CPU負荷を取得できることは誰でも知っています。

 uptime
 10:09:22 up 2 days,  1:44,  1 user,  load average: 20.01, 20.03, 22.05

しかし、これは

load average over the last 1 minute is 22.05
load average over the last 5 minute is 20.03
load average over the last 15 minute is 20.01

過去X時間の負荷平均のリストが必要です。過去X時間の平均CPU負荷の履歴を表示できるLinux(RHELを使用しています)コマンドはありますか?

1
yael

そのためには、追加のソフトウェアをインストールする必要があります。 sarhttps://linux.die.net/man/1/sar を参照)または任意の監視システムを使用できます。

sar -qは、負荷の平均を報告します(特に...)

$ sar -q 1 5
Linux 4.9.0-9-AMD64 (sds-ulm-edv-553-workstation)   09/10/2019  _x86_64_    (2 CPU)

02:04:43 PM   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15   blocked
02:04:44 PM         0       158      0.00      0.02      0.10         0
02:04:45 PM         0       158      0.00      0.02      0.10         0
02:04:46 PM         0       158      0.00      0.02      0.10         0
02:04:47 PM         0       158      0.00      0.02      0.10         0
02:04:48 PM         0       158      0.00      0.02      0.10         0
Average:            0       158      0.00      0.02      0.10         0

最後の行Average:はおそらくここで興味深いですか?

あなたはそれにファイルを与えることができます:sar -q -f /var/log/sa/fileofyourchoiceそして、出力の列4-6をさらに処理します。

「ここで何が起こったのか」の簡単な概要を取得するには、おそらくグラフィカルな表現が必要になります。 残念ながら、私はsar- outoutをどのようにしてGNUplot(またはそれをgrafanaに渡すか)などにパイプして、何か有用なものを生成するのかわかりません。

さて、これは私をくすぐった:-)

データファイルを作成...

LANG=C sar -q 1 250 | grep ':' | awk '{ print $1,$4,$5,$6 }' | sed '1d;$d' > datafile.txt

最大値を見つける:

$ datamash -t ' ' max 2 max 3 max 4 < datafile.txt 
2.53 1.55 1.1
$ head -1 datafile.txt | cut -d' ' -f1
20:20:53
$ tail -1 datafile.txt | cut -d' ' -f1
20:25:02

次に、ファイルplottingを作成します。ここで、xrangeおよびyrangeの値が必要になります。

$ cat plotting 
set title "Load over time"
set xdata time
set style data lines
set term png
set timefmt "%H:%M:%S"
set format x "%H:%M:%S"
set xlabel "Time"
set ylabel "Load"
set autoscale y
set xrange ['20:20:53':'20:25:02']
set yrange ['-0.01':'2.6']
set xtics rotate
set output "load_over_time.png"
plot "datafile.txt" using 1:2 t "loadavg-1" w lines, "datafile.txt" using 1:3 t "loadavg-5" w lines, "datafile.txt" using 1:4 t "loadavg-15" w lines

これで、$ gnuplot < plotting `を使用してグラフィックを生成できます

そして今、あなたはload_over_time.pngにグラフを持っています:

enter image description here

監視システム(check_mkなど)を使用している場合、必要な履歴を取得するのははるかに簡単です。

3
markgraf