Logstash
Logstash es un marco de procesamiento de eventos. Con Logstach puedes importar datos de distintos tipos de marcos y orígenes de entrada. En el siguiente paso puedes filtrar y modificar los datos y, en el paso final, puedes exportarlos a diferentes formatos y marcos. Por ejemplo, puedes leer los datos desde un marco como Beats y reenviarlos a Elasticsearch para almacenamiento y procesamiento adicional. Dentro de Logstash puedes procesar, filtrar y mapear los distintos formatos de entrada y salida:

Preparación de Logstash
Instalar JDK
Descargar Logstash *.zip
Instalar Postman
Instalar un IDE, p. ej. Visual Studio Code
Instalar XAMPP
Arquitectura de alto nivel de Logstash

Utiliza el siguiente comando para ejecutar Logstash con una configuración de pipeline en CMD. La pipeline escuchará stdin y enviará los datos a stdout:
Escribe, por ejemplo, “Hello World” en tu CMD para ver el stdout correspondiente.

Crea un nuevo archivo de configuración de pipeline:

Ejecuta Logstash usando el archivo de configuración de la pipeline. Recarga la pipeline después de cada modificación.
Agrega soporte de entrada JSON a la pipeline. El CMD no soporta JSON en varias líneas.
Inserta un JSON en una sola línea:

Envía una nueva solicitud JSON a través de Postman (soporte para JSON multilínea). Verás la respuesta en tu stdout de Logstash.

Escribe el stdout en un archivo externo:
También da soporte a peticiones HTTP entrantes:
Usa el plugin de filtro “mutate” de la pipeline para convertir datos entrantes, p. ej. String a Integer. Cambiemos el PLZ de String a Integer:

Consulta el siguiente enlace para más plugins de filtro mutate:
https://www.elastic.co/guide/en/logstash/current/plugins-filters-mutate.html
Apache
A continuación quiero leer los logs de Apache en lugar de generarlos yo mismo.
Inicia Apache con XAMPP para procesar los logs de Apache mediante Logstash:

Vamos a procesar el archivo access.log dentro de la carpeta de logs de Apache:
C:\xampp\apache\logs\access.log
Creamos y ejecutamos un nuevo archivo de pipeline llamado pipelineApache.conf
Esta pipeline puede leer el access.log de Apache
Ejecuta el nuevo archivo pipelineApache.conf:
Grok Project
Usa plugins de pipeline predefinidos para manejar, p. ej., el access.log de Apache mediante el proyecto de GitHub “logstash-patterns-core”, que emplea el filtro de patrones Grok.

Enviaré la siguiente solicitud vía Postman a la nueva pipeline para probar el filtro grok:

La respuesta filtrada con grok (stdout) está en el lado izquierdo. En el lado derecho puedes ver el stdout sin usar grok:

Beats
Hasta ahora hemos usado la entrada de archivos (file input) de Logstash para leer los logs o datos de entrada:
Ahora vamos a usar agentes Beats para recopilar los datos necesarios, p. ej. filebeat para recoger archivos de log y enviar los datos a las fuentes de salida o para procesamiento adicional, p. ej. Logstash.

Consulta el siguiente enlace para obtener más información sobre los distintos tipos de Beats: https://www.elastic.co/guide/en/beats/libbeat/current/beats-reference.html
Usando Beats moveremos todo el proceso de gestión de entradas fuera de Logstash. A partir de ahora Logstash solo se usará para el procesamiento de datos, p. ej. extracción y manipulación. Usando Beats podemos mover Logstash a otro servidor (arquitectura distribuida).

Preparación
En la configuración predeterminada, Filebeat transfiere los datos a Elasticsearch. En su lugar, queremos enviarlos a Logstash:

Redirige los logs a Logstash en lugar de Elasticsearch:

Más cambios en filebeat.yml:
Verifica tus modificaciones:
Apache
En el siguiente paso vamos a configurar Filebeat para obtener el access.log de Apache. Primero, necesitamos activar el soporte de Apache en Filebeat:

Revisa tu carpeta local para todos los módulos disponibles:

Recuerda que estamos usando Apache de XAMPP. La ruta predeterminada de Apache en la configuración de Beats NO funciona para la instalación de XAMPP:

NO es posible cambiar la ruta predeterminada del access.log en el archivo anterior (manifest.yml). En su lugar, necesitamos abrir el siguiente apache.yml para anular la ruta predeterminada del archivo access.log de Apache. También hemos habilitado el soporte para access.log en el mismo paso:

Preparación de Logstash
El siguiente paso es configurar la pipeline de Logstash para permitir y procesar los datos de log entrantes (access.log de Apache) desde Beats. Encontrarás la lista de todas las pipelines que se cargarán en pipelines.yml:

Agrega las siguientes líneas a pipelines.yml para cargar tu propio archivo de configuración de pipeline de Logstash:

Iniciando Beats
Ahora Filebeat va a reenviar el access.log de Apache a Logstash.

Desactivemos el mensaje “Non-zero metrics in the last 30s” que me resulta molesto.
Agrega la siguiente línea a filebeat.yml:
La nueva pipeline de Logstash “pipelineApache.conf” se modificará como en el siguiente ejemplo:
Inicia la nueva pipeline (pipelineApache.conf):
Logstash ahora está escuchando los datos de logs entrantes de Apache desde Beats:

Abre una de tus páginas de Apache para transferir el nuevo access log desde Filebeat a Logstash:

Actualmente solo necesitas estos dos comandos para iniciar Beats y Logstash:
1. Ejecuta Filebeat como administrador en CMD: C:\>filebeat -e -c “C:/tools/filebeat/filebeat.yml”
2. Ejecuta Logstash: C:\tools\logstash-8.3.2\bin>logstash -f “C:\tools\logstash_pipelines\pipelineApache.conf” –config.reload.automatic
Elasticsearch
Ejecuta Elasticsearch
Este comando también generará todas las credenciales necesarias. El token de Kibana solo estará disponible durante 30 min.

Kibana
Ejecuta Kibana

Abre Kibana e introduce el token de Kibana generado por Elasticsearch:



Las credenciales han sido generadas por Elasticsearch:
Al finalizar la configuración serás dirigido a la página de bienvenida:

Detén Kibana y Elasticsearch. Necesitamos configurar ambas herramientas en los siguientes pasos.
Elasticsearch Configuration
Abre el archivo de configuración de Elasticsearch (elasticsearch.yml) y desactiva todas las funciones de seguridad para pruebas locales:

Reinicia Elasticsearch y comprueba si está disponible:

continuará
