Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
app:rrdtool:ping-graph [2016/10/03 11:52] – yoann | app:rrdtool:ping-graph [2021/02/01 21:51] (Version actuelle) – modification externe 127.0.0.1 | ||
---|---|---|---|
Ligne 84: | Ligne 84: | ||
<code bash> | <code bash> | ||
+ | #!/bin/bash | ||
+ | # Définition des chemins | ||
+ | command="/ | ||
+ | gawk="/ | ||
+ | rrdtool="/ | ||
+ | ping_target=" | ||
+ | |||
+ | ### Data collector routine | ||
+ | get_data() { | ||
+ | local output=$( $command $1 2>& | ||
+ | local method=$( echo " | ||
+ | BEGIN {pl=100; rtt=0.1} | ||
+ | /packets transmitted/ | ||
+ | match($0, /([0-9]+)% packet loss/, datapl) | ||
+ | pl=datapl[1] | ||
+ | } | ||
+ | / | ||
+ | match($4, / | ||
+ | rtt=datartt[2] | ||
+ | } | ||
+ | END {print pl ":" | ||
+ | ') | ||
+ | RETURN_DATA=$method | ||
+ | } | ||
+ | |||
+ | ### script directory | ||
+ | cd / | ||
+ | |||
+ | ### Collect the data | ||
+ | get_data $ping_target | ||
+ | #echo $RETURN_DATA | ||
+ | ### update the database | ||
+ | $rrdtool update pingdb.rrd --template pl:rtt N: | ||
</ | </ | ||
Ligne 93: | Ligne 126: | ||
Avant d' | Avant d' | ||
</ | </ | ||
- | ===== Etape 3/3 Construction du graphique ===== | + | |
+ | ==== Création du job cron ==== | ||
+ | |||
+ | La meilleure façon de collecter les données est d’exécuter un job cron toutes les minutes | ||
+ | |||
+ | <code bash> | ||
+ | crontab -e | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | * | ||
+ | </ | ||
+ | |||
+ | ===== Étape | ||
+ | |||
+ | Après quelques minutes les premières insertions ont eu lieu, on peut tracer le graphique. Pour voir rapidement l’état de la base: | ||
+ | |||
+ | <code bash> | ||
+ | rrdtool info ./ | ||
+ | </ | ||
+ | |||
+ | Dans les valeurs retournées on notera notamment, le timestamp de la dernière mise à jour que l'on peut convertir en une chaîne date lisible via **date**, les dernières valeurs enregistrées pour nos variables: | ||
+ | |||
+ | < | ||
+ | filename = " | ||
+ | rrd_version = " | ||
+ | step = 60 | ||
+ | last_update = 1475582403 | ||
+ | |||
+ | ... | ||
+ | |||
+ | ds[pl].last_ds = " | ||
+ | |||
+ | ... | ||
+ | |||
+ | ds[rtt].last_ds = " | ||
+ | </ | ||
+ | |||
+ | Pour tracer le graphique, le script ci-dessous est utilisé: | ||
+ | |||
+ | <file bash mk_graph_daily.sh> | ||
+ | # | ||
+ | # | ||
+ | ## change directory to the rrdtool script dir | ||
+ | #cd / | ||
+ | ## Graph for last 24 hours | ||
+ | / | ||
+ | -w 785 -h 120 -a PNG \ | ||
+ | --slope-mode \ | ||
+ | --start -86400 --end now \ | ||
+ | --font DEFAULT:7: \ | ||
+ | --title "ping default gateway" | ||
+ | --watermark " | ||
+ | --vertical-label " | ||
+ | --right-axis-label " | ||
+ | --lower-limit 0 \ | ||
+ | --right-axis 1:0 \ | ||
+ | --x-grid MINUTE: | ||
+ | --alt-y-grid --rigid \ | ||
+ | DEF: | ||
+ | DEF: | ||
+ | CDEF: | ||
+ | CDEF: | ||
+ | CDEF: | ||
+ | CDEF: | ||
+ | CDEF: | ||
+ | LINE1: | ||
+ | GPRINT: | ||
+ | GPRINT: | ||
+ | GPRINT: | ||
+ | GPRINT: | ||
+ | COMMENT:" | ||
+ | AREA: | ||
+ | AREA: | ||
+ | AREA: | ||
+ | AREA: | ||
+ | AREA: | ||
+ | |||
+ | ## copy to the web directory | ||
+ | #cp latency_graph.png / | ||
+ | </ | ||
+ | |||
+ | ==== Détail des directives ==== | ||
+ | |||
+ | < | ||
+ | / | ||
+ | </ | ||
+ | |||
+ | Invoque rrdtool est demande la création d'un graphique nommé latency_graph.png dans le répertoire courant. | ||
+ | |||
+ | < | ||
+ | -w 785 -h 120 -a PNG \ | ||
+ | </ | ||
+ | |||
+ | Graphique de 785 pixels de large pour 120 de haut. Image au format PNG. Les dimensions (hauteur et largeur) concernent le graphique ce ne sont pas celles de l' | ||
+ | |||
+ | < | ||
+ | --slope-mode \ | ||
+ | </ | ||
+ | |||
+ | Lissage des courbes du graphique: antialiasing et courbure des lignes. | ||
+ | |||
+ | < | ||
+ | | ||
+ | </ | ||
+ | Définit l' | ||
+ | |||
+ | < | ||
+ | --font DEFAULT:7: \ | ||
+ | </ | ||
+ | |||
+ | Fonte par défaut pour tous les textes du graphique. | ||
+ | |||
+ | < | ||
+ | --title "ping Sophos" | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | --lower-limit 0 \ | ||
+ | </ | ||
+ | |||
+ | Définit les valeurs sur l'axe Y pour augmenter la lisibilité. La directive --lower-limit force 0 les étiquettes de l'axe car les valeurs de nos variables ne peuvent pas être négatives. | ||
+ | |||
+ | < | ||
+ | --right-axis 1:0 \ | ||
+ | </ | ||
+ | |||
+ | Rapport entre l'axe parent (à gauche) et l'axe enfant à droite. Même échelle dans notre cas, donc le rapport est définit à 1. Le dernier 0 permet de spécifier une valeur sur cet | ||
+ | |||
+ | < | ||
+ | --x-grid MINUTE: | ||
+ | </ | ||
+ | |||
+ | Redéfinit l' | ||
+ | * MINUTE:10 définit la distance en unités entre les repères verticaux gris | ||
+ | * HOUR:1 définit la distance en unités entre les repères verticaux rouges | ||
+ | * MINUTE:120 les labels sont visibles toutes les 120 unités. | ||
+ | * 0:%R espacement par défaut | ||
+ | |||
+ | < | ||
+ | DEF: | ||
+ | DEF: | ||
+ | </ | ||
+ | |||
+ | **DEF**(define), | ||
+ | * **DEF** directive de définition | ||
+ | * roundtrip=roundtrip=pingdb.rrd: | ||
+ | * MAX type de la variable tel qu'il a été déclaré dans la base. | ||
+ | |||
+ | |||
+ | < | ||
+ | LINE1: | ||
+ | </ | ||
+ | |||
+ | Création d'une ligne et de la légende associée | ||
+ | * **LINE1** tracer une ligne le suffixe 1 permet de spécifier l' | ||
+ | * **roundtrip# | ||
+ | * **" | ||
+ | |||
+ | |||
+ | |||
+ | |||
===== Références ===== | ===== Références ===== | ||
* https:// | * https:// |