Collect Logs Kafka Graylog2

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 34

Collect

logs Kafka
with Graylog

Réaliser par : Elaboré par :


Ben Brahim Aladdine Mrs Ghorbel Ines.

This article explores a tech by using the Graylog to collect and analyze Kafka logs.
« Tout projet naît d’une idée... qu’elle naisse d’un
besoin, d’une expérience ou d’un savoir faire, il s’agit au
départ d’une intuition ou d’un désir qui s’approfondit
avec le temps. »
Collect logs Kafka with Graylog

Kafka et Graylog - ces deux éléments font généralement partie de la même


solution architecturale, Kafka agissant comme un tampon devant Rsyslog pour
assurer la résilience. Cet article explore une combinaison différente: utiliser la pile
Graylog pour collecter et analyser les journaux Kafka.

Comme expliqué dans un article précédent , Kafka joue un rôle clé dans notre
architecture. À ce titre, nous avons construit un système de surveillance pour nous
assurer que les données circulent dans les pipelines comme prévu. Les indicateurs de
performance clés, tels que la latence et le décalage, sont étroitement surveillés à l'aide
de divers processus et outils.

Les journaux Kafka sont un autre élément de ce système de surveillance.

Kafka a généré plusieurs types de fichiers journaux, mais nous avons trouvé
que les journaux du serveur étaient particulièrement utiles. Nous collectons ces
journaux à l'aide de omkafka.so , ajoutons des champs de métadonnées et appliquons
des configurations d'analyse pour analyser le niveau de journal et la classe Java.
Dans cet article, je vais fournir les instructions nécessaires pour connecter vos
serveurs Kafka à la pile Graylog afin que vous puissiez configurer votre propre
système de journalisation pour Kafka. Les premières étapes expliquent comment
installer Kafka et le tester pour générer des exemples de journaux de serveur, mais si
vous avez déjà Kafka opérationnel, passez simplement aux étapes suivantes qui
impliquent l'installation de Graylog et la configuration du pipeline.

Installation de Kafka
Java est requis pour exécuter à la fois Kafka, commençons donc par installer Java:

Ensuite, Apache Kafka utilise ZooKeeper pour gérer les informations de


configuration et la synchronisation, nous devrons donc installer ZooKeeper avant de
configurer Kafka:
Ensuite, téléchargeons et extrayons Kafka:

Nous sommes maintenant prêts à exécuter Kafka, ce que nous allons faire avec ce
script:
Une longue liste de messages INFO devrait s'afficher, à la fin de laquelle un message
vous informant que Kafka a démarré avec succès:

Finally, Kafka est opérationnel et écoute sur le port 9092.

Test de notre serveur Kafka

Prenons Kafka pour un simple test.


Tout d'abord, créeons notre premier sujet avec une seule partition et une réplique
(nous n'avons qu'un seul serveur Kafka) à l'aide de la commande suivante:

En utilisant le producteur de la console, nous allons maintenant publier des exemples


de messages dans notre rubrique Kafka nouvellement créée.
Dans l'invite, entrons des messages pour le sujet

Dans un onglet séparé, nous allons maintenant exécuter la commande consommateur


Kafka pour lire les données de Kafka et afficher les messages que nous avons soumis
à la rubrique à stdout.
Nous devrons voir les mêmes messages que nous avons soumis à la rubrique affichée:

Installation de Graylog
Elasticsearch nécessite que Java soit installée sur la machine. Pour cette raison, on
installe la version 8 de java.
On peut vérifier la version installée de java en tapant la commande :

sudo java –version

Avant l’installation d’un système de gestion de bases de données MongoDB ,


nous avons importé un clé publique.

Ensuite, nous allons ajouter le référentiel de mongodb en créant le fichier


/etc/apt/sources.list.d/mongodb.org.list à l'aide de la commande:

Nous pouvons installer MongoDB avec la commande d’installation de


MongoDB
ElasticSearch est un moteur d’indexation et de recherche des données dont
nous allons utiliser avec l’outil de centralisation des logs Graylog.

Tout d’abord, nous avons téléchargé et installé la clé de signature GPG. La


figure x montre la commande qui sert à installer la clé de signature GPG

Puis, nous avons ajouté le référentiel d’Elasticsearch en créant le fichier


/etc/apt/sources.list.d/elastic-6.x.list à l'aide de la commande suivante :

Enfin, nous avons installé Elasticsearch. La Figure X montre la commande


d’installation.

Nous avons passé à l’installation du référentiel de Graylog en utilisant les


commandes suivantes:
Ainsi, nous avons installé Graylog avec la commande d’installation:

Pour éviter la perte des fichiers de configuration, nous avons toujours effectué
la sauvegarde avant de les manipuler.

Configuration de Graylog

Après l’installation d’Elasticsearch, nous avons passé à la modification du


fichier de configuration en changeant le nom du cluster en "graylog" et la création
des index en "false".

Ensuite, nous avons accédé au


fichier/etc/elasticsearch/elasticsearch.yml.

Ces figures présentent les modifications du fichier de configuration.


Enfin, nous avons pu visualiser des modifications sous forme JSON avec le port 9200
Nous avons défini un secret pour sécuriser les mots de passe des utilisateurs
avec la commande pwgen.

Ensuite, il faut définir un mot de passe de hachage (sha256) pour l'utilisateur


root et le définir par la suite dans le fichier de configuration
/etc/graylog/server/server.conf.
N.B: pour ne pas confondre avec l'utilisateur système, l'utilisateur root de
graylog est admin

2920
Puis, nous avons fixé l’adresse IP du serveur et numéro de port puisque le
serveur Graylog écoute par défaut sur le port 9000.

Enfin, nous avons pu accéder à l’interface de Graylog, et se connecter en


saisissant admin comme un nom d’utilisateur et un mot de passe
root_password_sha2 que nous avons défini au niveau d’un fichier de
configuration server.conf .
Installation et configuration de Rsyslog-Kafka

Pour que notre outil puisse collecter les logs des différents clients, il faut
installer un agent de collecte des logs. En effet, Syslog a plusieurs versions à savoir
Syslog, Syslog-ng et celle la plus récente Rsyslog. Rsyslog est un logiciel libre de
transfert des messages des journaux d’événement sur un réseau sur des systèmes
d’exploitation Linux.

Rsyslog-Kafka

Rsyslog est installé par défaut sur UBUNTU 18.04 mais nous pouvons
l’installer en tapant la commande suivante

Tout d’abord, nous avons configuré les deux protocoles UDP (User
Datagram Protocol) et TCP (Transmission Control Protocol) au niveau de fichier de
configuration /etc/rsyslog.conf
Les modèles ( templates en anglais ) représentent une caractéristique clé de
rsyslog. Toute sortie générée par rsyslog-kafka peut être modifiée et formatée en
fonction de nos besoins à l'aide de modèles.

Ainsi, nous pouvons créer notre modèle

Dans le scénario, un message syslog passera par les étapes suivantes:

 Message envoyé de rsyslog à Apache Kafka

 Message extrait et consommé d'Apache Kafka par Graylog (via


l'entrée Kafka)

 Informations syslog structurées extraites de la charge utile JSON par


Graylog

Envoyer des messages avec rsyslog

Nous utilisons l'option de configuration PreserveFQDN, besoin d'une


résolution DNS fonctionnelle pour que cela fonctionne.
Acheminer les messages avec rsyslog

Nous pouvons utiliser le module de sortie rsyslog Kafka omkafka pour


envoyer les messages de rsyslog directement à Apache Kafka:

Dans cas où le serveur rsyslog-kafka tomberait en panne et que nos journaux


seraient si importants que nous ne voudrions pas les perdre, définissons la file
d'attente du disque rsyslog pour la mise en mémoire tampon dans le fichier de
configuration.

Pour ce faire, nous avons accédé par la suite au fichier de configuration activé
l’envoi de journaux via UDP en tapant *.* @192.168.1.14 : 5140 et via TCP en tapant
*.* @@192.168.1.14 : 5140
Avant de pouvoir redémarrer le service rsyslogd, nous avons exécuté une
vérification de la configuration et nous vérifions par la suite l’état de rsyslog .

Une fois la configuration terminée, nous avons pu redémarrer le service


rsyslogd en exécutant la commande: sudo systemctl restart rsyslog.

Test et résultats

Pour assurer le bon fonctionnement de notre travail, nous allons décrire dans
cette section la suite des tests élaborés.

Nous allons tout d’abord vérifier les états des outils installés. Ils doivent
retourner l’état actif. Ensuite, nous allons s’authentifier en tant qu’administrateur en
tapant l’url suivant:

« https://192.168.1.14:9000/ »

Comme nous avons installé la dernière version de Syslog qui est Rsyslog, nous
allons ajouter une entrée Syslog UDP. Avant de choisir UDP syslog, cliquer
sur Launch new input
Pour cela, on se rend dans System - Inputs sur l’interface web. Pour les
Switches et les routeurs, on utilise le port 514 pour UDP et TCP. En revanche, pour
les autres périphériques, il faut utiliser des ports à partir de 5140 pour séparer les flux.

On sélectionne le nœud de GRAYLOG


Nous devons spécifier "BIND ADDRESS" 0.0.0.0 pour écouter tous les
réseaux. La figure ci-dessous montre l’entrée lancée en son état actif
Collecte et traitement des logs

On se retrouve avec un serveur qui centralise plus de 3000 événements.

De même, on filtre la recherche sur la valeur Kafka pour afficher les logs de
notre serveur. Nous avons reçu les logs kafka provenant du serveur graylog dans 5
derniers minutes.
Dashboard

La visualisation consiste à créer des agrégations pour extraire et traiter les


données mises à jour en temps réel. On peut créer des graphiques qui nous indiquent
les tendances, les pics et les creux dont on a besoin. Les données peuvent être

visualisées de différentes manières et de plusieurs types ( Data Table, Line


Chart, Pie, Single Number,etc) qu’offre GRAYLOG. Nous créons deux agrégations
en utilisant le type "Single Number" et "Area Chart" sur un intervalle de temps que
l’on précis pour savoir le nombre de messages reçus.
Nétographie

https://community.graylog.org/t/configure-graylog-with-kafka/8081

https://logz.io/blog/kafka-logging/

https://dzone.com/articles/kafka-logging-with-the-elk-stack

https://blog.syloe.com/collecte-et-traitement-des-logs/

Vous aimerez peut-être aussi