Les midis de la bidouille (de la donnée à sa visualisation)
Inria Bordeaux Sud-ouest
herve.mathieu@inria.fr
Sommaire
- Présentation des technologies
- Serveurs mis en place
- Exemples
- Travaux pratiques (A vous de jouer)
Présentation des technologies
ELK stack E — Elasticsearch, L — Logstash, K — Kibana
- Logstash is an open source, server-side data processing pipeline
- Elasticsearch is a distributed, RESTful search and analytics engine (NoSQL)
- Kibana is an open source analytics and visualisation platform
Serveurs mis en place
Installation sur réseau Inria
https://kibana.bordeaux.inria.fr/
https://elasticsearch.bordeaux.inria.fr/
Aucun système d’authentification n’est mis en place, donc l’ensemble des données est accessible (en lecture et en écriture) par toute personne accédant aux serveurs.
Règle d’usage : afin d’éviter tout écrasement accidentel de données et permette aux administrateurs de tracer l’usage des serveurs, il est demandé aux utilisateurs de préfixer leur index (ElasticSearch indices) par nom_de_l_equipe:sujet_de_l_etude (et éventuellement des sous-objet séparés par : ).
Cas particulier pour les midis de la bidouille : mdb:nom_de_famille
Possibilité d’une installation en local sur sa machine
Elasticsearch
- https://www.elastic.co/downloads/elasticsearch : download elasticsearch-6.6.1.tar.gz (voir version actuelle)
- gunzip elasticsearch-6.6.1.tar.gz
- cd elasticsearch-6.6.1; ./bin/elasticsearch
- in your favorite web browser: http://localhost:9200/
Kibana
- https://www.elastic.co/downloads/kibana : download kibana-6.6.1.tar.gz (voir version actuelle)
- gunzip kibana-6.6.1.tar.gz
- cd kibana-6.6.1; ./bin/kibana
- in your favorite web browser: http://localhost:5601/ launches the Kibana interface
Exemples
Typologie des exemples :
- des données sous forme : csv, json, texte
- un programme en python pour peupler la base Elasticsearch
- des propositions de visualisations sur Kibana
exemples :
- nuage de mot (texte)
- commit sur un projet git (curl, json)
- données temporelles de plafrim (csv)
- données météo (json, TP mdb)
A vous de jouer
Récupération des exemples
- mkdir mdb_elk; cd mdb_elk
- git clone git@gitlab.inria.fr:sed-bso/elasticsearch_examples.git
meteo_mdb (contexte)
Des données météorologiques accessibles :
https://www.infoclimat.fr/api-previsions-meteo.html?id=07510&cntry=STA
Pour visualiser le json :
python -m json.tool meteo.json
Proposition d’environnement de travail virtuel dans un terminal :
- sudo apt install virtualenv
- mkdir virtualenv; cd virtualenv;
- virtualenv -p python3 env
- source virtualenv/env/bin/activate
Pour les paquets python requis : * pip install elasticsearch * pip install requests
si problème IPV4/IPV6 :
$ sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
$ sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1
Code à compléter (meteo.py)
es_index unique
es_index = ‘mdb:mon_nom’
mapping : https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping.html
Les possibilités : text, keyword, date, long, double, boolean, ip
cas particulier des dates : https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-date-format.html#built-in-date-formats
Choisir les champs que vous souhaitez afficher
Tester la lecture du JSON avant d’envoyer les données sur Elasticsearch
Kibana
Une fois les données envoyées avec succès
Aller sur kibana.bordeaux.inria.fr
index Kibana
Management -> Kibana -> Index Patterns -> Create index pattern
step 1/2 : index pattern : mettre le nom de son index
step 2/2 : option (date)
Visualisation
plus(+) -> Line -> mon index
Y-axis -> Max -> pression
X-axis -> Date Histogram -> date -> Hourly
En haut à droite : penser à changer le fenêtre temporelle -> Last 7 days
Pour aller plus loin
- Tableau de bord (agrégat de visualisation)
- Logstash (pas essayé)
- Vega (kibana en script) : kibana -> visualise -> TADaaM:demo_git_vega
Sources (liens)
- https://www.elastic.co/
- https://medium.freecodecamp.org/how-to-use-elasticsearch-logstash-and-kibana-to-visualise-logs-in-python-in-realtime-acaab281c9de
- https://yhatt.github.io/marp/ (markdown vers présentation PDF)