Monitoring du Phytotron
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.

storages.tex 2.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. % ============================================
  2. %
  3. % Various storages systems
  4. %
  5. % ============================================
  6. \section{RRDB} \label{rrdb}
  7. Première tentative d'utilisation le lendemain du premier apéro 2019
  8. du Tetalab\footnote{Jean-Yves, je vous demande de vous calmer !}.
  9. Je suis parti sur quelques scripts shell, pour créer, mettre à jour et
  10. analyser les enregistrements d'une valeur de type \textsc{gauge}.
  11. \subsection{Create}
  12. \begin{lstlisting}
  13. #!/bin/bash
  14. source ./commun.sh
  15. starttime=$(date +'%s')
  16. echo creating $RRDB at ${starttime}s since epoch
  17. rrdtool create $RRDB \
  18. --start $starttime \
  19. --step 60 \
  20. DS:value:GAUGE:150:0:10 \
  21. RRA:AVERAGE:0.5:1:60
  22. \end{lstlisting}
  23. \subsection{Update} \index{rrdtool}
  24. Une fois la base créée, il faut bien la remplir.
  25. Dans cet exemple, nous allons utiliser le \textit{load}
  26. de notre Linux.
  27. \begin{lstlisting}
  28. #!/bin/bash
  29. source ./commun.sh
  30. ctime=$(date +'%s')
  31. value=$(cut -d ' ' -f 1 /proc/loadavg)
  32. # inject value in the rrdb file
  33. rrdtool update $RRDB ${ctime}:${value}
  34. \end{lstlisting}
  35. \subsection{Analyze}
  36. Nous allons essayer d'exploiter les données dûrement acquises
  37. pendant les heures qui précèdent\dots
  38. \begin{lstlisting}
  39. #!/bin/bash
  40. source ./commun.sh
  41. tmpf="somevalues.dat"
  42. rrdtool fetch $RRDB LAST |
  43. tr -d ':' |
  44. awk '
  45. (!/nan/ && NF==2) { print $1, $2 }
  46. ' \
  47. > ${tmpf}
  48. # as an example, we are gnuploting our datas
  49. gnuplot << __EOC__
  50. set term png size 800,600
  51. set output "graphe.png"
  52. set grid
  53. plot "${tmpf}" with lines
  54. __EOC__
  55. rm ${tmpf}
  56. \end{lstlisting}
  57. Il semble bien que l'utilisation de \texttt{fetch} ne soit pas
  58. vraiment prévue pour ça, donc j'en arrive à la conclusion que
  59. quelque chose m'échappe.
  60. On va laisser ça en suspens pour le moment.
  61. % -------------------------------------------------------------------
  62. \section{InfluxDB} \label{influxdb}
  63. La communication avec la bédédé se fait \textit{over HTTP}, un peu
  64. comme tous ces trucs de d'jeunz d'aujourd'hui\dots
  65. Au programme : écriture d'un injecteur en Perl\index{Perl}, en suivant
  66. plus ou moins l'exemple de rrdb..
  67. Ceci dit, en Debian stable, on n'a que la version 1.0, qui ne
  68. correspond plus trop à l'actualité. Et la \textit{current} semble
  69. trop fatiguante à compiler pour ce soir, ni même pour ce week-end.
  70. % -------------------------------------------------------------------
  71. \section{Gnocchi} \label{gnocchi} \index{Gnocchi}
  72. \texttt{pip install gnocchi[postgresql,ceph,keystone]}, finalement,
  73. çe ne me donne pas trop envie. C'est du genre \textit{usinagaz}.
  74. % -------------------------------------------------------------------
  75. \section{Sqlite} \index{sqlite} \label{sqlite}
  76. \textsf{À regarder de près}
  77. Est-il possible de traiter des \textit{time series} en SQL\index{SQL} ?
  78. Peut-on utiliser Sqlite depuis un programme en Perl\index{Perl} ?
  79. Faut-il commencer à trouver un \textit{usecase} crédible ?
  80. NodeJs\index{nodejs} peut-il lire du Sqlite ?