Charger des documents JSON dans ELASTICSEARCH via LOGSTASH

Me voila avec ma stack ELK fraîchement installée. formation-elasticsearch.png

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

Screen_Shot_10-30-14_at_04.42_PM.PNG

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

Vus : 2747
Publié par Littlewing : 368