Yaklaşımınız doğru. / Proc / stat öğesini ham veri olarak kullanabilir ve örneğin rrdtool ile besleyebilirsiniz. Kendime böyle bir şey yaptım, bu yüzden% 100 mümkün olduğunu biliyorum. Daha sonra tüm sistem yükünü veya her çekirdeği ayrı ayrı grafiklendirebilirsiniz.
İşte benim kendi çalışan bir örnek:
Güven verici -> Yapabilirsin, sadece temel matematik değil, grafiklerim de bunun canlı bir örneğidir. Veri toplamak için ramdisk üzerinde bulunan geçici bir dosyaya / proc / stat anlık görüntüsünü alıyorum ve sonra her 1 dakikada bir veri toplamak için bu dosyayı ayrıştırıyorum.
nasıl veri (bash komut dosyası parçası) ayrıştırmak:
cat=/bin/cat # others defined the same way
......
$cat /proc/stat > /ramdisk/tmp/stat
ssCpuRawUser=`$cat /ramdisk/tmp/stat|$grep "cpu " | $awk '{print $2}'`
ssCpuRawNice=`$cat /ramdisk/tmp/stat|$grep "cpu " | $awk '{print $3}'`
#other columns follow .......
#the most important there is that it is an incrementing COUNTER.
if [ ! -f ${data_dir}/sys.cpu.rrd ];then
$rrdtool create ${data_dir}/sys.cpu.rrd -s 60 \
DS:ssCpuRawUser:COUNTER:300:0:1250000 \
DS:ssCpuRawNice:COUNTER:300:0:1250000 \
DS:ssCpuRawSystem:COUNTER:300:0:1250000 \
DS:ssCpuRawIdle:COUNTER:300:0:1250000 \
DS:ssCpuRawIOwait:COUNTER:300:0:1250000 \
DS:ssCpuRawIRQ:COUNTER:300:0:1250000 \
DS:ssCpuRawSoftIRQ:COUNTER:300:0:1250000 \
RRA:AVERAGE:0.5:1:532800
fi
$rrdtool update ${data_dir}/sys.cpu.rrd N:$ssCpuRawUser:$ssCpuRawNice:$ssCpuRawSystem:$ssCpuRawIdle:$ssCpuRawIOwait:$ssCpuRawIRQ:$ssCpuRawSoftIRQ
# then in a loop each core the same way until all are parsed.
rrd veritabanına veri aldıktan sonra Grafik ve gökyüzü sınırıdır :) http://oss.oetiker.ch/rrdtool/doc/rrdgraph.en.html