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.

143 lines
4.5 KiB

2 years ago
  1. # cagull-rrdtools
  2. ## Prérequis
  3. Paquets Debian à installer :
  4. * `sysstats`
  5. * `rrdtools`
  6. ## TL;DR
  7. ```
  8. while true; do make update graph; sleep 60; done
  9. ```
  10. Toutes les minutes ça va produire les images des graphes.
  11. Certes à terme l'update sera appellé par cron et le graph idéalement à la demande.
  12. ## Objectif
  13. On cherche à mesurer les métriques de la machine virtuelle pour avoir une idée de ce qui s'y passe.
  14. ## Quelles métriques ?
  15. Ce serait bien de mesurer :
  16. * l'utilisation de la puissance du processeur et le load average
  17. * la consommation de mémoire
  18. * l'utilisation de l'espace disque
  19. * la consommation de bande passante (descendante et montante)
  20. ## Quelle période ?
  21. Ce serait bien d'avoir une vue par jour, par semaine, par mois et par an.
  22. ## Comment mesurer ?
  23. On pourrait utiliser `sysstat` dont cest le boulot de remonter des statistiques
  24. sur l'utilisation des ressources et est livré par défaut sur la machine
  25. virtuelle. Le paquet existe dans Debian.
  26. Pour le mettre en place il faut veiller à ce que `ENABLED="true"` soit présent
  27. dans `/etc/sysstat/sysstat`. Pour prendre un changement de configuration en
  28. compte ne pas oublier de redémarrer le service correspondant avec `systemctl
  29. restart sysstat` en tant que `root`.
  30. Dès lors on peut obtenir des mesures avec la commande `sar`.
  31. Par exemple :
  32. ```
  33. # sar -u ALL 0 -1
  34. Linux 5.10.0-10-amd64 (ldlc) 09/01/2022 _x86_64_ (4 CPU)
  35. 18:42:18 CPU %usr %nice %sys %iowait %steal %irq %soft %guest %gnice %idle
  36. 18:42:18 all 3,57 0,02 1,27 0,06 0,00 0,00 0,03 0,00 0,00 95,05
  37. ```
  38. Pour voir la consommation de CPU, mais on peut éggalement obtenir le *load
  39. average* avec `-q LOAD`, la consommation de mémoire avec `-r ALL`, la
  40. consommation de disque avec `-F MOUNT` (attention il peut y avoir autant de
  41. lignes que de systèmes de fichiers montés) et on ne trouve pas ce que l'on
  42. cherche pour le réseau.
  43. On se replira sur la solution traditionnelle l'ancienne :
  44. ```
  45. # cat /proc/net/dev
  46. Inter-| Receive | Transmit
  47. face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
  48. lo: 863221523 11015143 0 0 0 0 0 0 863221523 11015143 0 0 0 0 0 0
  49. eth0: 471552305 1062734 0 4 0 0 0 0 38744992 102635 0 0 0 0 0 0
  50. docker0: 5243766 2526 0 0 0 0 0 0 367641 3211 0 0 0 0 0 0
  51. veth3cae73a: 4008409 1953 0 0 0 0 0 0 287234 2526 0 0 0 0 0 0
  52. ```
  53. On a donc toutes les données de mesure que l'on voulait.
  54. ## Stocker les mesures
  55. On utilise les RRDTools pour stocker et tracer les données.
  56. ### Créer les bases
  57. cpu
  58. load
  59. mem
  60. fs
  61. net
  62. ```
  63. rrdtool create cpu.rrd --start $(date +%s) --step 60 --no-overwrite \
  64. DS:user:GAUGE:120:0:100 \
  65. DS:nice:GAUGE:120:0:100 \
  66. DS:sys:GAUGE:120:0:100 \
  67. DS:iowait:GAUGE:120:0:100 \
  68. DS:steal:GAUGE:120:0:100 \
  69. DS:irq:GAUGE:120:0:100 \
  70. DS:soft:GAUGE:120:0:100 \
  71. DS:guest:GAUGE:120:0:100 \
  72. DS:gnice:GAUGE:120:0:100 \
  73. DS:idle:GAUGE:120:0:100 \
  74. RRA:LAST:0.5:1:1440 \
  75. RRA:AVERAGE:0.5:420:1440 \
  76. RRA:AVERAGE:0.5:1860:1440 \
  77. RRA:AVERAGE:0.5:21900:1440
  78. ```
  79. ```
  80. 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 ' ' ':');
  81. ```
  82. Dans un `while true; do …; sleep 60; done`
  83. ```
  84. rrdtool graph cpu-daily.svg --imgformat SVG --end now --start end-86400s \
  85. DEF:user=cpu.rrd:user:AVERAGE \
  86. DEF:nice=cpu.rrd:nice:AVERAGE \
  87. DEF:sys=cpu.rrd:sys:AVERAGE \
  88. DEF:iowait=cpu.rrd:iowait:AVERAGE \
  89. DEF:steal=cpu.rrd:steal:AVERAGE \
  90. DEF:irq=cpu.rrd:irq:AVERAGE \
  91. DEF:soft=cpu.rrd:soft:AVERAGE \
  92. DEF:guest=cpu.rrd:guest:AVERAGE \
  93. DEF:gnice=cpu.rrd:gnice:AVERAGE \
  94. DEF:idle=cpu.rrd:idle:AVERAGE \
  95. AREA:user#FF0000:user:STACK \
  96. AREA:nice#FF1111:nice:STACK \
  97. AREA:sys#FF2222:sys:STACK \
  98. AREA:iowait#FF3333:iowait:STACK \
  99. AREA:steal#FF4444:steal:STACK \
  100. AREA:irq#FF5555:irq:STACK \
  101. AREA:soft#FF6666:soft:STACK \
  102. AREA:guest#FF7777:guest:STACK \
  103. AREA:gnice#FF8888:gnice:STACK \
  104. AREA:idle#00FF00:idle:STACK
  105. ```
  106. Il faudra trouver des jolies couleurs. Et éviter le blanc parce qu'il n'est pas tracé.
  107. ## Notes
  108. Pour vider les caches mémoire : `echo 2 > /proc/sys/vm/drop_caches`, cf [la
  109. doc](https://www.kernel.org/doc/html/latest/admin-guide/sysctl/vm.html#drop-caches)