Ceci est une ancienne révision du document !


~~CLOSETOC~~

ElasticSearch & Kibana - Installation d'un outil de gestion des log (et autres)

ElasticSearch est un logiciel d'indexation et de recherche. Il traite toutes les données dans son champ d'action et les organise afin de pouvoir les restituer de manière compréhensible pour un être humain. Kibana est l'interface graphique permettant de d'interroger ElasticSearch et de lire les résultats renvoyés.

Via un système de plugin, ElasticSearch & Kibana peuvent traiter un grand panel de données (log, audit, données de performances, …). Nous verrons ici l'installation du serveur ElasticSearch & Kibana, les plugins seront eux traités dans les bulletins concernant les données qu'ils traitent.

<note>Cette procédure a été réalisé sur une VM Debian 9.</note>

<note warning>Cette procédure nécessite des droits root. Faîtes donc attention à ce que vous faîtes.</note>

Le serveur va recevoir un grand nombre de données à traiter. Il agira en tant que puits de log. Veillez donc à prévoir assez d'espace disque.

Concernant les paquets prérequis, on reste dans les classiques :

apt-get update
apt-get install -y apt-transport-https curl wget

On commence par installer le service de recherche et indexation :

  • On commence par ajouter la clé des dépôts Elastic à la base de données APT :

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

  • On rajoute le chemin des sources aux dépôts APT :

echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | tee -a /etc/apt/sources.list.d/elastic-7.x.list

  • On rafraîchit le cache :

apt-get update

  • On installe ElasticSearch :

apt-get install -y elasticsearch

/bin/systemctl daemon-reload
/bin/systemctl enable elasticsearch.service

  • Status :

systemctl status elasticsearch.service

  • Démarrage

systemctl start elasticsearch.service

  • Arrêt :

systemctl stop elasticsearch.service

  • Après avoir démarré le service, on peut le tester en local :

curl -X GET "localhost:9200/?pretty"

  • On reçoit alors une réponse de ce genre :

{
  "name" : "Test",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "lLdLEfGPSzavmWxL7nBMRw",
  "version" : {
    "number" : "7.6.0",
    "build_flavor" : "default",
    "build_type" : "deb",
    "build_hash" : "7f634e9f44834fbc12724506cc1da681b0c3b1e3",
    "build_date" : "2020-02-06T00:09:00.449973Z",
    "build_snapshot" : false,
    "lucene_version" : "8.4.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

  • On commence par arrêter le service :

systemctl stop elasticsearch.service

  • On édite le fichier de configuration de ElasticSearch :

nano /etc/elasticsearch/elasticsearch.yml

  • On décommente le champ network.host et on modifie sa valeur par 0.0.0.0.
  • On décommente le champ discovery.seed_hosts et on modifie sa valeur par 0.0.0.0.
  • On enregistre CTRL+O et on quitte CTRL+X.
  • On redémarre le service :

systemctl start elasticsearch.service

<note important>Penser à paramétrer votre pare-feu (selon votre solution de sécurité) afin de n'accepter les flux qu'en provenance de votre réseau local (le port d'écoute est le 9200). Les données traitées par ElasticSearch et affichées dans Kibana sont généralement sensibles.</note>

  • Après avoir paramétré le pare-feu, on peut tester la réponse de ElasticSearch :

curl -X GET "10.30.1.79:9200/?pretty"

<note tip>Remplacer 10.30.1.79 par l'adresse IP de votre serveur.</note>

  • La réponse doit alors ressembler à ça :

{
  "name" : "Test",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "lLdLEfGPSzavmWxL7nBMRw",
  "version" : {
    "number" : "7.6.0",
    "build_flavor" : "default",
    "build_type" : "deb",
    "build_hash" : "7f634e9f44834fbc12724506cc1da681b0c3b1e3",
    "build_date" : "2020-02-06T00:09:00.449973Z",
    "build_snapshot" : false,
    "lucene_version" : "8.4.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

A partir de là ElasticSearch est installé et opérationnel.

On peut désormais installé l'interface de gestion :

  • On installe les paquets à partir des sources précédemment ajouté avec ElasticSearch :

apt-get install -y kibana

/bin/systemctl daemon-reload
/bin/systemctl enable kibana.service

  • Status :

systemctl status kibana.service

  • Démarrage

systemctl start kibana.service

  • Arrêt :

systemctl stop kibana.service

  • On commence par arrêter le service :

systemctl stop kibana.service

  • On édite le fichier de configuration :

nano /etc/kibana/kibana.yml

  • On décommente le champ server.host et on modifie sa valeur par 0.0.0.0.
  • On décommente le champ elasticsearch.hosts et on modifie sa valeur par ["http://0.0.0.0:9200"].
  • On redémare le service :

systemctl start kibana.service

<note important>Comme pour ElasticSearch, on n'oublie pas de configurer le pare-feu selon la solution de sécurité adoptée sachant que les données sont sensibles et que le port d'écoute de Kibana et le 5601</note>

Il nous reste plus qu'à tester la connexion à Kibana via l'adresse http://10.30.1.79:5601.

<note tip>Remplacer 10.30.1.79 par l'adresse IP de votre serveur.</note>

Vous êtes désormais sur l'interface de Kibana :

<note tip>Félicitaions, ElasticSearch et Kibana sont fonctionnel. Je vous laisse découvrir leurs fonctionnalités et je ferais d'autres tickets sur certains points précis.</note>

Nicolas THOREZ 2020/02/14 10:39

Entrer votre commentaire. La syntaxe wiki est autorisée:
 
  • linux_elastic_kibana.1581688731.txt.gz
  • Dernière modification : 2020/02/14 12:58
  • (modification externe)