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:
Estos son los requisitos previos para este tutorial:
Logsasth:
Grafana:
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.
Me complace anunciar la creación de esta útil herramienta (SquidStats), para el análisis y monitoreo…
La inteligencia artificial está revolucionando las industrias al automatizar tareas, predecir patrones y permitiendo tomar…
Uno de los grandes retos al que nos podemos enfrentar cuando una aplicación crece, es…
Percona Monitoring and Management (PMM) es una herramienta de código abierto para la supervisión y…
Qué es lo que deseo hacer en este capítulo? Básicamente un sonoff, quiero encender/apagar las…
Hace algunos meses estoy escuchando hablar del proyecto Home Assistant (HA). En palabras literales del…