From 5aa3f73daac92f9465129297f8d951cea0e0ce4e Mon Sep 17 00:00:00 2001 From: tth Date: Thu, 3 Jan 2019 17:05:55 +0100 Subject: [PATCH] rrdb : improving doc and code --- doc/dd2-monitoring.tex | 64 ++++++++++++++++++++++++++++++++++++++++-- rrdb/getvalues.sh | 12 ++++++-- 2 files changed, 70 insertions(+), 6 deletions(-) diff --git a/doc/dd2-monitoring.tex b/doc/dd2-monitoring.tex index 3694ee8..8bc88f5 100644 --- a/doc/dd2-monitoring.tex +++ b/doc/dd2-monitoring.tex @@ -68,7 +68,7 @@ par exemple si des algues\footnote{ou des pleurotes.} tentent de s'échapper. Pour entreposer toutes ces valeurs numériques, il existe plusieurs choix, et nous allons en évaluer quelques uns : -\texttt{rrdb}\index{rrdb}, +\texttt{rrdb}\index{rrdb} (page \pageref{rrdb}), \texttt{influxdb}\index{influxdb} (page \pageref{influxdb}), \texttt{gnocchi}\index{gnocchi}... @@ -100,6 +100,8 @@ de bonne efficacité. Promis, on va en mettre ! Dès que ça marche\dots +Premier exemple avec rrdb en page \pageref{rrdb}. + \subsection{Analyses} Bla bla bla\dots Corrélations, toussa\dots @@ -114,7 +116,62 @@ Première tentative d'utilisation le lendemain du premier apéro 2019 du Tetalab\footnote{Jean-Yves, je vous demande de vous calmer !}. Je suis parti sur trois scripts shell, pour créer, mettre à jour et -exploiter l'enregistrement d'une valeur de type \textsc{gauge}. +analyser les enregistrements d'une valeur de type \textsc{gauge}. + +\subsection{Create} +\begin{lstlisting} +#!/bin/bash + +source ./commun.sh + +starttime=$(date +'%s') +echo creating $RRDB at ${starttime}s since epoch +rrdtool create $RRDB \ + --start $starttime \ + --step 60 \ + DS:value:GAUGE:150:0:10 \ + RRA:AVERAGE:0.5:1:60 +\end{lstlisting} + +\subsection{Update} +\index{rrdtool} +\begin{lstlisting} +#!/bin/bash + +source ./commun.sh +ctime=$(date +'%s') +value=$(cut -d ' ' -f 1 /proc/loadavg) + +# inject value in the rrdb file +rrdtool update $RRDB ${ctime}:${value} +\end{lstlisting} + +\subsection{Analyze} +\begin{lstlisting} +#!/bin/bash + +source ./commun.sh +tmpf="somevalues.dat" + +rrdtool fetch $RRDB LAST | +tr -d ':' | +awk ' + (!/nan/ && NF==2) { print $1, $2 } + ' \ + > ${tmpf} + +# as an example, we are gnuploting our datas +gnuplot << __EOC__ +set term png size 800,600 +set output "graphe.png" +set grid +plot "${tmpf}" with lines +__EOC__ + +rm ${tmpf} +\end{lstlisting} + + % ------------------------------------------------------------------- @@ -123,7 +180,8 @@ exploiter l'enregistrement d'une valeur de type \textsc{gauge}. La communication avec la bédédé se fait \textit{over HTTP}, un peu comme tous ces trucs de d'jeunz d'aujourd'hui\dots -Au programme : écriture d'un injecteur en Perl\index{Perl}. +Au programme : écriture d'un injecteur en Perl\index{Perl}, en suivant +plus ou moins l'exemple de rrdb.. % ------------------------------------------------------------------- diff --git a/rrdb/getvalues.sh b/rrdb/getvalues.sh index 861ade4..43fedf1 100755 --- a/rrdb/getvalues.sh +++ b/rrdb/getvalues.sh @@ -2,18 +2,24 @@ source ./commun.sh +tmpf="somevalues.dat" + rrdtool fetch $RRDB LAST | tr -d ':' | awk ' (!/nan/ && NF==2) { print $1, $2 } ' \ - > toto + > ${tmpf} +# +# as an example, we are gnuploting our datas +# gnuplot << __EOC__ set term png size 800,600 set output "graphe.png" -plot "toto" with lines +set grid +plot "${tmpf}" with lines __EOC__ -rm toto +rm ${tmpf}