Graylog: Choisir les types d'entrée

Comment choisir le bon type d'entrée Graylog

👋 Bienvenue sur la documentation de Stackhero !

Stackhero propose une solution Graylog cloud prête à l'emploi qui offre de nombreux avantages, notamment :

  • Serveur SMTP d'e-mail dédié et illimité inclus.
  • Mises à jour simplifiées en un clic.
  • Nom de domaine personnalisable sécurisé par HTTPS (par exemple, https://logs.votre-entreprise.com).
  • Performance optimale et sécurité renforcée grâce à une VM privée et dédiée.

Gagnez du temps et simplifiez-vous la vie : il suffit de 5 minutes pour essayer la solution Graylog cloud hosting de Stackhero !

Graylog propose différents types d'entrées. Ces entrées vous permettent d'envoyer des logs vers le serveur Graylog ou de permettre à Graylog de récupérer des logs depuis une autre source.

Dans la grande majorité des cas, vous souhaiterez envoyer des données depuis une application ou un équipement vers le serveur Graylog. Nous n'aborderons pas ici les cas avancés où Graylog doit aller chercher les logs ailleurs. Toutefois, si c'est ce que vous souhaitez faire, rassurez-vous, c'est très simple à mettre en place.

Pour choisir le type d'entrée le plus adapté, il faut d'abord déterminer le format de log que vous souhaitez envoyer à Graylog. Nous recommandons d'utiliser le format GELF, comme expliqué ci-dessous.

Ensuite, il faudra choisir le protocole : UDP ou TCP.

La première étape consiste à choisir le format de vos messages de log. Trois options principales existent : RAW/Plaintext, Syslog ou GELF.

C'est le format le plus simple. Il fonctionne avec n'importe quel système car il envoie un message en texte brut. Il est très facile à utiliser et idéal pour des tests rapides, comme l'envoi d'un message avec l'utilitaire netcat.

Pour tester, vous pouvez créer une entrée "Raw/Plaintext UDP" puis envoyer un log de test avec l'une des commandes suivantes :

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

C'est très simple, n'est-ce pas ? Cependant, comme il s'agit d'un format basique, vous serez rapidement limité. Nous déconseillons donc de l'utiliser au-delà de simples tests.

C'est un format largement utilisé pour stocker et transmettre des logs dans les environnements serveurs. On le retrouve sous Linux, Windows, *BSD et d'autres systèmes d'exploitation.

Si vous utilisez Syslog, Rsyslog ou un service compatible et souhaitez envoyer des logs d'un serveur vers Graylog, l'entrée syslog est l'option la plus simple.

Cependant, comme GELF est plus puissant, si vous pouvez envoyer des messages au format GELF, nous vous recommandons de le faire, comme expliqué ci-dessous.

Notez que le format syslog est limité à 1024 caractères.

GELF signifie "Graylog Extended Log Format". Ce format a été créé par Graylog et est aujourd'hui largement adopté par de nombreux produits, devenant ainsi un standard.

Le format GELF est puissant car il permet d'envoyer des logs de façon structurée. La journalisation structurée permet de transmettre plusieurs champs et valeurs, au lieu d'un simple message texte non structuré. Cela facilite l'analyse et la recherche d'informations par Graylog.

Par exemple, si vous souhaitez envoyer un log contenant une adresse IP et un type de requête, vous pouvez transmettre un message avec deux champs nommés ip et request_type. Côté Graylog, vous pourrez ensuite effectuer des recherches directement sur ces champs, comme rechercher toutes les requêtes avec la requête : request_type: POST.

GELF est basé sur JSON et doit inclure au minimum les champs version, host et short_message. Vous pouvez ensuite ajouter d'autres champs, qui doivent commencer par un underscore (_).

Par exemple, un message simple avec un champ supplémentaire nommé device_id ressemble à ceci :

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

Vous pourrez ensuite rechercher tous les messages provenant du device "abcd" sur Graylog avec la requête : device_id: abcd.

Pour plus de détails sur GELF, vous pouvez consulter la spécification officielle ici : https://docs.graylog.org/en/4.0/pages/gelf.html.

Si vous souhaitez envoyer des logs depuis des serveurs ou des applications, vous pouvez utiliser l'une des nombreuses librairies disponibles qui créent et envoient automatiquement vos messages. Des exemples sont disponibles pour Node.js, .NET et Python.

Une fois le format choisi (nous espérons que vous avez opté pour GELF !), il faut sélectionner le protocole de communication entre TCP et UDP.

Le protocole UDP est très simple. Votre application envoie le message au serveur sans attendre de confirmation de réception. Il n'y a pas de dialogue entre le client et le serveur, ce qui signifie que le serveur ne confirme pas la réception du message.

L'avantage de cette approche est que si votre serveur Graylog est lent ou indisponible, cela n'impactera pas les performances de votre application. L'inconvénient est que vous ne pouvez pas garantir que chaque log envoyé par votre application arrivera bien au serveur. De plus, le chiffrement n'est pas disponible avec UDP.

  1. N'impacte pas votre application si Graylog est lent ou indisponible.
  1. Certains messages peuvent être perdus.
  2. Le chiffrement n'est pas disponible.
  3. La taille des messages est limitée à 8192 octets.

Le protocole TCP, contrairement à UDP, permet un échange d'informations entre votre application et Graylog. Cela signifie que vous recevez une confirmation que le message a bien été reçu par Graylog.

L'intérêt de TCP est que vous pouvez renvoyer un message s'il n'est pas reçu par Graylog (par exemple, si le serveur est indisponible). L'inconvénient est que si Graylog est lent ou ne répond pas, votre application doit attendre une réponse ou un timeout, ce qui peut la ralentir.

Autre avantage, vous pouvez chiffrer vos communications avec TLS (aussi appelé SSL).

  • Garantit que le message a bien été reçu.
  • Le chiffrement est disponible (TLS).
  • Pas de limitation de taille de message
  • Peut ralentir l'expéditeur si Graylog répond lentement ou est indisponible.

Nous espérons que ce guide vous a apporté toutes les informations nécessaires pour choisir le meilleur format et protocole pour envoyer vos logs vers Graylog.

N'oubliez pas, vous pouvez faire fonctionner plusieurs entrées en même temps en utilisant des ports différents pour chacune. Par exemple, vous pouvez avoir une entrée "syslog UDP" sur le port 514 et une entrée "GELF TCP" sur le port 12201.