vince vince c2e91bcd14 | 3 years ago | |
---|---|---|
.gitignore | 3 years ago | |
LICENSE | 3 years ago | |
Makefile | 3 years ago | |
README.md | 3 years ago |
Paquets Debian à installer :
sysstats
rrdtools
while true; do make update graph; sleep 60; done
Toutes les minutes ça va produire les images des graphes.
Certes à terme l'update sera appellé par cron et le graph idéalement à la demande.
On cherche à mesurer les métriques de la machine virtuelle pour avoir une idée de ce qui s'y passe.
Ce serait bien de mesurer :
Ce serait bien d'avoir une vue par jour, par semaine, par mois et par an.
On pourrait utiliser sysstat
dont cest le boulot de remonter des statistiques
sur l'utilisation des ressources et est livré par défaut sur la machine
virtuelle. Le paquet existe dans Debian.
Pour le mettre en place il faut veiller à ce que ENABLED="true"
soit présent
dans /etc/sysstat/sysstat
. Pour prendre un changement de configuration en
compte ne pas oublier de redémarrer le service correspondant avec systemctl restart sysstat
en tant que root
.
Dès lors on peut obtenir des mesures avec la commande sar
.
Par exemple :
# sar -u ALL 0 -1
Linux 5.10.0-10-amd64 (ldlc) 09/01/2022 _x86_64_ (4 CPU)
18:42:18 CPU %usr %nice %sys %iowait %steal %irq %soft %guest %gnice %idle
18:42:18 all 3,57 0,02 1,27 0,06 0,00 0,00 0,03 0,00 0,00 95,05
Pour voir la consommation de CPU, mais on peut éggalement obtenir le load
average avec -q LOAD
, la consommation de mémoire avec -r ALL
, la
consommation de disque avec -F MOUNT
(attention il peut y avoir autant de
lignes que de systèmes de fichiers montés) et on ne trouve pas ce que l'on
cherche pour le réseau.
On se replira sur la solution traditionnelle l'ancienne :
# cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 863221523 11015143 0 0 0 0 0 0 863221523 11015143 0 0 0 0 0 0
eth0: 471552305 1062734 0 4 0 0 0 0 38744992 102635 0 0 0 0 0 0
docker0: 5243766 2526 0 0 0 0 0 0 367641 3211 0 0 0 0 0 0
veth3cae73a: 4008409 1953 0 0 0 0 0 0 287234 2526 0 0 0 0 0 0
On a donc toutes les données de mesure que l'on voulait.
On utilise les RRDTools pour stocker et tracer les données.
cpu load mem fs net
rrdtool create cpu.rrd --start $(date +%s) --step 60 --no-overwrite \
DS:user:GAUGE:120:0:100 \
DS:nice:GAUGE:120:0:100 \
DS:sys:GAUGE:120:0:100 \
DS:iowait:GAUGE:120:0:100 \
DS:steal:GAUGE:120:0:100 \
DS:irq:GAUGE:120:0:100 \
DS:soft:GAUGE:120:0:100 \
DS:guest:GAUGE:120:0:100 \
DS:gnice:GAUGE:120:0:100 \
DS:idle:GAUGE:120:0:100 \
RRA:LAST:0.5:1:1440 \
RRA:AVERAGE:0.5:420:1440 \
RRA:AVERAGE:0.5:1860:1440 \
RRA:AVERAGE:0.5:21900:1440
rrdtool update cpu.rrd $(date +%s):$(LANG=C sar -u ALL 0 -1 |tail -n1 |awk '{print $3,$4,$5,$6,$7,$8,$9,$10,$11,$12}' |tr ' ' ':');
Dans un while true; do …; sleep 60; done
rrdtool graph cpu-daily.svg --imgformat SVG --end now --start end-86400s \
DEF:user=cpu.rrd:user:AVERAGE \
DEF:nice=cpu.rrd:nice:AVERAGE \
DEF:sys=cpu.rrd:sys:AVERAGE \
DEF:iowait=cpu.rrd:iowait:AVERAGE \
DEF:steal=cpu.rrd:steal:AVERAGE \
DEF:irq=cpu.rrd:irq:AVERAGE \
DEF:soft=cpu.rrd:soft:AVERAGE \
DEF:guest=cpu.rrd:guest:AVERAGE \
DEF:gnice=cpu.rrd:gnice:AVERAGE \
DEF:idle=cpu.rrd:idle:AVERAGE \
AREA:user#FF0000:user:STACK \
AREA:nice#FF1111:nice:STACK \
AREA:sys#FF2222:sys:STACK \
AREA:iowait#FF3333:iowait:STACK \
AREA:steal#FF4444:steal:STACK \
AREA:irq#FF5555:irq:STACK \
AREA:soft#FF6666:soft:STACK \
AREA:guest#FF7777:guest:STACK \
AREA:gnice#FF8888:gnice:STACK \
AREA:idle#00FF00:idle:STACK
Il faudra trouver des jolies couleurs. Et éviter le blanc parce qu'il n'est pas tracé.
Pour vider les caches mémoire : echo 2 > /proc/sys/vm/drop_caches
, cf la
doc