Charger des documents JSON dans ELASTICSEARCH via LOGSTASH
Me voila avec ma stack ELK fraîchement installée.
Voici un cas d'utilisation assez simple :Je recherche à insérer au fil de l'eau des documents JSON dans l'index ELASTICSEARCH. Pour ceci on peut le faire de plusieurs manières :
- Utiliser un ETL (ex. TALEND)
- Utiliser un programme manipulant l'API ELASTICSEARCH
- Utiliser LOGSTASH
Cette dernière brique était dans un premier temps dédiée aux LOGS. Dorénavant, elle se rapproche d'un ETL.
Voici le cas (assez simple j'en conviens) que je vais mettre en place
Configuration de LOGSTASH
LOGSTASH s'exécute dans mon cas comme un agent. Il faut créer le fichier de configuration suivant dans le répertoire /etc/logstash/conf.d :
input{ file{ codec => multiline{ pattern => "^." what => previous } path => ["/home/alexandre/src/logstash/data/*.json"] sincedb_path => "/home/alexandre/src/logstash/.sincedb_path" start_position => "beginning" } } filter { json { source => message remove_field => message } } output{ stdout{} elasticsearch { embedded => false host => "localhost" cluster => "elasticsearch" node_name => "localhost" index => "index" index_type => "document" } }
Dans le premier bloc (input) je spécifie que je cherche à traiter les fichiers json qui sont dans mon répertoire et qu'ils sont multilignes.
Ensuite dans le bloc filter , j'applique une transformation pour les mettre en JSON. Enfin dans le dernier bloc ( output) j'affiche dans la sortie standard ( stdout() ) le résultat et je charge dans elasticsearch le document JSON ainsi chargé.
Chargement des données Il faut pour cela redémarrer logstash
#service logstash restart
Et logiquement, vous devriez voir dans les logs d'ELASTICSEARCH des lignes qui ressemblent à ça
Orphan] added {[localhost][diyTqVzwSWqydrCDF6EnNQ][debian][inet[/10.0.2.15:9301]]{client=true, data=false},}, /// !!!Requête dans ELASTICSEARCH Maintenant que les données sont chargées on peut faire les recherches dans ELASTICSEARCH Il suffit de taper l'URL suivante dans un navigateur
http://127.0.0.1:9200/index/document/_search ///
Visualisation dans KIBANA
Je ne décrirais pas cette partie car je suis encore en cours d'exploration. Voici néanmoins un bon point de départ pour ceux que ça intéresse