私たちは皆、平均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
これを行うには、追加のソフトウェアをインストールする必要があります。使用できますsar
(参照https://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をさらに処理できます。
「ここで何が起こっているのでしょうか?」をすばやく理解するには、グラフィック表現が必要な場合があります。残念ながら、私はGNUplotのパイプラインアウト(またはgrafanaに供給...)などを使用して有用なものを作成する方法がわかりません。sar
まあ、それは私を幸せにします:-)
データファイルの生成...
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
。
モニタリングシステム(check_mkなど)があれば、必要な記録を取得する方がはるかに簡単になります。