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'elasticutilisateur est défini surYVG6PKplG6ugGOw.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) et9300(communication interne) sont mappés du conteneur à l'hôte.Volumes: Les données Elasticsearch sont stockées dans le
elasticsearch-datavolume.
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_useravec le mot de passeYVG6PKplG6ugGOwpour se connecter à Elasticsearch.
b. Ports et les réseaux
Ports: Le port
5601est 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
bridgeré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
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 kibanaPour redémarrer 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 !

