====== InfluxDB (chronograf) et Grafana ======
$ aptitude update
$ aptitude upgrade
$ aptitude install apt-transport-https
- Ajout du repository InfluxDB:
$ curl -sL https://repos.influxdata.com/influxdb.key | sudo apt-key add -
$ source /etc/lsb-release
$ echo "deb https://repos.influxdata.com/${DISTRIB_ID,,} ${DISTRIB_CODENAME} stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
- (Dans le cas de Debian, faire les commandes suivantes:)
$ curl -sL https://repos.influxdata.com/influxdb.key | sudo apt-key add -
$ source /etc/os-release
$ test $VERSION_ID = "7" && echo "deb https://repos.influxdata.com/debian wheezy stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
$ test $VERSION_ID = "8" && echo "deb https://repos.influxdata.com/debian jessie stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
$ test $VERSION_ID = "9" && echo "deb https://repos.influxdata.com/debian stretch stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
- Mise à jour:
$ aptitude update
- Installation:
$ aptitude install influxdb telegraf chronograf kapacitor
===== Test TICK =====
De manière générale, les services se lancent automatiquement. Dans le cas contraire, faire :
$ systemctl start influxdb
ou :
$ service influxdb start
(Faire de même pour les autres composants)
==== Configuration de Telegraf ====
**Telegraf** est le composant qui permet de collecter des mesures d’un service, à intervalles réguliers, et de l’envoyer vers un autre. Voici une liste de services auxquels Telegraf peut se connecter pour [[https://github.com/influxdata/telegraf/tree/master/plugins/inputs|récupérer des données]] et pour [[https://github.com/influxdata/telegraf/tree/master/plugins/outputs|les écrire]].
- Pour nos tests, nous allons décommenter la section ''%%[[inputs.sysstat.options]]%%'' de ''%%/etc/telegraf/telegraf.conf%%''. Par exemple :
[inputs.sysstat.options]
-C = "cpu"
-B = "paging"
-b = "io"
-d = "disk" # requires DISK activity
"-n ALL" = "network"
"-P ALL" = "per_cpu"
-q = "queue"
-R = "mem"
-r = "mem_util"
-S = "swap_util"
-u = "cpu_util"
-v = "inode"
-W = "swap"
-w = "task"
Redémarrage de Telegraf
$ service telegraf restart
ou
$ systemctl restart telegraf
name: databases
name
----
_internal
telegraf
Quelques exemples de commande : * ''%%USE telegraf%%'' -> permet d’utiliser la table telegraf * ''%%SHOW MEASUREMENTS%%'' -> montre les différentes “tables” disponibles * ''%%SELECT * FROM cpu LIMIT 10%%'' -> permet de montrer les 10 dernières valeurs enregistrées dans la “table” cpu. * ''%%SHOW TRAG KEYS FROM "swap"%%'' -> affiche les tags de la “table” swap
La commande suivante ''%%select * from swap limit 10%%'' nous donne le résultat :
name: swap
time free host in out total used used_percent
---- ---- ---- -- --- ----- ---- ------------
1526041780000000000 36683182080 le2p-influxdb 96071680 919388160 37178306560 495124480 1.3317564080035387
1526041790000000000 36683182080 le2p-influxdb 96071680 919388160 37178306560 495124480 1.3317564080035387
1526041800000000000 36683182080 le2p-influxdb 96071680 919388160 37178306560 495124480 1.3317564080035387
1526041810000000000 36683182080 le2p-influxdb 96071680 919388160 37178306560 495124480 1.3317564080035387
1526041820000000000 36683182080 le2p-influxdb 96071680 919388160 37178306560 495124480 1.3317564080035387
1526041830000000000 36683182080 le2p-influxdb 96071680 919388160 37178306560 495124480 1.3317564080035387
1526041840000000000 36683182080 le2p-influxdb 96071680 919388160 37178306560 495124480 1.3317564080035387
1526041850000000000 36683182080 le2p-influxdb 96071680 919388160 37178306560 495124480 1.3317564080035387
1526041860000000000 36683182080 le2p-influxdb 96071680 919388160 37178306560 495124480 1.3317564080035387
1526041870000000000 36683182080 le2p-influxdb 96071680 919388160 37178306560 495124480 1.3317564080035387
Nous avons ici (pour reprendre le vocabulaire de InfluxDB) : * //Measurement// : la “table” nommée “swap” * //Timestamp// : la colonne “time”, donne en nanosecondes le temps de capture des valeurs. On pourrait appeler cela l’index primaire dans le cas d’un BDD SQL. * //Tags// : la colonne “host”, qui permet de qualifier la/les valeurs (il peut y avoir plusieurs tags, chacun étant indexé pour la recherche) * //Fields// : toutes les autres colonnes, qui contiennent les valeurs.
Quelques exemples de commande plus complexe: * ''%%select * from swap where host='le2p-influxdb' and time > now() - 1m%%'' -> montre les valeurs de la “table” swap depuis la dernière minute. * ''%%select * from swap where host='le2p-influxdb' and time >= '2018-05-29T0:00:00Z'%%'' -> montre les valeurs de la “table” swap depuis le moment mentionné. * ''%%select mean(usage_user) from cpu where host='le2p-influxdb' and time > now() - 1d group by time(1h)%%'' -> donne la moyenne par heure de l’utilisation du cpu de session user depuis ce matin, groupé par heure.
//Plus d’informations sur [[https://docs.influxdata.com/influxdb/v1.5/tools/shell/|le site officiel]].//
Les requêtes peuvent aussi se faire par curl :
$ curl -G 'http://10.82.64.147:8086/query?pretty=true&db=telegraf' --data-urlencode 'q=SELECT * FROM "swap" WHERE time > now() - 1m'
==== Configuration de Chronograf ====
**Chronograf** est un système de visualisation de données. Il va venir se connecter à notre base de données InfluxDB. Il remplace dorénavant l’API web de InfluxDB et permet donc d’administrer ce dernier. Il permet aussi la création de graphiques et la création de dashboards, mais Grafana semble plus mature à ce jour. Par défaut, Chronograf s’exécute sur le port 8888.
On obtient ce premier écran de configuration :
{{https://user-images.githubusercontent.com/12556566/40643511-740e2d86-6331-11e8-8608-d342789ae439.jpg| influx connection}}
On peut ensuite : * //Host List//: Voir un dashboard autogénéré * //Data Explorer//: Permet d’explorer les données de manière interactive (et notamment de tester les requêtes) * //Dashboards// : Permet de créer des dashboards personnalisés/ * //Alerting// : Permet de créer des alertes automatiques (par log, smtp, tcp, exec, telegram, slack, etc.) après avoir configuré Kapacitor… * //Configuration// : Configuration de la BDD (et notamment de Kapacitor)
==== Configuration de Kapacitor ====
**Kapacitor** est le composant qui permet de gérer des alertes basées sur le résultat d’une requête. Il suffit de passer par le menu précédent pour la configuration.
{{https://user-images.githubusercontent.com/12556566/40643507-732ed83e-6331-11e8-85a0-2c37d0813e8e.jpg|kapacitor connection01}} {{https://user-images.githubusercontent.com/12556566/40643508-7365ec02-6331-11e8-82de-502dc6f499b2.jpg|kapacitor connection02}}
===== Grafana =====
**Grafana** est un tableau de bord compatible avec de nombreuses BDD (Graphite, InfluxDB, OpenTSDB, etc.). Il est adapté pour visualiser des mesures en provenance de capteurs ou d’objets connectés. Il est développé en Go et Javascript.
==== Installation de Grafana ====
Pour des raisons diverses, nous avons installé Grafana. Cela peut se faire par les commandes suivantes:
$ curl https://packagecloud.io/gpg.key | sudo apt-key add -
$ echo 'deb https://packagecloud.io/grafana/stable/debian/ stretch main' > /etc/apt/sources.list.d/grafana.list
$ aptitude update
$ aptitude install grafana
La configuration se fait aisément :
{{https://user-images.githubusercontent.com/12556566/40643510-73d622c4-6331-11e8-8999-4cfe245ab782.jpg| grafana}}
Pour tester très rapidement, on peut importer un dashboard en cliquant sur ''%%Home%%'' puis ''%%Import dashboard%%''. Nous avons utilisé l’ID 928 (qui correspond à ce [[https://grafana.com/dashboards/928|dashboard]]).
===== Test des graphiques (Chronograf & Grafana) =====
Pour tester la visualisation en temps “presque” réel (5s de décalage), nous avons installé le package ''%%stress%%'' et utilisé la commande suivante:
$ stress -v -t 20s -m 100 -c 4
**Chronograf**
{{https://user-images.githubusercontent.com/12556566/40643509-739ee6b0-6331-11e8-86bd-f18f1c2ecb10.jpg| stress chronograf}}
**Grafana**
{{https://user-images.githubusercontent.com/12556566/40643512-744753ea-6331-11e8-9b7d-e5b019337bbf.jpg| stress grafana}}
====== Bonus : Redirection des ports vers des sub… ======
Pour des raisons de sécurité (drastique), il n’est pas possible d’accéder à tous les ports sans faire une demande à la DSI. Nous avons donc installé un proxy pour faciliter l’accès aux services:
===== Installation et configuration de apache =====
$ aptitude install apache2
$ a2enmod proxy proxy_http
$ nano /etc/apache2/sites-available/000-default.conf
La configuration est la suivante :
ProxyPreserveHost On
ProxyRequests Off
ProxyPass http://localhost:3000
ProxyPassReverse http://localhost:3000/grafana
ProxyPass http://localhost:8888
ProxyPassReverse http://localhost:8888/chronograf
ProxyPass http://localhost:8086
ProxyPassReverse http://localhost:8086
===== Configuration de Grafana =====
$ nano /etc/grafana/grafana.ini
Les lignes à décommenter et à configurer sont les suivantes :
# The public facing domain name used to access grafana from a browser
domain = 10.82.64.147
# The full public facing url you use in browser, used for redirects and emails
# If you use reverse proxy and sub path specify full url (with sub path)
root_url = http://10.82.64.147/grafana/
===== Configuration de Chronograf =====
$ nano /etc/default/chronograf
La configuration est la suivante :
BASE_PATH=/chronograf
PUBLIC_URL="https://10.82.64.147/chronograf"
===== Redémarrage des services =====
$ service grafana-server restart
$ service chronograf restart
$ service apache2 restart