En este artículo, exploraremos cómo implementar Elasticsearch y Kibana usar Docker Compose. Estos son dos componentes clave de ELK Stack( Elasticsearch, Logstash, Kibana), que lo ayudan a buscar, analizar y visualizar datos de manera efectiva. A continuación, se detallan las configuraciones y cómo funciona cada componente.
1. Elasticsearch
a. Configuración básica
Elasticsearch está configurado para ejecutarse en un contenedor Docker con los siguientes parámetros:
Imagen: Elasticsearch Se utiliza la imagen oficial, versión
8.17.2.Modo de nodo único: habilitado a través de la variable de entorno
discovery.type=single-node.Seguridad: La seguridad de X-Pack está habilitada(
xpack.security.enabled=true) y la contraseña delelasticusuario está configurada comoYVG6PKplG6ugGOw.Red: Elasticsearch escucha en todas las interfaces de red(
network.host=0.0.0.0).Memoria JVM: configurada con
-Xms1g(memoria inicial) y-Xmx1g(memoria máxima).
banda Ports Volumes
Ports: El puerto
9200(HTTP) y9300(comunicación interna) se asignan desde el contenedor al host.Volumes: Los datos de Elasticsearch se almacenan en el
elasticsearch-datavolumen.
c. Control de salud
Se configura una comprobación de estado para supervisar Elasticsearch el estado de llamando a la /_cluster/health API con el elastic usuario. Si la API no responde, el contenedor se reiniciará.
2. Kibana
a. Configuración básica
Kibana está configurado para conectarse Elasticsearch y ejecutarse en un contenedor Docker con los siguientes parámetros:
Imagen: Kibana Se utiliza la imagen oficial, versión
8.17.2.Elasticsearch Conexión: La Elasticsearch dirección está establecida en
http://elasticsearch:9200.Autenticación: Kibana utiliza
kibana_userla contraseñaYVG6PKplG6ugGOwpara conectarse a Elasticsearch.
b. Ports y redes
Ports: El puerto
5601se asigna desde el contenedor al host para acceder a la Kibana interfaz.Redes: Kibana está conectado a
elk-network.
c. Dependencia de Elasticsearch
Kibana Sólo se inicia cuando Elasticsearch está listo, lo que garantiza una conexión exitosa entre los dos servicios.
3. Volumen y red
a. Volume
elasticsearch-data: Este volumen se utiliza para almacenar Elasticsearch datos, lo que garantiza su persistencia incluso si se elimina el contenedor.
b. Red
elk-network:
bridgeSe crea una red para conectar Elasticsearch y Kibana brindar servicios.
4. Cómo utilizar
a. Inicio de los servicios
Para iniciar Elasticsearch y Kibana ejecutar el siguiente comando:
docker-compose up -d
b. Creación de un Kibana usuario(si es necesario)
Si desea utilizar un usuario dedicado para Kibana, puede crear uno con el siguiente comando:
docker exec -it elasticsearch /bin/elasticsearch-users useradd kibana_user -p you_password-r kibana_system
Para utilizar un token en lugar de una contraseña, puede crear una con el siguiente comando:
docker exec -it elasticsearch /usr/share/elasticsearch/bin/elasticsearch-service-tokens create elastic/kibana kibana-token
5. Solución de problemas
Si encuentra errores, puede verificar los registros del contenedor mediante:
docker logs elasticsearch docker logs kibanaPara reiniciar Kibana:
Contenido completo del Docker Compose expediente
A continuación el contenido completo del docker-compose-els.yml archivo:
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
Conclusión
Con esta Docker Compose configuración, puede implementar Elasticsearch y Kibana satisfacer fácilmente sus necesidades de búsqueda, análisis y visualización de datos. ¡Personalice y amplíe esta configuración para que se ajuste a los requisitos específicos de su proyecto!

