La pila ELK se abrevia como pila de Elasticsearch, Logstash y Kibana, una pila de análisis de código abierto con todas las funciones que ayuda a analizar los datos de cualquier máquina. Se utiliza como alternativa a otro software comercial de análisis de datos como Splunk.
Espero que no necesite una introducción de la pila ELK si aún la necesita; He escrito muchos tutoriales sobre la configuración de la pila ELK en sistemas operativos Linux.
Puede seguir los tutoriales a continuación para comprender qué es ELK,
- Cómo instalar la pila ELK en Ubuntu 16.04
- Cómo instalar la pila ELK en CentOS 7/RHEL 7
En este tutorial, veremos cómo ejecutar la pila ELK en el contenedor Docker en lugar de instalarlos en el sistema operativo host.
Podemos ejecutar la pila ELK usando Docker Native CLI o Docker compose.
Requisitos previos:
Todo lo que necesita tener es la última versión de Docker instalada en su sistema. Asegúrese de que la versión de la ventana acoplable sea 1.6 y posterior, pero algunas imágenes, por ej. elasticsearch es compatible oficialmente solo con la versión 1.12.1 de Docker
- Cómo instalar Docker en Ubuntu 16.04/15.10/14.04
- Cómo configurar Docker en CentOS 7/RHEL 7
- Cómo instalar Docker en Fedora 24 / 23
Cómo instalar Docker en openSUSE
Las imágenes de Docker que estamos usando aquí son las imágenes oficiales de Elastic
Búsqueda elástica:
Para comenzar, ejecutaremos un contenedor de Elastisearch. La imagen de Elasticsearch está configurada con un volumen en /usr/share/elasticsearch/data para mantener los datos de índice persistentes. Así que use esa ruta si desea guardar los datos en un volumen montado que es /esdata.
Crear un /esdata directorio en el host de Docker.
mkdir /esdata
Ejecute el siguiente comando para crear el contenedor de Elasticsearch Docker. La ruta del host siempre aparece primero en la línea de comando y :, luego el volumen interno del contenedor.
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -v /esdata:/usr/share/elasticsearch/data elasticsearch
Usa CURL para obtener la respuesta de Elasticsearch.
curl -X GET http://localhost:9200 { "name" : "Red Skull", "cluster_name" : "elasticsearch", "version" : { "number" : "2.3.5", "build_hash" : "90f439ff60a3c0f497f91663701e64ccd01edbb4", "build_timestamp" : "2016-07-27T10:36:52Z", "build_snapshot" : false, "lucene_version" : "5.5.0" }, "tagline" : "You Know, for Search" }
Archivo de registro:
Una vez que Elasticsearch esté en funcionamiento, estaremos listos para ejecutar el contenedor de Logstash. Antes de iniciar el contenedor de Logstash, cree un archivo de configuración para recibir los registros de los latidos.
Cree el directorio y el archivo de configuración en el host de Docker.
mkdir /logstash vi /logstash/logstash.conf
El siguiente archivo de configuración es para recibir los registros con el tipo de registro "syslog ” en el puerto “5044 “y envíelos a Elasticsearch para su indexación.
input { beats { port => 5044 } } filter { if [type] == "syslog" { grok { match => { "message" => "%{SYSLOGLINE}" } } date { match => [ "timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ] } } } output { elasticsearch { hosts => ["elasticsearch:9200"] index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}" } stdout { codec => rubydebug } }
En el archivo de configuración anterior, si ve la sección de salida; El host de elasticsearch se define como elasticsearch:9200 . Puede pensar que cómo Logstash resolverá ese host para enviar registros, no se preocupe; Enlace Docker (–link ) se encargará de eso.
cd /logstash/
Cree un contenedor de Logstash emitiendo el siguiente comando.
donde,
–link elasticsearch-container-name:hostname-in-config-file
docker run -d --name logstash -p 5044:5044 --link elasticsearch:elasticsearch -v "$PWD":/logstash logstash -f /logstash/logstash.conf
Kibana:
El contenedor Kibana no requiere ninguna configuración, todo lo que tiene que hacer es vincular el contenedor Kibana Docker con el contenedor Elasticsearch.
docker run --name kibana --link elasticsearch:elasticsearch -p 5601:5601 -d kibana
Verificar:
Usuario docker ps comando para verificar si todos los contenedores se están ejecutando o no.
docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 824dc7ee3c9f kibana "/docker-entrypoint.s" About an hour ago Up About an hour 0.0.0.0:5601->5601/tcp kibana 4fa8a72c96a2 logstash "/docker-entrypoint.s" About an hour ago Up About an hour 0.0.0.0:5044->5044/tcp logstash 4ea93b1d838b elasticsearch "/docker-entrypoint.s" About an hour ago Up About an hour 0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp elasticsearch
Instalación y configuración de Beats:
Los Beats son los que recopilan y envían registros a Logstash. La instalación y configuración de beats están fuera del alcance.
- Cómo instalar y configurar Filebeat en Ubuntu/Debian
- Cómo instalar y configurar Filebeat en CentOS 7 / RHEL 7
Acceda a la interfaz de Kibana:
Si todos los contenedores funcionan como se esperaba, visite la siguiente URL para acceder a la interfaz web.
http://tu-dirección-ip:5601/Configure un índice de pulsaciones para comenzar la búsqueda de datos con Kibana.
Haga clic en Descubrir para comenzar a buscar los últimos registros de Filebeat.
Eso es todo, por ahora.