Connexion à Graylog avec Spring Boot

Connexion à Graylog avec Spring Boot

1. introduction

Graylog est un service d'agrégation de journaux. En termes simples, il est capable de collecter des millions de messages de journal provenant de plusieurs sources et de les afficher dans une seule interface.

Et, il fournit également un certain nombre d'autres fonctionnalités telles que des alertes en temps réel, des tableaux de bord avec des graphiques et des tableaux, et bien plus encore.

Dans ce didacticiel, nous allons voir comment configurer un serveur Graylog et lui envoyer des messages de journal à partir d'une application Spring Boot.

2. Mise en place de Graylog

Il existe plusieurs façons d’installer et d’exécuter Graylog. Dans ce didacticiel, nous aborderons les deux méthodes les plus rapides: Docker et Amazon Web Services.

2.1. Docker

Les commandes suivantes téléchargeront toutes les images Docker requises et ouvriront un conteneur pour chaque service:

$ docker run --name mongo -d mongo:3
$ docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
    -e ES_JAVA_OPTS="-Xms2g -Xmx4g" \
    -e "discovery.type=single-node" -e "xpack.security.enabled=false" \
    -e "bootstrap.memory_lock=true" --ulimit memlock=-1:-1 \
    -d docker.elastic.co/elasticsearch/elasticsearch:5.6.11
$ docker run --name graylog --link mongo --link elasticsearch \
    -p 9000:9000 -p 12201:12201 -p 514:514 -p 5555:5555 \
    -e GRAYLOG_WEB_ENDPOINT_URI="http://127.0.0.1:9000/api" \
    -d graylog/graylog:2.4.6-1

Le tableau de bord Graylog est maintenant disponible à l'aide de l'URLhttp://localhost:9000/ et le nom d'utilisateur et le mot de passe par défaut sont tous deuxadmin.

Bien que la configuration de Docker soit la plus simple, elle nécessite une quantité de mémoire importante. Il ne fonctionne pas non plus sur Docker pour Mac et peut donc ne pas convenir à toutes les plates-formes.

2.2. Services Web Amazon

La prochaine option la plus simple pour configurer Graylog pour les tests est Amazon Web Services. Graylog provides an official AMI that includes all the required dependencies, bien qu'il nécessite une configuration supplémentaire après l'installation.

Nous pouvons rapidement déployer une instance EC2 avec l'AMI Graylog en cliquant surhere et en sélectionnant une région. Graylog recommends using an instance with at least 4GB memory.

Une fois l’instance démarrée, nous devons SSH sur l’hôte et apporter quelques modifications. Les commandes suivantes vont configurer le service Graylog pour nous:

$ sudo graylog-ctl enforce-ssl
$ sudo graylog-ctl set-external-ip https://:443/api/
$ sudo graylog-ctl reconfigure

Nous devons également mettre à jour le groupe de sécurité créé avec l'instance EC2 pour autoriser le trafic réseau sur des ports spécifiques. Le graphique ci-dessous montre les ports et les protocoles qui doivent être activés:

image

Le tableau de bord Graylog est maintenant disponible à l'aide de l'URLhttps://<EC2 PUBLIC IP>/ et le nom d'utilisateur et le mot de passe par défaut sont tous deuxadmin.

2.3. Autres installations de graylog

Outre Docker et AWS, il existe également desGraylog packages pour divers systèmes d'exploitation. With this approach, we also have to set up an ElasticSearch and MongoDB service.

Pour cette raison, Docker et AWS sont beaucoup plus faciles à configurer, notamment à des fins de développement et de test.

3. Envoi de messages de journal

Avec Graylog en marche, nous devons maintenant configurer notre application Spring Boot pour envoyer des messages de journal au serveur Graylog.

Toute infrastructure de journalisation Java peut prendre en charge l'envoi de messages à un serveur Graylog à l'aide du protocole GELF.

3.1. Log4J

À l'heure actuelle, Log4J est le seul cadre de journalisation officiellement pris en charge. Graylog fournit un appender, disponible surMaven central.

Nous pouvons l'activer en ajoutant la dépendance Maven suivante à n'importe quel fichierpom.xml:


    org.graylog2
    gelfj
    1.1.16

Nous devons également exclure le module de démarrage de journalisation partout où nous utilisons un module de démarrage Spring Boot:


    org.springframework.boot
    spring-boot-starter-web
    
        
            org.springframework.boot
            spring-boot-starter-logging
        
    

Nous pouvons maintenant définir un nouvel appender dans notre fichierlog4j.xml:


    
    
    
    
    
    
    
    

Cela configurera tous les messages de journal de niveau INFO ou supérieur pour qu’ils soient envoyés à l’appendeur Graylog, qui les envoie à son tour au serveur Graylog.

3.2. Autres cadres de journalisation

LeGraylog marketplace a des bibliothèques supplémentaires qui prennent en charge une variété d'autres frameworks de journalisation tels que Logback, Log4J2, etc. Just beware that these libraries are not maintained by Graylog. Certains d'entre eux sont abandonnés et d'autres ont peu ou pas de documentation.

Vous devez faire preuve de prudence lorsque vous utilisez ces bibliothèques tierces.

3.3. Sidecar Collector Graylog

Une autre option pour la collecte de journaux est lesGraylog Collector Sidecar. Le side-car est un processus qui s'exécute le long d'un collecteur de fichiers et envoie le contenu du fichier journal à un serveur Graylog.

Le Sidecar est une excellente option pour les applications où la modification des fichiers de configuration des journaux n’est pas possible. Et comme il lit les fichiers journaux directement à partir du disque,it can also be used to integrate log messages from any platform and programming language.

4. Visualiser des messages dans Graylog

Nous pouvons utiliser le tableau de bord Graylog pour confirmer la livraison réussie de nos messages de journal. L'utilisation du filtresource:localhost affichera les messages du journal de notre exemple de configurationlog4j ci-dessus:

image

5. Conclusion

Graylog n'est qu'un des nombreux services d'agrégation de journaux. Il peut rechercher rapidement des millions de messages de journal, visualiser les données de journal en temps réel et envoyer des alertes lorsque certaines conditions sont remplies.

L'intégration de Graylog dans une application Spring Boot ne nécessite que quelques lignes de configuration et sans nouveau code.

Les échantillons de code, comme toujours, peuvent êtrefound on GitHub.