RousselTMLEARNING

TP · Logstash: del descubrimiento a la experiencia

Mi primer pipeline

Lo que vas a aprender en este TP
  • Instalar Logstash
  • Construir un pipeline
  • usar el input file
  • Combinar diferentes filtros
  • usar el output file
  • usar condiciones
  • usar variables

Introducción #

Lo que vas a aprender en esta sección
  • Instalar Logstash
  • Construir un pipeline
  • usar el input file
  • Combinar diferentes filtros
  • usar el output file
  • usar condiciones
  • usar variables

Este taller tiene como objetivo enseñarle a construir un pipeline sencillo que permita leer un archivo de log, procesarlo y escribir su salida en un nuevo archivo

Requisitos previos #

Debe disponer de una máquina Linux con Logstash instalado. Si no dispone de una máquina o entorno de prueba, le invitamos a realizar primero el taller de instalación de Logstash. Si está realizando el taller sobre el entorno de pruebas, puede pedirle a Vagrant que instale Logstash:
export DEPLOY_LOGSTASH=true; vagrant up

Configuración de las entradas #

Debe crear un archivo en /etc/logstash/conf.d llamado "0-input-file-nginx-access.conf".
ATENCIÓN: en este taller le hemos indicado el nombre del archivo de configuración (0-input-file-nginx-access.conf), pero en la empresa deberá definir su propia convención de nombres adaptada a su contexto.
  1. Lectura de un archivo

    En este archivo, debe añadir la configuración de logstash para leer el contenido del archivo "/var/log/rousseltm/nginx-access.log". Si usa nuestro entorno de pruebas Vagrant, los archivos de log ya estarán presentes en la VM en la carpeta /var/log/rousseltm. En caso contrario, deberá copiarlos manualmente: .
    Debe añadir un type para este archivo con el valor 'nginx_access'.

Configuración de los filtros #

Debe crear un segundo archivo llamado "100-filter-nginx-access.conf".

  1. Extracción de datos

    Debe identificar el filtro más adecuado para un archivo plano y establecer la configuración que permita extraer los campos del archivo de log leído previamente, sabiendo que este archivo tiene un único formato de log

  2. Cambio de tipo

    Queremos convertir el campo "http_code" a entero. De hecho, suele haber operaciones aritméticas sobre este campo al hacer visualizaciones (paneles, alertas...). Por ejemplo, mostrar todos los códigos entre 200 y 205.

  3. Ajuste de fecha

    Como habrá notado en el archivo de log proporcionado, los logs no están ordenados. Si no ajusta el campo '@timestamp', tendrá los logs ordenados por aparición en el archivo en lugar de por fecha de generación de la línea de log.

  4. Eliminación de un campo

    Queremos eliminar los campos
    • event.original
    • message: ya que hemos extraído la información que nos interesa
    . Habrá que usar métodos diferentes para eliminarlos.
    ATENCIÓN: es una buena práctica para ganar espacio de almacenamiento y rendimiento.
    En otros talleres veremos que solo habrá que eliminar 'message' cuando no haya errores de filtro.

Configuración de las salidas #

Debe crear un archivo en /etc/logstash/conf.d llamado "200-output-file-nginx-access.conf".

  1. Escritura en un archivo

    En este archivo, deberá añadir la configuración de logstash para que escriba nuestro log procesado en el archivo "/var/log/rousseltm/parsed/TYPE.json"

Nivel de dificultad : ●●○○○ (2/5)

Glossaire de la formation

Observabilidad

La capacidad de conocer el estado interno de un sistema a partir de los datos que emite.Estos datos se clasifican en 3 pilares: logs (registros)métric...

Elastic Common Schema (ECS)

Una especificación de código abierto que permite estructurar sus datos de manera homogénea en el ecosistema Elastic.

Logstash

Motor de recopilación de datos que permite procesar, enriquecer y transformar registros y otros eventos antes de indexarlos.

Access Log (Registro de acceso)

Archivo de registro que guarda las solicitudes procesadas por un servidor web (Apache, Nginx, Lighttpd, etc.). Permite rastrear la actividad del servi...

Client IP (IP del Cliente)

La dirección IP del usuario que realiza la solicitud hacia el servidor web. Cuando un usuario pasa por un Load Balancer o un proxy (ej: Cloudflare), l...

Timestamp (Marca de tiempo)

La fecha y la hora exactas en las que el servidor recibió la solicitud.Configuración: %t en Apache, $time_local o $time_iso8601 en Nginx.

Request (Solicitud)

La línea de solicitud inicial del cliente. Generalmente incluye el método HTTP (ej: GET), la URL solicitada y la versión del protocolo HTTP.Configurac...

Status Code (Código de estado)

El código de estado HTTP final devuelto por el servidor al cliente (ej: 200 para un éxito, 404 para recurso no encontrado).Configuración: %>s en Apach...

Size (Tamaño)

El volumen de datos devuelto al cliente, medido en bytes (generalmente sin los encabezados HTTP).Configuración: %b u %O en Apache, $body_bytes_sent en...

Referrer (Referente)

La URL de la página web desde la que el cliente hizo clic o siguió un enlace para acceder al recurso actual.Configuración: %{Referer}i en Apache, $htt...

User-Agent

La información de identificación proporcionada por el cliente sobre su navegador, su sistema operativo y su dispositivo. Su estructura estándar a menu...

Response Time (Tiempo de respuesta)

El tiempo total que tarda el servidor en procesar la solicitud y devolver la respuesta al cliente.Configuración: %D (microsegundos) o %T (segundos) en...

Articles recommandés

Grafana Alloy: Perfilado Continuo con Pyroscope

Descubra cómo configurar el perfilado continuo (Continuous Profiling) en sus entornos utilizando ...