Graylog: Elegir tipos de entrada

Cómo elegir el tipo de entrada adecuado en Graylog

👋 ¡Bienvenido a la documentación de Stackhero!

Stackhero ofrece una solución Graylog cloud lista para usar que proporciona una serie de beneficios, incluyendo:

  • Servidor de correo electrónico SMTP ilimitado y dedicado incluido.
  • Actualizaciones sin esfuerzo con solo un clic.
  • Nombre de dominio personalizable asegurado con HTTPS (por ejemplo, https://logs.tu-empresa.com).
  • Rendimiento óptimo y seguridad robusta gracias a una VM privada y dedicada.

Ahorra tiempo y simplifica tu vida: ¡solo toma 5 minutos probar la solución de Graylog cloud hosting de Stackhero!

Graylog ofrece una variedad de entradas. Estas entradas le permiten enviar logs al servidor Graylog o habilitar que Graylog recupere logs de otra fuente.

En casi todos los casos, querrá enviar datos desde una aplicación o un dispositivo al servidor Graylog. No cubriremos los casos avanzados donde desee que Graylog recupere logs de otro lugar. Sin embargo, si desea hacerlo, tenga la seguridad de que es muy sencillo.

Para elegir el mejor tipo de entrada, primero debe decidir el formato de log que desea enviar a Graylog. Recomendamos usar el formato GELF, como se detalla a continuación.

A continuación, deberá seleccionar el protocolo: UDP o TCP.

La primera decisión es elegir el formato de sus mensajes de log. Hay tres opciones principales: RAW/Plaintext, Syslog o GELF.

Este es el formato más simple. Funciona con cualquier sistema porque envía un mensaje de texto plano completo. Es muy fácil de usar y perfecto para pruebas iniciales, como enviar un mensaje usando la utilidad netcat.

Para probarlo, puede crear una entrada "Raw/Plaintext UDP" y luego enviar un log de prueba usando una de las siguientes líneas de comando:

  1. Desde macOS: echo "Hello Graylog from UDP" | nc -u -w1 -c <XXXXXX>.stackhero-network.com 5555
  2. Desde Linux: echo "Hello Graylog from UDP" | nc -u -w1 <XXXXXX>.stackhero-network.com 5555

Es muy fácil, ¿verdad? Sin embargo, dado que es un formato básico, pronto encontrará limitaciones. Por lo tanto, desaconsejamos usarlo para más que simples pruebas.

Este es un formato bien conocido, ampliamente utilizado para almacenar y enviar logs en entornos de servidores. Puede encontrarlo en Linux, Windows y *BSD, entre otros sistemas operativos.

Si está utilizando Syslog, Rsyslog u otro servicio compatible y desea enviar logs desde un servidor a Graylog, la entrada syslog es la opción más sencilla.

Sin embargo, dado que GELF es más potente, si puede enviar mensajes en formato GELF, le recomendamos hacerlo, como se explica a continuación.

Tenga en cuenta que el formato syslog está limitado a 1024 caracteres.

GELF significa "Graylog Extended Log Format". Este formato fue creado por Graylog y se ha adoptado ampliamente en muchos productos, estableciéndose como un estándar.

El formato GELF es poderoso porque envía logs de manera estructurada. El registro estructurado le permite transmitir múltiples campos y valores en lugar de un solo mensaje de texto no estructurado. Esto facilita que Graylog analice y recupere la información.

Por ejemplo, si desea enviar un log que contenga una dirección IP y un tipo de solicitud, puede enviar un mensaje con dos campos llamados ip y request_type. En el lado de Graylog, podrá buscar directamente en estos campos, como buscar todas las solicitudes con la consulta: request_type: POST.

GELF se basa en JSON y debe incluir al menos los campos version, host y short_message. Luego puede agregar campos adicionales, que deben estar precedidos por un guion bajo (_).

Por ejemplo, un mensaje simple con un campo adicional llamado device_id se ve así:

{
  "version": "1.1",
  "host": "myIotDevice",
  "short_message": "Something is happening",
  "_device_id": "abcd"
}

Luego puede buscar todos los mensajes del dispositivo "abcd" en Graylog usando la consulta: device_id: abcd.

Para más detalles sobre GELF, puede consultar la especificación oficial aquí: https://docs.graylog.org/en/4.0/pages/gelf.html.

Si desea enviar logs desde servidores o aplicaciones, puede usar una de las muchas bibliotecas disponibles que crean y envían automáticamente sus mensajes. Hay ejemplos disponibles para Node.js, .NET y Python.

Una vez que haya seleccionado el formato apropiado (¡esperamos que haya elegido GELF!), debe elegir un protocolo de comunicación entre TCP y UDP.

El protocolo UDP es bastante simple. Su aplicación envía el mensaje al servidor sin requerir una confirmación de recepción. No hay diálogo entre el cliente y el servidor, lo que significa que el servidor no confirma que ha recibido el mensaje.

La ventaja de este enfoque es que si su servidor Graylog es lento o está caído, no afectará el rendimiento de su aplicación. La desventaja es que no puede estar seguro de que cada log enviado desde su aplicación llegue al servidor. Además, la encriptación no está disponible con UDP.

  1. No afecta su aplicación si Graylog es lento o está caído.
  1. Algunos mensajes pueden perderse.
  2. La encriptación no está disponible.
  3. El tamaño del mensaje está limitado a 8192 bytes.

El protocolo TCP, a diferencia de UDP, intercambia información entre su aplicación y Graylog. Esto significa que recibe una confirmación de que el mensaje ha sido recibido por Graylog.

La ventaja de TCP es que puede reenviar un mensaje si no es recibido por Graylog (por ejemplo, cuando el servidor está caído). La desventaja es que si Graylog es lento o no responde, su aplicación debe esperar una respuesta o un tiempo de espera, lo que puede ralentizarla potencialmente.

Otra ventaja es que puede cifrar sus comunicaciones con TLS (también conocido como SSL).

  • Asegura que el mensaje ha sido recibido.
  • La encriptación está disponible (TLS).
  • Sin limitación de tamaño de mensaje
  • Puede ralentizar al remitente si Graylog es lento para responder o está caído.

Esperamos que esta guía le haya proporcionado la información necesaria para elegir el mejor formato y protocolo para enviar sus logs a Graylog.

Recuerde, puede ejecutar múltiples entradas al mismo tiempo usando diferentes puertos para cada una. Por ejemplo, podría tener una entrada "syslog UDP" en el puerto 514 junto con una entrada "GELF TCP" en el puerto 12201.