Este repositorio alberga un contenedor Docker para Elasticsearch + Kibana. Lo tienes automatizado en el registry hub de Docker luispa/base-eskibana con los fuentes en GitHub: base-eskibana. Lo uso en combinación con el contenedor luispa/base-fluentd, con los fuentes en GitHub: GitHub: base-fluentd
La combinación de fluentd + elasticsearch + kibana permite unificar, almacenar y visualizar todos los log's de todos mis contenedores docker en mi equipo linux en un único sitio.
Fluentd es un recolector que unifica "logs", proyecto open source que permite aunar colecciones de datos y que sean consumidos de forma centralizada para poder entender mejor los datos.
Elasticsearch es un motor de búsqueda (una base de datos para que nos entendamos), también es un proyecto opensource que es muy conocido por su sencillez de uso.
Kibana es un interfaz de usuario Web que permite realizar búsquedas más amigables en elasticsearch.
Al combinar las tres herramientas (Fluentd + Elasticsearch + Kibana) conseguimos un sistema escalable, sencillo y flexible que agrega los logs en un motor de búsqueda que puede ser consumido de forma sencilla desde la web. En mi caso he decidido separar las tres herramientas en dos contenedores, uno con fluentd y el otro con elasticsearch y kibana.
Consulta este apunte técnico sobre varios servicios en contenedores Docker para acceder a otros contenedores Docker y sus fuentes en GitHub.
- Dockerfile: Para crear la base de servicio.
- do.sh: Para arrancar el contenedor creado con esta imagen.
Para usar esta imagen desde el registry de docker hub
totobo ~ $ docker pull luispa/base-eskibana
Si prefieres crear la imagen de forma manual en tu sistema, primero debes clonarla desde Github para luego ejecutar el build
$ git clone https://github.com/LuisPalacios/base-eskibana.git
$ docker build -t luispa/base-eskibana ./
Puedes ejecutar "manulamente" el contenedor, es decir, de forma interactiva, que es muy útil para hacer pruebas. Aquí te dejo un "ejemplo":
docker run -t -i -e FLUENTD_PORT=24224 -p 24224:24224 --name fluentd_1 --link eskibana_1:eskibana luispa/base-eskibana /bin/bash
Si por el contrario prefieres automatizarlo con el programa fig y que arranquen ambos contenedores, el de fluentd y el de elasticsearch+kibana, te recomiendo que eches un ojo al servicio-log que he dejado en GitHub
Expongo los siguientes puertos:
- "9200" - para poder conectar con elasticsearch de forma directa
- "8081" - para poder conectar con kibana (http://src.dominio.com::8081)
Es importante que prepares un directorio persistente para tus datos de elasticsearch, en mi caso lo he dejado en el siguiente directorio:
- "/Apps/data/log/elasticsearch/data/:/data"
Directorio persistente para configurar el Timezone. Crear el directorio /Apps/data/tz y dentro de él crear el fichero timezone. Luego montarlo con -v o con fig.yml
Montar:
"/Apps/data/tz:/config/tz"
Preparar:
$ echo "Europe/Madrid" > /config/tz/timezone