Graylog permet de stocker tout type de messages, qu’il s’agisse de logs serveurs, de journaux web ou de logs applicatifs. Ces derniers sont important car ils permettent de savoir ce qu’il se passe dans le programme. Les logs peuvent être de type DEBUG pour aider les développeurs, de type INFO lorsqu’il est nécessaire de conserver un historique des actions ou bien ERROR / CRITICAL si un problème important survient et impacte le bon fonctionnement.
L’objectif est bien de conserver et centraliser ces informations sur une plateforme dédiée comme Graylog. Pour cela, vous devrez :
- Configurer Graylog pour accepter les logs
- Configurer votre applicatif pour envoyer les logs vers Graylog
Avant cela, vous allez devoir choisir un protocole pour l’envoi des logs :
- GELF : il s’agit d’un format conçu par Graylog pour ne pas avoir les limitations du syslog
- RAW/plaintext
- Syslog
Personnellement, je vous conseille d’utiliser le format GELF qui est très bien adapté aux logs applicatifs. Il permet en effet d’envoyer en plus d’un message horodaté des informations complémentaires sous forme de clé/valeurs. Cela peut être des informations sur le client, sur l’environnement, … (idClient=5, plateforme=préproduction, … par exemple). Ces éléments seront ensuite disponible sur l’affichage des logs mais aussi dans la recherche pour ne récupérer que les logs générés par un client donné.
Configurer Graylog pour accepter les logs
Connectez-vous sur Graylog et allez dans le menu « System/Inputs » puis « Inputs ». Sélectionnez ensuite le flux d’entrée de log à créer (GELF UDP par exemple) puis cliquez sur « Launch new input ». Vous devrez renseigner quelques informations comme un nom, le port, … Une fois l’input créé, pensez à cliquer sur le bouton « Start input ».

Configurer votre applicatif pour envoyer les logs vers Graylog
Maintenant il va falloir permettre à votre logiciel d’envoyer les logs vers l’input précédemment créé. Pour cela, plusieurs solutions existent :
Si les développeurs en ont la possibilité, l’idéal est d’utiliser une librairie GELF qui permettra d’envoyer directement les logs vers Graylog. Il en existe pour tous les langages : java, php, node, ruby, … Une liste complète est disponible sur le marketplace de Graylog.
Par exemple pour un projet en Java utilisant logback comme framework de log, il suffit d’ajouter une dépendance à logback-gelf et d’ajouter la configuration suivante :
<configuration>
<appender name="GELF UDP APPENDER" class="me.moocar.logbackgelf.GelfUDPAppender">
<remoteHost>somehost.com</remoteHost>
<encoder class="me.moocar.logbackgelf.GZIPEncoder">
<layout class="me.moocar.logbackgelf.GelfLayout"/>
</encoder>
</appender>
<root level="debug">
<appender-ref ref="GELF UDP APPENDER" />
</root>
</configuration>
Il peut être intéressant de configurer une écriture dans un log fichier en local avec un historique des logs très court et d’envoyer l’ensemble des logs vers votre serveur Graylog.
Dans le cas ou vous ne souhaitez pas utiliser de librairie GELF ou que ce n’est pas possible, vous pouvez conserver l’écriture des logs dans un fichier texte et utiliser un outil comme logstash ou Graylog Collector pour lire ce fichier et envoyer chaque ligne vers votre serveur Graylog.