[InfluxDB](https://www.influxdata.com/time-series-platform/influxdb/) est une base de données de séries temporelles. Nous l'utilisons en combinaison avec [collectd](HowtoCollectd) et [Grafana](HowtoGrafana).
## Installation
Nous utilisons les dépôts fournis par InfluxData pour avoir une version stable plus récente.
On peut désactiver la collection de statistiques internes à InfluxDB, et ne faire écouter le serveur HTTP qu'en local. Ce dernier permet d'afficher des graphes à des fins de tests uniquement.
On commence par créer un utilisateur avec les droits administrateur :
~~~
# influx
Connected to http://localhost:8086 version 1.8.10
InfluxDB shell version: 1.8.10
> CREATE USER <username> WITH PASSWORD '<password>' WITH ALL PRIVILEGES
> SHOW USERS
user admin
---- -----
<username> true
~~~
On modifie la configuration dans `/etc/influxdb/influxdb.conf` pour activer l'authentification :
~~~
[http]
auth-enabled = true
~~~
Puis on redémarre influxDB :
~~~
# systemctl restart influxdb
~~~
On s'authentifie ensuite via la commande `auth` :
~~~
# influx
Connected to http://localhost:8086 version 1.8.10
InfluxDB shell version: 1.8.10
> auth
username: root
password:
~~~
Ou, avec la commande `influx` :
~~~
# influx -username root -password ''
password:
Connected to http://localhost:8086 version 1.8.10
InfluxDB shell version: 1.8.10
>
~~~
En laissant l'arguement `-password` vide mais bien présent pour qu'il soit demandé à l'utilisateur.
Attention, si le mot de passe donné n'est pas le bon, aucune erreur n'est affichée, mais les commandes ayant besoin d'être authentifiées seront en erreur.
Il peut être intéressant de naviguer dans la base de données afin de comprendre comment sont stockées les données, et ainsi afficher des graphes avec plus de facilité :
Les "continuous queries" (ou requêtes continues) sont des requêtes qui sont exécutées automatiquement et périodiquement sur les données en temps réel, pour ensuite en stocker le résultat.
Par exemple, pour créer des mesures "switch_bps_tx" et "switch_bps_rx" avec le champ "bitspersec" où est converti le nombre total d'octets transmis par une interface et récupéré toutes les minutes, en une mesure en bits par secondes, toutes les minutes également :
~~~
# influx
> CREATE CONTINUOUS QUERY "Interface-Traffic-Conversion_TX" ON collectd BEGIN SELECT non_negative_derivative(mean(value), 1s) * 8 AS bitspersec INTO collectd.autogen.switch_bps_tx FROM collectd.autogen.snmp_tx WHERE type = 'if_octets' GROUP BY host, type_instance, time(1m) END
> CREATE CONTINUOUS QUERY "Interface-Traffic-Conversion_RX" ON collectd BEGIN SELECT non_negative_derivative(mean(value), 1s) * 8 AS bitspersec INTO collectd.autogen.switch_bps_rx FROM collectd.autogen.snmp_rx WHERE type = 'if_octets' GROUP BY host, type_instance, time(1m) END
> SHOW CONTINUOUS QUERIES
name: collectd
name query
---- -----
Interface-Traffic-Conversion_TX CREATE CONTINUOUS QUERY "Interface-Traffic-Conversion_TX" ON collectd BEGIN SELECT non_negative_derivative(mean(value), 1s) * 8 AS bitspersec INTO collectd.autogen.switch_bps_tx FROM collectd.autogen.snmp_tx WHERE type = 'if_octets' GROUP BY host, type_instance, time(1m) END
Interface-Traffic-Conversion_RX CREATE CONTINUOUS QUERY "Interface-Traffic-Conversion_RX" ON collectd BEGIN SELECT non_negative_derivative(mean(value), 1s) * 8 AS bitspersec INTO collectd.autogen.switch_bps_rx FROM collectd.autogen.snmp_rx WHERE type = 'if_octets' GROUP BY host, type_instance, time(1m) END