Instalación y configuración de ELK (ElasticSearch, Logstash y Kibana Software) en Debian Jessie

Buenos días | tardes | noches, hoy os vengo a mostrar los pasos para poder instalar Kibana Software, un plugin para Elasticsearch, ElasticSearch y Logstash

Comenzaremos desde cero, instalando el software necesario para proceder a la instalación, configuración y uso de Kibana Software.

¿Qué es Kibana?

Kibana Software es un plugin/extensión de ElasticSearch, el cual nos permite visualizar y buscar registros de nuestros logs de una manera visualmente atractiva, fácil y semi-intuitiva al usuario/administrador.

¿Qué es ElasticSearch?

ElasticSeach es un servidor de búsquedas el cuál nos permite buscar rápidamente gracias a su sintaxis basada en Lucene. La sintaxis de su contenido referente a documentos está en formato JSON, cómodo a la hora de buscar.

¿Qué es Logstash?

Logstash es una herramienta de centralizado de logs el cual nos permite realizar búsquedas en un mismo fichero y nos ahorra el tener que estar mirando el contenido de cada uno de ellos por separado.

Software necesario antes de su instalación

Antes de proceder a instalar Kibana software, deberemos de instalar Elasticsearch el cuál es, por así decirlo, el motor que mueve a Kibana y posteriormente procederemos a instalar y configurar Logstash.

NOTA: deberemos de instalar las versiones Elasticsearch y Kibana que estén al mismo nivel, es decir, la versión de Elasticsearch debería ser (por ejemplo) la 5.1 al igual que la versión de Kibana. En caso contrario, nos dará errores ya que no sería la configuración oficial soportada. Además la memoria RAM mínima que necesitaremos para ejecutar ElasticSearch, Kibana software y Logstash es 4GB.

Requisitos previos a la instalación de ElasticSearch, Logstash y Kibana Software.

Para que podamos ejecutar correctamente ElasticSearch deberemos de comprobar nuestra versión de Java, ya que actualmente se recomienda que tengamos la versión openjdk-8:

java -version

En mi caso, mi versión es la 7, por lo que debo de actualizarla a la versión 8. Si tenemos la versión 8, nos saltamos el siguiente paso.

Actualización de JDK-7 a JDK-8

Eliminamos los paquetes de la versión anterior:

apt purge openjdk-\*

Descargamos el paquete con extensión .tar.gz y lo instalamos (link de descarga oficial):

tar zxvf jdk-8u152-linux-x64.tar.gz

Indicamos al sistema que use dicho JDK, primero indicamos las rutas de los ficheros:

update-alternatives --install "/usr/bin/java" "java" "<ruta elegida>/jdk1.8.0_152/jre/bin/java" 1
update-alternatives --install "/usr/bin/javac" "javac" "<ruta elegida>/jdk1.8.0_152/bin/javac" 1
update-alternatives --install "/usr/bin/javaws" "javaws" "<ruta elegida>/jdk1.8.0_152/jre/bin/javaws" 1

Ahora indicamos la configuración predeterminada que tendrá java:

update-alternatives --set java <ruta elegida>/jdk1.8.0_152/jre/bin/java
update-alternatives --set javac <ruta elegida>/jdk1.8.0_152/bin/javac
update-alternatives --set javaws <ruta elegida>/jdk1.8.0_152/jre/bin/javaws

Si comprobamos de nuevo la versión actual de jdk, nos saldrá la 8:

java -version
java version "1.8.0_152"
Java(TM) SE Runtime Environment (build 1.8.0_152-b16)
Java HotSpot(TM) 64-Bit Server VM (build 25.152-b16, mixed mode)

Instalación de ElasticSearch

Nos descargamos cómo usuario normal el paquete de la versión 5.6.4 (la cual también será la versión de Kibana):

curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6.4.tar.gz

Descomprimos el paquete descargado:

tar -xvf elasticsearch-5.6.4.tar.gz

Nos vamos al subdirectorio /bin:

cd elasticsearch-5.6.4/bin/

Arrancamos el servicio de ElasticSearch (pero por ahora bastará con que esté parado):

./elasticsearch

Ya tenemos ejecutandose ElasticSearch, si queréis saber si está en funcionamiento, acceder a la url http://localhost:9200 y os saldrá un JSON parecido a este:

{
 "name" : "3QgzSR_",
 "cluster_name" : "elasticsearch",
 "cluster_uuid" : "cH8_cDckSpGh1giGdG58Lg",
 "version" : {
 "number" : "5.6.4",
 "build_hash" : "8bbedf5",
 "build_date" : "2017-10-31T18:55:38.105Z",
 "build_snapshot" : false,
 "lucene_version" : "6.6.1"
 },
 "tagline" : "You Know, for Search"
 }

Instalación de Kibana

Antes de proceder a la instalación de Kibana Software, debemos de importar su clave PGP, para ello descargamos su clave pública y la instalamos con:

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

Instalamos el paquete apt-transport-https :

apt install apt-transport-https

Editamos los repositorios y añadimos el siguiente:

#Kibana Software
 deb https://artifacts.elastic.co/packages/5.x/apt stable main

Actualizamos la lista de repositorios e instalamos el paquete de Kibana:

apt update
apt install kibana

Arrancamos el servicio de kibana:

/etc/init.d/kibana start

Accedemos via web a Kibana:

http://localhost:5601

k1

Cómo veis, no hemos inicializado ElasticSearch, por lo que debemos de iniciarlo y después actualizamos Kibana. Instantáneamente nos pedirá que creemos un patrón de índice.

Instalación y configuración de Logstash

Procedemos a instalar Logstash utilizando los repositorios anteriormente añadidos ya que usan el mismo, para ello tan sólo debemos hacer:

apt install logstash

Una vez instalado, creamos el fichero que nos servirá de índice para realizar las consultas desde Kibana, para ello nos vamos a /etc/logstash/conf.d y creamos el fichero prueba.conf (puede ser cualquier nombre) con el siguiente contenido:

# Indicamos el log que queremos introducir en el índice
 input {
 file {
 path => "/var/log/syslog"
 start_position => "beginning"
 }
 }

# Configuramos el filtro que tendrá y será visto por Kibana
filter {
 if [type] == "syslog" {
 grok {
 match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
 add_field => [ "received_at", "%{@timestamp}" ]
 add_field => [ "received_from", "%{host}" ]
 }
 syslog_pri { }
 date {
 match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]
 }
 }
}

# Definimos la salida así cómo la acción a realizar cuando los datos sean introducidos
 output {
 elasticsearch {
 action => "index"
 index => "<nombre a elegir>"
 workers => 1
 }
 stdout {}
 }

Una vez creado el fichero, lo cargamos gracias al script de logstash (ubicado en /usr/share/logstash/bin)

./logstash -f /etc/logstash/conf.d/prueba.conf (en mi caso)

Tan sólo nos falta por arrancar los servicios de Kibana y ElasticSearch y una vez hecho, nos vamos al navegador y entramos en http://localhost:5601

Inmediatamente nos pedirá crear un patrón, indicamos el anteriormente definido en el fichero creado en la ruta de logstash, en mi caso lo llamé Stock.

k3

Para saber qué patrón de búsqueda tenemos, realizamos una consulta con CURL:

curl 'localhost:9200/_cat/indices?v'
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
yellow open .kibana JhM3UF1wRam-PEtCFgOkgg 1 1 1 0 9.5kb 9.5kb
yellow open stock 9TBy0aF-SQmMjYeBNWXs8g 5 1 7761 0 2.7mb 2.7mb
yellow open twitter V8zSsnk5QAuIwYwWxY6rWA 3 2 0 0 573b 573b

Una vez agregado, podremos ir al apartado Discover y ver que la vista se nos actualiza.

k4

Podemos crear índices desde la interfaz web de Kibana, yendo a Devtools y siguiendo la sintaxis de su web oficial (No profundizaré en ello ya que es largo de explicar, pero se aprende rápido)

Ahora podemos realizar consultas a nuestro índice siempre y cuando estén en el log de syslog. Igualmente la misma interfaz nos da un pequeño tutorial de cómo realizar consultas.

k5

Podemos filtrar por campos, palabras, tiempo, etc. Incluso si realizamos una consulta que nos guste y veamos que nos pueda servir en un futuro, podemos guardarla.

En el apartado Visualize podemos realizar vistas de gráficas específicas o conjuntas de los campos de nuestros índices.

k6

Si tenemos una o varias visualizaciones, podremos verlas, todas ellas, desde el apartado Dashboard a modo de miniatura

k7

En mi opinión, estas tres herramientas combinadas tienen un gran potencial a la hora de ayudarnos en la identificación de problemas y sus orígenes.

 

Y eso es todo, espero que os haya servido para tener una ligera idea de lo que pueden hacer estas tres herramientas juntas. Ahora es vuestro turno de profundizar en ellas, sacarles el máximo provecho que podáis y disfrutéis de ello.

Nos vemos en la próxima entrada!

Un comentario sobre “Instalación y configuración de ELK (ElasticSearch, Logstash y Kibana Software) en Debian Jessie

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.