|
|
- # 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](https://www.kernel.org/doc/html/latest/admin-guide/sysctl/vm.html#drop-caches)
|