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 tipos de entrada. Estas entradas le permiten enviar logs al servidor Graylog o permitir que Graylog recupere logs desde otra fuente.

En casi todos los casos, querrá enviar datos desde una aplicación o un dispositivo al servidor Graylog. No trataremos aquí los casos avanzados en los que desea que Graylog recupere logs desde otro origen. Sin embargo, si desea hacerlo, puede estar tranquilo: es muy sencillo de configurar.

Para elegir el tipo de entrada más adecuado, primero debe decidir el formato de log que desea enviar a Graylog. Recomendamos utilizar el formato GELF, como se detalla a continuación.

A continuación, tendrá que 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 sencillo. Funciona con cualquier sistema porque envía un mensaje en texto plano. Es muy fácil de usar y perfecto para pruebas iniciales, como enviar un mensaje utilizando la utilidad netcat.

Para probarlo, puede crear una entrada "Raw/Plaintext UDP" y luego enviar un log de prueba con 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 sencillo, ¿verdad? Sin embargo, al ser un formato básico, pronto encontrará limitaciones. Por ello, desaconsejamos su uso más allá de pruebas simples.

Este es un formato ampliamente utilizado para almacenar y enviar logs en entornos de servidores. Se encuentra en Linux, Windows, *BSD y otros sistemas operativos.

Si utiliza 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, convirtiéndose en un estándar.

El formato GELF es potente porque permite enviar logs de forma estructurada. El registro estructurado permite transmitir varios campos y valores en lugar de un único mensaje de texto sin estructurar. 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 petición, puede enviar un mensaje con dos campos llamados ip y request_type. En Graylog, podrá buscar directamente en estos campos, como por ejemplo todas las peticiones con la consulta: request_type: POST.

GELF está basado en JSON y debe incluir al menos los campos version, host y short_message. Puede añadir campos adicionales, que deben ir precedidos de un guion bajo (_).

Por ejemplo, un mensaje sencillo con un campo adicional llamado device_id tendría este aspecto:

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

A continuación, podrá buscar todos los mensajes procedentes del dispositivo "abcd" en Graylog utilizando 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 utilizar alguna de las muchas librerías disponibles que crean y envían automáticamente sus mensajes. Hay ejemplos disponibles para Node.js, .NET y Python.

Una vez 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 sencillo. Su aplicación envía el mensaje al servidor sin requerir 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 está lento o no disponible, no afectará al rendimiento de su aplicación. El inconveniente es que no puede estar seguro de que todos los logs enviados desde su aplicación lleguen al servidor. Además, la encriptación no está disponible con UDP.

  1. No afecta a su aplicación si Graylog está lento o no disponible.
  1. Algunos mensajes pueden perderse.
  2. No hay encriptación 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). El inconveniente es que si Graylog está lento o no responde, su aplicación debe esperar una respuesta o un timeout, lo que puede ralentizarla.

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

  • Garantiza que el mensaje ha sido recibido.
  • La encriptación está disponible (TLS).
  • Sin limitación de tamaño de mensaje
  • Puede ralentizar el envío si Graylog responde lentamente 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 que puede ejecutar varias entradas al mismo tiempo utilizando diferentes puertos para cada una. Por ejemplo, puede tener una entrada "syslog UDP" en el puerto 514 junto con una entrada "GELF TCP" en el puerto 12201.