Instalación y configuración básica Elasticsearch, Logstash, Kibana y Filebeat

El presente instructivo tiene como finalidad describir de forma breve los pasos a seguir para la instalación y configuración BASICA de Elasticsearch, Logstash, Kibana y Filebeat, como elementos de análisis de logs (bitacoras).

ELK (Elasticsearch, Logstash y Kibana) son herramientas que al utilizarlas en conjunto, permite la consolodicación y análisis de bitácoras (logs) generados en múltiples servidores.

Elasticsearch es un servidor de búsqueda, el cual permite efectuar busquedas entre los datos (log) gestionados por Logstash. Logstash es una herramienta para la administración de logs. Esta herramienta se puede utilizar para recolectar, parsear y guardar los logs. Kibana es una fuente de plug-in de visualización de datos abierta para Elasticsearch.

La configuración que se presenta a continuación fue efectuada entre dos maquinas:

1.- Un (01) servidor

  • Hostname: server
  • dirección IP: 192.168.0.100

2.- Un (01) cliente

  • Hostname: cliente
  • dirección IP: 192.168.0.101

Requisitos:

  • Se debe contar con suficiente privilegios para la configuración de aplicativos

Plataforma:

  • Equipos de arquitectura 64 bits
  • Sistema operativo ‘GNU/Linux’ Debian versión 8.0 (actualmente estable)

Aplicaciones:

  • Java Oracle Versión 1.8.0_91
  • Elasticsearch Versión 2.3.3
  • Kibana versión 4.5.1
  • Logstash Versión 2.3.2-1
  • Nginx Versión 1.2.1
  • filebeat version 1.3.1

SERVIDOR:(192.168.0.100)

Agregar los siguiente repositorios:

1. Java:

root@server:/# echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main" > /etc/apt/sources.list.d/webupd8team-java.list
root@server:/# apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys EEA14886


2. Elasticsearch:

root@server:/# echo "deb http://packages.elastic.co/elasticsearch/2.x/debian stable main" > /etc/apt/sources.list.d/elasticsearch-2.x.list

Importar la llave respositorio:

root@server:/# wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | apt-key add -
OK

3. Kibana:

root@server:/# echo "deb http://packages.elastic.co/kibana/4.5/debian stable main" > /etc/apt/sources.list.d/kibana-4.5.x.list

4. Logstash:

root@server:/# echo "deb http://packages.elastic.co/logstash/2.3/debian stable main" > /etc/apt/sources.list.d/logstash-2.3.x.list

Nota: pueden tener acceso a los paquetes más reciente a través del siguiente enlace: https://www.elastic.co/downloads

Instalación y configuración

1. Actualizar repositorios:

root@server:/# aptitude update

2. Instalar Java versión 8.0:

root@server:/# aptitude install oracle-java8-installer

ELASTICSEARCH

3. Instalar elasticsearch:

root@server:/# aptitude install elasticsearch

4. Configurar elasticsearch:

root@server:/# nano /etc/elasticsearch/elasticsearch.yml

Nota: Se utiliza nano para editar el archivo, pero puede usar cualquier editor de textos

Efectuar los siguientes cambio:

 network.host: 192.168.0.100
 http.port: 9200

5. Reinciar servicio:

root@server:/# /etc/init.d/elasticsearch restart

KIBANA

6. Instalar Kibana:

root@server:/# aptitude install kibana

7. Configurar Kibana

root@server:/# nano /opt/kibana/config/kibana.yml

8. Efectuar los siguientes cambio:

 server.port: 5601
 server.host: "localhost"
 elasticsearch.url: "http://192.168.0.100:9200"

9. Reiniciar servicio kibana

root@server:/# /etc/init.d/kibana restart

10. Instalar servidor web Nginx para utilizarlo como proxy reverse en Kibana:

root@server:/# aptitude install nginx apache2-utils

11. Crear usuario para autenticar el servicio web kibana:

root@server:/# htpasswd -c /etc/nginx/htpasswd.users kibanaadmin

12. Colocar la contraseña:

 New password:
 Re-type new password:
 Adding password for user kibanaadmin

13. Configurar site de kibana en Nginx:

root@server:/# nano /etc/nginx/sites-available/default

Efectuar los siguientes cambios:

 server {
    listen 80;
    server_name localhost;

    auth_basic "Restricted Access";
    auth_basic_user_file /etc/nginx/htpasswd.users;

    location / {
        proxy_pass http://localhost:5601;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;        
    }
 }

14. Reiniciar servicio:

root@server:/# /etc/init.d/ nginx restart

15. Es éste punto puede acceder desde el navegador a Kibana:
URL: http://192.168.0.100

kibana3

16. Pantalla principal Kibana

kibana5

LOGSTASH

17. Entrar directorio donde se almancenan los certificados del servidor

root@server:/# cd /etc/pki/tls

18. Generar Certificados para conexión segura de logstash y filebeat

root@server:/etc/pki/tls# openssl req -x509 -batch -nodes -subj "/CN=server/" \
    -days 3650 -newkey rsa:2048 -keyout private/logstash-beats.key -out certs/logstash-beats.crt

Donde:

CN=server -> nombre del servidor (server)
logstash-beats.key -> nombre llave privada
logstash-beats.crt -> nombre certficado

Nota: Al culminar la operación, se debe tener dos directorios (certs y private) dentro de la ruta “/etc/pki/tls”, dentro del directorio “certs” debe estar el archivo “logstash-beats.crt” y dentro del directorio “private” debe estar el archivo logstash-beats.key

19. Instalar logstash:

root@server:/# aptitude install logstash

20. Configurar logstash:

root@server:/# nano /etc/logstash/conf.d/syslog-logstash.conf

Agregar la siguiente información:

#Secccion INPUT
input {
  beats {
    port => 5044
    ssl => true
    ssl_certificate => "/etc/pki/tls/certs/logstash-beats.crt"
    ssl_key => "/etc/pki/tls/private/logstash-beats.key"
  }
}
#Secccion FILTER
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" ]
    }
  }
}

#Secccion OUTPUT
output {
  elasticsearch {
    hosts => ["192.168.0.100:9200"]
    sniffing => true
    manage_template => false
    index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
    document_type => "%{[@metadata][type]}"
  }
}

21. Comprobar el archivo de configuración del logstash:

root@server:/# service logstash configtest
Configuration OK

22. Iniciar Logstash modo depuración
root@server:/opt/logstash/bin# ./logstash –debug -f /etc/logstash/conf.d/syslog-logstash.conf

PLANTILLAS PARA PRESENTACION

23. Descargar ejemplo de Dashboard para Kibana

root@server:/opt# curl -L -O https://download.elastic.co/beats/dashboards/beats-dashboards-1.1.0.zip

24. Descomprimir en directorio /opt

root@server:/opt# unzip beats-dashboards-1.1.0.zip

25. Entrar al directorio descomprimido:

root@server:/opt# cd beats-dashboards-1.1.0

26. Cargar el Dashboard

root@server:/opt/beats-dashboards-1.1.0#./load.sh -l http://192.168.0.100:9200
Loading dashboards to http://192.168.0.100:9200 in .kibana
Loading search Cache-transactions:
{"_index":".kibana","_type":"search","_id":"Cache-transactions","_version":1,"_shards":{"total":2,"successful":1,"failed":0},"created":true}
Loading search DB-transactions:
{"_index":".kibana","_type":"search","_id":"DB-transactions","_version":1,"_shards":{"total":2,"successful":1,"failed":0},"created":true}
Loading search Default-Search:
{"_index":".kibana","_type":"search","_id":"Default-Search","_version":1,"_shards":{"total":2,"successful":1,"failed":0},"created":true}
Loading search Errors:
{"_index":".kibana","_type":"search","_id":"Errors","_version":1,"_shards":{"total":2,"successful":1,"failed":0},"created":true}
Loading search Filesystem-stats:

27. Acceder a kibana a través del navegador y detallar los cambios:
kibana6

28. Descargar Plantilla (template) Indice de filebeat para enviar información a elasticsearch

root@server:/opt# curl -O https://gist.githubusercontent.com/thisismitch/3429023e8438cc25b86c/raw/d8c479e2a1adcea8b1fe86570e42abab0f10f364/filebeat-index-template.json
eat-index-template.json
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   991  100   991    0     0   1295      0 --:--:-- --:--:-- --:--:--  1293

29. Cargar la plantilla (template):

root@server:/opt# curl -XPUT 'http://192.168.0.100:9200/_template/filebeat?pretty' -d@filebeat-index-template.json
{
  "acknowledged" : true
}

CLIENTE:(192.168.0.101)

1. Agregar repositorio Filebeat:

root@cliente:/# echo "deb https://packages.elastic.co/beats/apt stable main" > /etc/apt/sources.list.d/beats.list

2. Importar la llave respositorio:

root@cliente:/# wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | apt-key add -
OK

3. Actualizar repositorios:

root@cliente:/# aptitude update

4. Instalar Filebeat:

root@cliente:/# aptitude install apt-transport-https filebeat

5. Configurar Filebeat:
Nota: Es importante tener cuidado al momento de editar el archivo de configuración, ya que se toma en cuenta la indexación del archivo

root@cliente:/# nano /etc/filebeat/filebeat.yml
filebeat:
  prospectors:
    -
      paths:
        - "/var/log/*.log"
      input_type: log
      document_type: syslog
      registry_file: /var/lib/filebeat/registry
# Configure what outputs to use when sending the data collected by the beat.
# Multiple outputs may be used.
output:
  logstash:
    hosts: ["server:5044"]
    bulk_max_size: 1024
    index: filebeat
    tls:
      certificate_authorities: ["/etc/pki/tls/certs/logstash-beats.crt"]

7. Verificar archivo de configuración filebeat:

root@cliente:/etc/filebeat# filebeat -configtest -e

8. Verificar que el servicio de logstash se encuentra funcionando y escuchando por el puerto 5044

root@cliente:/# nc -vv 192.168.0.100 5044
server [192.168.0.100] 5044 (?) open

6. Iniciar filebeat:

root@cliente:/# /etc/init.d/filebeat start

Nota: En caso de error, se puede ejecutar Filebeat modo depuración

root@cliente:/# filebeat -e -c /etc/filebeat/filebeat.yml -d "*"

SERVIDOR:

1. Verificar la data enviada por filebeat a elasticsearch

root@server:/# curl -XGET 'http://192.168.0.100:9200/filebeat-*/_search?pretty'

2.- Borrar la data vieja de elasticsearch

root@server:/# curl -XDELETE 'http://192.168.0.100:9200/filebeat-*'

{“acknowledged”:true}
Nota: En caso de ser necesario, se puede borrar la data almacenado en elasticsearch

ENTORNO WEB

1.- Estando en la página principal (opción Indices):

kibana6

2.- Seleccionar la opción “filebeat-*”
kibana12

3.- Estando en la pantalla de la opción “filebeat-*”
filebeat15

4.- Seleccionar la opción “Set as default index”
kibana10

5.- Por último seleccionar la opción “Discover”
kibana13

6.- Pantalla resultante
kibana11

Nota: Según la información que se está procesando, se debe esperar por la actualización del resultado

Enlace:

How to install elasticsearch logstash and kibana elk stack on ubuntu-14-04
Configuración de un entorno de prueba de ELK con Filebeat
Elasticsearch, Logstash, Kibana (ELK) Docker image documentation
Kibana
Filebeat
Logstash
monitorizacion elk elasticsearch logstash kibana
Diseño e Implementación de una solución de gestion centralizada de logs
Gestión de logs con ELK

Anuncios

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 )

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 )

Google+ photo

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

Conectando a %s