Preparar un entorno de desarrollo basado en docker con elasticseach, kibana y sense

Docker Logo

Vamos a crear 2 contenedores de Docker, uno con una instancia de elasticsearch, y el otro con una instancia de Kibana. En este segundo contenedor instalaremos el plugin Sense, y además lo lincaremos con el contenedor de elasticsearch.

Un paso más que no veremos en este artículo sería utilizar docker compose para gestionar el ciclo de vida de ambos contenedores como si fuera uno solo. Este paso ya lo veremos en otro artículo.

Por tanto lo que vamos a ver en este articulo es

  • crear un contenedor docker basado en elasticsearch, mapeando los puertos del contenedor a la máquina host, para tener acceso desde nuestra maquina a los servicios de elasticseach
  • utilizar docker logs para ver el correcto arranque de elasticsearch, kibana y la instalación de sense
  • crear un contenedor basado en kibana, mapeando los puertos del contenedor a la máquina host, para tener acceso desde nuestra máquina a los servicios de kibana
  • crear un link desde el contenedor basado en kibana hacia el contenedor basado en elasticsearch, para facilizar la comunicación de red entre kibana y elasticsearch.

Preparar un contenedor docker con elasticsearch

Arrancamos el contenedor docker con elasticsearch

$ docker run -d --name es-server-test -p 9200:9200 -p 9300:9300 elasticsearch:2.1.1
251554d157a73a177940093ec79cb342cd9927dba5b6b25c5f67bf105884fa59
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
251554d157a7 elasticsearch:2.1.1 "/docker-entrypoint.s" 5 seconds ago Up 4 seconds 0.0.0.0:32772->9200/tcp, 0.0.0.0:32771->9300/tcp es-server-test

Comprobamos el funcionamiento de elasticsearch

docker@default:~$ curl localhost:9200
{
 "name" : "Starstreak",
 "cluster_name" : "elasticsearch",
 "version" : {
 "number" : "2.1.1",
 "build_hash" : "40e2c53a6b6c2972b3d13846e450e66f4375bd71",
 "build_timestamp" : "2015-12-15T13:05:55Z",
 "build_snapshot" : false,
 "lucene_version" : "5.3.1"
 },
 "tagline" : "You Know, for Search"
}
$ docker logs es-server-test
[2016-01-14 14:38:25,583][INFO ][env ] [Starstreak] using [1] data paths, mounts [[/usr/share/elasticsearch/data (/dev/sda1)]], net usable_space [14.4gb], net total_space [18.1gb], spins? [possibly], types [ext4]
[2016-01-14 14:38:29,240][INFO ][node ] [Starstreak] initialized
[2016-01-14 14:38:29,247][INFO ][node ] [Starstreak] starting ...
[2016-01-14 14:38:29,433][WARN ][common.network ] [Starstreak] publish address: {0.0.0.0} is a wildcard address, falling back to first non-loopback: {172.17.0.2}
[2016-01-14 14:38:29,433][INFO ][transport ] [Starstreak] publish_address {172.17.0.2:9300}, bound_addresses {[::]:9300}
[2016-01-14 14:38:29,453][INFO ][discovery ] [Starstreak] elasticsearch/Y6CTY4f7RWyGy4621sxcFw
[2016-01-14 14:38:32,499][INFO ][cluster.service ] [Starstreak] new_master {Starstreak}{Y6CTY4f7RWyGy4621sxcFw}{172.17.0.2}{172.17.0.2:9300}, reason: zen-disco-join(elected_as_master, [0] joins received)
[2016-01-14 14:38:32,508][WARN ][common.network ] [Starstreak] publish address: {0.0.0.0} is a wildcard address, falling back to first non-loopback: {172.17.0.2}
[2016-01-14 14:38:32,509][INFO ][http ] [Starstreak] publish_address {172.17.0.2:9200}, bound_addresses {[::]:9200}
[2016-01-14 14:38:32,509][INFO ][node ] [Starstreak] started
[2016-01-14 14:38:32,587][INFO ][gateway ] [Starstreak] recovered [0] indices into cluster_state

Preparar un contenedor con kibana y el plugin de sense

Arrancamos kibana

$ docker run --link es-server-test:elasticsearch -d --name kibana-es-server-test -p 5601:5601 kibana:4.3.1
1bc9c3a03cd6b97d6b507b5cffa8ec323cee3237ced8661d45ef727ed954635c
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1bc9c3a03cd6 kibana:4.3.1 "/docker-entrypoint.s" 3 seconds ago Up 3 seconds 0.0.0.0:32776->5601/tcp kibana-es-server-test        
251554d157a7 elasticsearch:2.1.1 "/docker-entrypoint.s" 23 minutes ago Up 23 minutes 0.0.0.0:32772->9200/tcp, 0.0.0.0:32771->9300/tcp es-server-test

Instalamos el plugin sense en kibana

$ docker exec kibana-es-server-test kibana plugin --install elastic/sense

Miramos los logs verificando la instalación correcta de sense

$ docker logs -f kibana-es-server-test
Installing sense
Attempting to extract from https://download.elastic.co/elastic/sense/sense-latest.tar.gz
Downloading 318236 bytes....................
Extraction complete
Optimizing and caching browser bundles...
Plugin installation complete

Reiniciamos el contenedor de kibana

$ docker restart kibana-es-server-test

Finalmente accedemos desde un navegador a kibana y sense

Kibana localhost:5601

Kibana

Sense localhost:5601/app/sense

Sense

Anuncios

Un pensamiento en “Preparar un entorno de desarrollo basado en docker con elasticseach, kibana y sense

  1. Pingback: Utilizar docker compose para gestionar y administrar varios contenedores | Lo que me interesa de la red

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s