Docker Compose para Elasticsearch & Kibana: Configuración y configuración

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 del  elastic  usuario está configurada como  YVG6PKplG6ugGOw.

  • 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) y  9300  (comunicación interna) se asignan desde el contenedor al host.

  • Volumes:  Los datos de Elasticsearch se almacenan en el  elasticsearch-data  volumen.

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_user  la contraseña  YVG6PKplG6ugGOw  para conectarse a Elasticsearch.

b. Ports y redes

  • Ports:  El puerto  5601  se 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: bridge  Se 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
c. Creación de un Token(si se utilizan tokens)

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 kibana
  • Para reiniciar Kibana:

    docker-compose down kibana && docker-compose up -d 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!