Clúster Elasticsearch. Logstash y Grafana. Análisis de logs. 2da Parte.

En este segundo tutorial prepararemos las condiciones para procesar los logs de los servidores que queremos analizar y para ello nos centraremos en la instalación y configuración inicial de Logstash y porteriormente de Grafana.

Nuestra Configuración:

  1. Servidor Logstash. Se encargará de filtrar y generar los campos necesarios para generar nuestros dashboards porsteriormente.
  2. Servidor Grafana. Nos permitirá crear los dashboard para mostrar nuestros datos recopilados en Elasticsearch.

Estos son los requisitos previos para este tutorial:

  • Debian 9: la versión más reciente

Logsasth:

  • 2 GB de RAM
  • Java 1.8.x
  • Logstash 5.4.0
  • curl

Grafana:

  • 2 GB de RAM
  • Grafana 4.6.3

Ejecute una actualización del sistema operativo para asegurarse de estar obteniendo las aplicaciones más recientes.

Nota: En nuestro caso usamos servidores virtuales LXC (linux containers) en Proxmox 5.1.

Escenario:

logstash.dominio.com ip: 192.168.1.166
grafana.dominio.com ip: 192.168.1.167

En caso que no tengamos server DNS que nos resuelva estos equipos o que falle nuestro servidor DNS siempre es mejor declarar estos equipos en /etc/hosts para que nuestro clúster no tenga fallas o simplemente usar números ips en nuestras configuraciones.

#nano /etc/hosts

Tanto en el servidor Logstash como en el Grafana agregamos los nodos del cluster elasticsearch.

192.168.1.160 es-master-01.dominio.com es-master-01
192.168.1.161 es-master-02.dominio.com es-master-02
192.168.1.162 es-master-03.dominio.com es-master-03
192.168.1.163 es-data-01.dominio.com es-data-01
192.168.1.164 es-data-02.dominio.com es-data-02
192.168.1.165 es-data-03.dominio.com es-data-03

Empecemos por configurar el servidor logstash.

Instalar Java 1.8.

Haremos la instalación de Java de forma manual. Nos descargamos del sitio de oracle el JDK o el JRE actual y procedemos de la siguente manera.
El directorio /opt está reservado para todos los paquetes de software y complementos que no forman parte de la instalación predeterminada. Crea un directorio para tu instalación JDK(JRE):

JRE:

#mkdir /opt/jre

y extrae java en el directorio:

#tar -zxf jre-8u131-linux-x64.tar.gz -C /opt/jre

Verifique que el archivo se haya extraído en el directorio /opt/jdk o /opt/jre.

#ls /opt/jre

Configuración de la JVM predeterminada. En nuestro caso, el ejecutable de Java se encuentra en /opt/jdk/jdk1.8.0_131/bin/java o en /opt/jre/jre1.8.0_131/bin/java dependiendo de lo que instalamos inicialmente. Para configurarlo como la JVM predeterminada en su máquina, ejecute:

#update-alternatives --install /usr/bin/java java /opt/jre/jre1.8.0_131/bin/java 100

JDK:

#mkdir /opt/jdk

#tar -zxf jdk-8u131-linux-x64.tar.gz -C /opt/jdk

#ls /opt/jdk

#update-alternatives --install /usr/bin/javac javac /opt/jdk/jdk1.8.0_131/bin/javac 100

Verificando tu instalación de java.

#java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

Nota: Sugerimos JRE en virtud de ahorrar recursos ya que JDK esta orientada para desarrollo.

Ya teniendo java instalado vamos a descargarnos el logstash

#wget -t0 -c https://artifacts.elastic.co/downloads/logstash/logstash-5.4.0.deb

Ya descargado procedemos a instalarlo.

#dpkg -i logstash-5.4.0.deb

Configuramos el servicio de logstash para que se inicie automáticamente.

#systemctl daemon-reload
#systemctl enable logstash.service

Parece que hay un pequeño bug que nos mostrará varios errores en los logs y que corregiremos antes de nada ejecutando este comando.

#touch /etc/logstash/conf.d/empty.conf

Logtash necesita un certificado SSL para poder ser verificado por los clientes que le envían información, podremos crear un certificado SSL de la siguiente manera:

#cd /etc/logstash/
#openssl req -subj /CN=dominio.com -x509 -days 3650 -batch -nodes -newkey rsa:4096 -keyout logstash.key -out logstash.crt

Donde /CN es nuestro duminio en cuestión.

La clave privada debe estar en formato PKCS8, así que la convertimos usando el siguiente comando.

#openssl pkcs8 -in logstash.key -topk8 -nocrypt -out logstash.key.pem

Reiniciamos el servicio de logstash

#service logstash restart

Vamos ahora a preparar logstash para que procese la geolocalización IP y para que en el proceso de filtrado almacene en Elasticsearch dicha geolocalización IP.
Creamos el directorio donde alojaremos la base datos

#mkdir /etc/logstash/geoip

y descargamos la base de datos

#wget -t0 -c http://geolite.maxmind.com/download/geoip/database/GeoLite2-City.tar.gz

Lo descompactamos

#tar -xf GeoLite2-City.tar.gz

Y movemos el fichero de la carpeta GeoLite2-City_(day) para /etc/logstash/geoip donde “day” es la fecha de la base en que se actualizo la base de datos.

#mv GeoLite2-City_(day)/GeoLite2-City.mmdb /etc/logstash/geoip

Ya tenemos la base de datos de geolocalización lista y logstash preparado, pero aún no esta filtrando nada y eso lo veremos en la próxima parte.

Ahora en el servidor de Grafana.

Nos descargamos la última version de grafana.

#wget -t0 -c https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana_4.6.3_amd64.deb

Y procedemos a instalarlo:
#dpkg -i grafana_4.6.3_amd64.deb

#systemctl daemon-reload
#systemctl enable grafana-server.service

Reiniciamos el servicio de grafana

#service grafana restart

Antes de iniciar Grafana por primera vez, configure el usuario administrador y la contraseña en /etc/grafana/grafana.ini. De lo contrario, la contraseña predeterminada será admin y abrimos en el navegador con la siguiente dirección http://grafana.dominio.com:3000

Nodos Master del Cluster Elasticsearch
Teniendo grafana ya funcional vamos a configurar el fichero de elasticsearch para que permita conexiones a los indices desde otra dirección ip y no solo desde localhost. Haremos lo siguiente en todos los nodos master.

#nano /etc/elasticsearch/elasticsearch.yml

Añadimos al final del fichero lo siguiente:

http.host: 0.0.0.0
http.cors.allow-origin: "*"
http.cors.enabled: true

Reiniciamos el servicio de elasticsearch.

#service elasticsearch restart

En los proximos artículos veremos como conectar grafana a elasticsearch.

(Visited 190 times, 1 visits today)

Sé el primero en comentar

Dejar una contestacion

Tu dirección de correo electrónico no será publicada.


*