CPU 로드 평균 + X시간 동안의 CPU 로드 평균을 구하는 방법

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

이를 위해서는 추가 소프트웨어를 설치해야 합니다. 당신은 사용할 수 있습니다 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합계가 필요한 파일을 만듭니다 .xrangeyrange

$ 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)이 있으면 필요한 기록을 얻는 것이 훨씬 쉬울 것입니다.

관련 정보