Installer Elasticsearch et Kibana ✔️

docker 21 juil. 2020

Cela fait maintenant quelques mois que j'avais envie d'essayer d'installer un petit Elastic sur mon serveur, pour jouer avec sans me soucier de casser des données.

Fin 2018 je m'étais pris au jeu de faire une installation "classique" sur mon VPS, et s'il n'a pas pris feu, c'est parce que ce n'est techniquement pas possible. Cette année, avec un modèle un peu mieux dimensionné, je me suis lancé, et au lieu de plomber ce nouveau venu à grand coup d'apt-get, j'ai choisi de passer par Docker.

docker-compose

Pour débuter, j'ai choisi d'utiliser docker-compose, plus pratique que la cli pour des lignes de 14km de long.

version: '2'
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.8.1
    container_name: elasticsearch
    environment:
      - xpack.security.enabled=true
      - discovery.type=single-node
    volumes:
      - ./elasticsearch/data:/usr/share/elasticsearch/data
    networks:
      - elk-net
    ports:
      - "9200:9200"
      - "9300:9300"
  kibana:
    image: docker.elastic.co/kibana/kibana:7.8.1
    container_name: kibana
    environment:
      - xpack.security.enabled=true
      - ELASTICSEARCH_USERNAME=kibana
      - ELASTICSEARCH_PASSWORD=ahah
    networks:
      - elk-net
    ports:
      - "5601:5601"
    depends_on:
      - elasticsearch

networks:
  elk-net:
    driver: bridge
docker-compose.yml

Service elasticsearch

Les données d'Elastic sont partagées les data avec mon répertoire ./elasticsearch/data (relatif au chemin depuis lequel je lance ma commande).

L'authentification est activée (il faudra donc configurer Kibana en conséquence).

Le porte 9200 est ouvert, ce qui me permettra d'accéder à mon instance (via le port 9200 également).

Le service utilise le network elk-net, ce qui lui permettra d'être appelé par Kibana.

Service kibana

Le service est configuré de manière à attendre que Elastic soit lancé (propriété depends_on) et partage le même réseau, elk-net, qui est défini plus bas.

Vous l'aurez deviné, le présent mot de passe ne fonctionnera pas, et vous ne pouvez pas le définir par vous-même automagiquement. Pour ce faire, une fois le fichier ci-dessus complété (vous pouvez laisser le mauvais mot de passe, ou retirer la ligne), lancez la commande suivantes :

mkdir -p $PWD/elasticsearch/data
chmod 777 -R $PWD/elasticsearch/data

docker-compose up --detach elasticsearch
docker logs -t -f elasticsearch

Assurez-vous de voir apparaître dans la console la ligne "Active license is now [BASIC]; Security is enabled", puis quittez le log (CTRL+C).

docker exec elasticsearch bin/elasticsearch-setup-passwords auto -b

Notez précieusement les mots de passe affichés à l'écran. Le premier qui va nous être utile sera PASSWORD kibana. Mettez de côté le PASSWORD elastic pour la suite. Il vous servira à vous connecter à l'interface web Kibana.

Modifiez votre docker-compose comme suit :

  kibana:
    ...
    environment:
      ...
      - ELASTICSEARCH_PASSWORD=VOTRE_PASSWORD_KIBANA

Vous pouvez désormais lancer le service Kibana :

docker-compose up --detach kibana

Au bout de quelques minutes, vous aurez accès à votre interface Kibana (si vous avez configuré correctement votre reverse proxy (sinon c'est par là [TODO]).

Pour vous connecter, utilisez le username elastic et le mot de passe PASSWORD elastic.

Et voila !

Sources

Configure security in Kibana | Kibana Guide [7.8] | Elastic
Encrypting communications in an Elasticsearch Docker Container | Elasticsearch Reference [7.8] | Elastic
How to set passwords for built-in users with docker-compose setup
Hey there, I am running an Elasticsearch 7.3.0 cluster with three nodes (on three different machines) via a docker-compose setup. Here is my elasticsearch and kibana service defined in docker-compose.yml: services: es-mdi: container_name: lxelk01-es-mdi image: elasticsearch:7.3.0 por…

Mots clés

Super ! Vous vous êtes inscrit avec succès.
Super ! Effectuez le paiement pour obtenir l'accès complet.
Bon retour parmi nous ! Vous vous êtes connecté avec succès.
Parfait ! Votre compte est entièrement activé, vous avez désormais accès à tout le contenu.