You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
vince vince 7d5b08b7aa réorganise l'index 3 years ago
.gitignore réorganise l'index 3 years ago
LICENSE Initial commit 3 years ago
Makefile graphe dans le vhost 3 years ago
README.md complète un peu le README 3 years ago

README.md

cagull-rrdtools

Prérequis

Paquets Debian à installer :

  • sysstats
  • rrdtools

TL;DR

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.

Objectif

On cherche à mesurer les métriques de la machine virtuelle pour avoir une idée de ce qui s'y passe.

Quelles métriques ?

Ce serait bien de mesurer :

  • l'utilisation de la puissance du processeur et le load average
  • la consommation de mémoire
  • l'utilisation de l'espace disque
  • la consommation de bande passante (descendante et montante)

Quelle période ?

Ce serait bien d'avoir une vue par jour, par semaine, par mois et par an.

Comment mesurer ?

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.

Stocker les mesures

On utilise les RRDTools pour stocker et tracer les données.

Créer les bases

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é.

Notes

Pour vider les caches mémoire : echo 2 > /proc/sys/vm/drop_caches, cf la doc