xpack español elk compose cluster elasticsearch docker kibana kibana-4 elasticsearch-2.0

elasticsearch - español - kibana docker



Kibana en Docker no puede conectarse a Elasticsearch (3)

Traté de crear Kibana y Elasticsearch y parece que Kibana tiene problemas para identificar a Elasticsearch.

Aquí están mis pasos:

1) Crear red

docker network create mynetwork --driver=bridge

2) Ejecutar el contenedor Elasticsearch

docker run -d -p 9200:9200 -p 9300:9300 --name elasticsearch_2_4 --network mynetwork elasticsearch:2.4

3) Ejecutar Kibana Container

docker run -i --network mynetwork -p 5601:5601 kibana:4.6

Obtengo una salida JSON cuando me conecto a Elasticsearch a través de http: // localhost: 9200 / a través de mi navegador.

Pero cuando abro http: // localhost: 5601 / recibo

Unable to connect to Elasticsearch at http://elasticsearch:9200.

Enfoque alternativo,

Todavía obtengo un error similar cuando intento

docker run -d -e ELASTICSEARCH_URL=http://127.0.0.1:9200 -p 5601:5601 kibana:4.6

donde obtengo el error

Unable to connect to Elasticsearch at http://127.0.0.1:9200.

La publicación de mi blog basada en la respuesta aceptada: https://gunith.github.io/docker-kibana-elasticsearch/


Cambié la configuración de red para el contenedor Kibana y después de esto funciona bien:


Existe un malentendido sobre lo que significa localhost o 127.0.0.1 al ejecutar un comando dentro de un contenedor. Debido a que cada contenedor tiene su propia red, localhost no es su sistema de host real, sino el contenedor en sí. Entonces, cuando está ejecutando kibana y apuntando la variable ELASTICSEARCH_URL a localhost:9200 el proceso kibana buscará elasticsearch dentro del contenedor kibana que, por supuesto, no se está ejecutando allí.

Ya ha introducido alguna red personalizada a la que hizo referencia al iniciar los contenedores. Todos los contenedores que se ejecutan en la misma red pueden referirse entre sí a través del nombre en sus puertos de expose (ver archivos Docker). Como llamó a su contenedor elasticsearch_2_4 , puede hacer referencia al punto final http de elasticsearch como http://elasticsearch_2_4:9200 .

docker run -d --network mynetwork -e ELASTICSEARCH_URL=http://elasticsearch_2_4:9200 -p 5601:5601 kibana:4.6

Siempre que no necesite acceder directamente a la instancia de elasticsearch, puede incluso omitir la asignación de los puertos 9200 y 9300 a su host.

En lugar de iniciar todos los contenedores por su cuenta, también sugiero usar docker-compose para administrar todos los servicios y parámetros. También debería considerar montar una carpeta local como volumen para que los datos persistan. Este podría ser su archivo redactado. Agregue las networks , si necesita tener la red externa, de lo contrario, esta configuración solo crea una red para usted.

version: "2" services: elasticsearch: image: elasticsearch:2.4 ports: - "9200:9200" volumes: - ./esdata/:/usr/share/elasticsearch/data/ kibana: image: kibana:4.6 ports: - "5601:5601" environment: - ELASTICSEARCH_URL=http://elasticsearch:9200


Prueba:

docker run -d -e ELASTICSEARCH_URL=http://yourhostip:9200 -p 5601:5601 kibana:4.6

Puedes probar con tu host ip o la ip identificada por docker0 en ifconfig

Saludos