GNU/Linux >> Tutoriales Linux >  >> Cent OS

Cómo ejecutar la pila ELK en Docker Container

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,

  1. Cómo instalar la pila ELK en Ubuntu 16.04
  2. 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

  1. Cómo instalar Docker en Ubuntu 16.04/15.10/14.04
  2. Cómo configurar Docker en CentOS 7/RHEL 7
  3. Cómo instalar Docker en Fedora 24 / 23
  4. 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.

  1. Cómo instalar y configurar Filebeat en Ubuntu/Debian
  2. Cómo instalar y configurar Filebeat en CentOS 7 / RHEL 7
No tiene que usar el certificado de logstash para enviar registros, no coloque una entrada de la ruta del certificado de logstash en el archivo de configuración de filebeat.

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.


Cent OS
  1. ¿Cómo ejecutar un programa dentro de un contenedor Docker?

  2. Cómo ejecutar MySQL en un contenedor Docker

  3. Cómo ejecutar un comando en un contenedor Docker en ejecución

  4. Cómo salir de un contenedor Docker

  5. ¿Cómo enviar una señal para que el programa se ejecute en un contenedor docker?

Cómo instalar ELK Stack en CentOS 7

Cómo instalar ELK Stack en CentOS 8

Cómo ejecutar PHPMyAdmin en un contenedor Docker

Cómo ejecutar Grafana en un contenedor Docker

Cómo ejecutar contenedores Docker

Cómo instalar la pila ELK en Debian 8