Docker Compose pour Elasticsearch & Kibana: Installation et configuration

Dans cet article, nous allons découvrir comment déployer  Elasticsearch  et  Kibana utiliser Docker Compose. Il s'agit de deux composants clés de la pile ELK( Elasticsearch, Logstash, Kibana), qui vous aident à rechercher, analyser et visualiser efficacement les données. Vous trouverez ci-dessous les configurations détaillées et le fonctionnement de chaque composant.

1. Elasticsearch

a. Configuration de base

Elasticsearch est configuré pour s'exécuter dans un conteneur Docker avec les paramètres suivants :

  • Image:  L' Elasticsearch image officielle, version  8.17.2, est utilisée.

  • Mode nœud unique :  activé via la variable d’environnement  discovery.type=single-node.

  • Sécurité:  la sécurité X-Pack est activée( xpack.security.enabled=true) et le mot de passe de l'  elastic  utilisateur est défini sur  YVG6PKplG6ugGOw.

  • Réseau:  Elasticsearch écoute sur toutes les interfaces réseau( network.host=0.0.0.0).

  • Mémoire JVM:  configurée avec  -Xms1g  (mémoire initiale) et  -Xmx1g  (mémoire maximale).

groupe Ports ​ Volumes

  • Ports:  Le port  9200  (HTTP) et  9300  (communication interne) sont mappés du conteneur à l'hôte.

  • Volumes:  Les données Elasticsearch sont stockées dans le  elasticsearch-data  volume.

c. Bilan de santé

Un contrôle de santé est configuré pour surveiller Elasticsearch l'état de en appelant l'  /_cluster/health  API avec l'  elastic utilisateur. Si l'API ne répond pas, le conteneur redémarre.

2. Kibana

a. Configuration de base

Kibana est configuré pour se connecter Elasticsearch et s'exécuter dans un conteneur Docker avec les paramètres suivants :

  • Image:  L' Kibana image officielle, version  8.17.2, est utilisée.

  • Elasticsearch Connexion:  L' Elasticsearch adresse est définie sur  http://elasticsearch:9200.

  • Authentification:  Kibana utilise le  kibana_user  avec le mot de passe  YVG6PKplG6ugGOw  pour se connecter à Elasticsearch.

b. Ports et les réseaux

  • Ports:  Le port  5601  est mappé du conteneur à l'hôte pour accéder à l' Kibana interface.

  • Réseaux:  Kibana est connecté au  elk-network.

c. Dépendance à l'égard Elasticsearch

Kibana ne démarre qu'une fois Elasticsearch prêt, garantissant une connexion réussie entre les deux services.

3. Volume et réseau

a. Volume

  • elasticsearch-data:  Ce volume est utilisé pour stocker Elasticsearch des données, garantissant la persistance des données même si le conteneur est supprimé.

b. Réseau

  • elk-network:  Un  bridge  réseau est créé pour connecter Elasticsearch et Kibana services.


4. Mode d'emploi

a. Démarrage des services

Pour démarrer Elasticsearch et Kibana exécuter la commande suivante :

docker-compose up -d

b. Création d'un Kibana utilisateur(si nécessaire)

Si vous souhaitez utiliser un utilisateur dédié pour Kibana, vous pouvez en créer un avec la commande suivante :

docker exec -it elasticsearch /bin/elasticsearch-users useradd kibana_user -p you_password-r kibana_system
c. Création d'un Token(si vous utilisez des jetons)

Pour utiliser un token au lieu d'un mot de passe, vous pouvez en créer un avec la commande suivante :

docker exec -it elasticsearch /usr/share/elasticsearch/bin/elasticsearch-service-tokens create elastic/kibana kibana-token

5. Dépannage

  • Si vous rencontrez des erreurs, vous pouvez vérifier les journaux du conteneur en utilisant :

    docker logs elasticsearch 
    docker logs kibana
  • Pour redémarrer Kibana:

    docker-compose down kibana && docker-compose up -d kibana

Contenu intégral du Docker Compose fichier

Vous trouverez ci-dessous le contenu complet du  docker-compose-els.yml  fichier:

version: '3.7'  
  
services:  
  elasticsearch:  
    image: docker.elastic.co/elasticsearch/elasticsearch:8.17.2  
    container_name: elasticsearch  
    environment:  
   - discovery.type=single-node  
   - xpack.security.enabled=true  
   - ELASTIC_PASSWORD=you_password  
   - network.host=0.0.0.0  
   - ES_JAVA_OPTS=-Xms1g -Xmx1g  
    ports:  
   - '9200:9200'  
   - '9300:9300'  
    volumes:  
   - elasticsearch-data:/usr/share/elasticsearch/data  
    ulimits:  
      memlock:  
        soft: -1  
        hard: -1  
    networks:  
   - elk-network  
  
    healthcheck:  
      test: ["CMD-SHELL", "curl -u elastic:YVG6PKplG6ugGOw --silent --fail localhost:9200/_cluster/health || exit 1"]  
      interval: 10s  
      retries: 5  
      start_period: 30s  
      timeout: 5s  
  
  kibana:  
    image: docker.elastic.co/kibana/kibana:8.17.2  
    container_name: kibana
    ports:  
   - '5601:5601'  
    environment:  
   - ELASTICSEARCH_HOSTS=http://elasticsearch:9200  
   - ELASTICSEARCH_USERNAME=kibana_user  
   - ELASTICSEARCH_PASSWORD=you_password  
    networks:  
   - elk-network  
    depends_on:  
      elasticsearch:  
        condition: service_healthy  
  
volumes:
  elasticsearch-data:  
    driver: local  
  
networks:  
  elk-network:  
    driver: bridge

Conclusion

Avec cette Docker Compose configuration, vous pouvez facilement déployer Elasticsearch et Kibana répondre à vos besoins de recherche, d'analyse et de visualisation de données. Personnalisez et étendez cette configuration pour l'adapter aux exigences spécifiques de votre projet !