Influxdb: le métrologie facile ****************************** la métrologie consiste à prélever de façon régulière dans le temps une information. L'enjeux cruciale est d'avoir : - une base de donnée qui puisse traiter de gros volume de donnée, donnée qui reste simple (clé/valeur par temps) - un outil de visualisation Il existe pour cela un module nommé influxdb sponsorisé par google. Installation de influxdb ======================== .. warning:: il n'existe pas de code compiler pour windows Pour une machine en 64-bit .. code-block:: bash # for 64-bit systems wget http://s3.amazonaws.com/influxdb/influxdb_latest_amd64.deb dpkg -i influxdb_latest_amd64.deb Pour une machine en 32-bit .. code-block:: bash # for 32-bit systems wget http://s3.amazonaws.com/influxdb/influxdb_latest_i386.deb dpkg -i influxdb_latest_i386.deb Puis on démarre le service .. code-block:: bash /etc/init.d/influxdb start On peut maintenant ce rendre sur l'interface web http://127.0.0.1:8083/ afin de créer, d'administrer notre nouvelle base de donnée métrique .. note:: par défaut le login est **root** et le password **root** HTTP API fonctionne sur le port 8086. Api Python influxdb-python ========================== Ce module permet notament d'intégrer des valeurs dans notre base influxdb .. code-block:: bash apt-get install python-pip pip install influxdb exemple d'utilisation .. code-block:: python from influxdb import client as influxdb import time import math db = influxdb.InfluxDBClient(host='127.0.0.1', port=8086, username='root', password='root', database='test') i = 0 while True: data = [ {"points":[[math.cos(math.radians(i)),math.sin(math.radians(i))]], "name":"math", "columns":["cos", "sin"] } ] db.write_points(data) i = i +1 print(i) time.sleep(1) avec ce programme nous créons la table math contenant par unités de temps 2 informations: - cos - sin Comme on peut le voir on intègre pas la notion de temps, elle correspond par défaut au moment de l'écriture. Dans l'interface graphique on peut visualier les résultats ainsi .. code-block:: sql select * from math select sin from math avec un regroupement et une notion de moyenne .. code-block:: sql select mean(sin) from math group by time(30s) where time > now() - 1d .. image:: data/influxdb.png Utilisation de Grafana ====================== Grafana est un outil web qui permet simplement de visualiser les données métriques l'installation est assez simple .. code-block:: bash apt-get install apache2 wget http://grafanarel.s3.amazonaws.com/grafana-1.9.1-rc1.tar.gz tar xzvf grafana-1.9.1-rc1.tar.gz mv grafana-1.9.1-rc1 grafana cd grafana mv config.sample.js config.js placer dans votre fichier config.js .. code-block:: javascript datasources: { influxdb: { type: 'influxdb', url: "http://192.168.65.133:8086/db/test", username: 'root', password: 'root', }, grafana: { type: 'influxdb', url: "http://192.168.65.133:8086/db/grafana", username: 'root', password: 'root', grafanaDB: true }, }, .. note:: dans notre cas notre base s'appelle **test** .. warning:: par défaut la zone de configuration des sources est commentée Vous pouvez maintenant aller sur http://127.0.0.1/graphana pour utiliser l'outil et générer un magnifique tableau de bord .. image:: data/grafana.png