Installation de Graylog avec Docker

Introduction

Dans un monde où les systèmes informatiques deviennent de plus en plus complexes, la gestion des journaux (logs) est devenue essentielle pour assurer la stabilité, la sécurité et les performances des infrastructures numériques. Les entreprises génèrent chaque jour des millions de lignes de journaux provenant de serveurs, d’applications, de réseaux ou d’appareils connectés, rendant leur analyse manuelle quasiment impossible.

C’est là qu’intervient Graylog, une plateforme open-source puissante et flexible conçue pour centraliser, analyser et visualiser ces données critiques. Graylog vous offre les outils nécessaires pour transformer des logs bruts en informations exploitables.

Dans cet article, nous allons explorer les composantes et l’installation de Graylog.

Les composants principaux de Graylog

Graylog repose sur trois composants principaux :

  • MongoDB, qui gère les métadonnées (configuration, utilisateurs, tableaux de bord, etc.)

  • OpenSearch ou Elasticsearch, utilisés pour stocker, indexer et permettre des recherches rapides dans les journaux

  • Graylog Server, qui constitue le cœur de la plateforme en collectant les logs des différentes sources, les traitant via des pipelines, et les envoyant à OpenSearch/Elasticsearch pour stockage, tout en s’appuyant sur MongoDB pour la gestion des métadonnées.

Installation

Préparation de la machine virtuelle

Nous allons apprendre à installer Graylog avec Docker tout en configurant le stockage des données sur un second disque.

Avant de commencer, assurez-vous que Docker est installé sur votre système. Si ce n’est pas le cas, vous pouvez vous rendre sur le site de docker et suivre les instructions : https://docs.docker.com/engine/install/

La configuration de notre machine virtuelle sera la suivante :

  • Un disque pour le système.
  • Un second disque dédié au stockage des données.

Si ce disque vient uniquement d’être ajouté, il est visible mais inutilisable. Nous allons donc le formater et le préparer pour le stockage des données.

La première étape consiste à identifier ce disque afin de créer les partitions nécessaires. Utilisez la commande suivante pour afficher la liste des disques disponibles :

sudo fdisk -l

Nous observons que notre second disque de 40Go est identifié sous /dev/vdb. Nous allons maintenant créer une partition en utilisant l’outil fdisk.

sudo fdisk /dev/vdb

Sélectionnez ensuite n pour créer une nouvelle partition

Puis p pour choisir une partition primaire.

Appuyez ensuite sur Entrée.

Enfin, sélectionnez w pour enregistrer les modifications et quitter.

Formatez la partition en utilisant le système de fichiers ext4 (qui est spécifique à Linux) avec la commande suivante :

sudo mkfs.ext4 /dev/vdb1

Ensuite, créez un point de montage, c’est-à-dire un répertoire où les données de Graylog seront stockées.

sudo mkdir /mnt/data

Nous allons dorénavant mapper de façon persistante a nouvelle partition au point de montage, utilisez la commande suivante :

sudo nano /etc/fstab

Et insérer cette ligne :

/dev/vdb1 /mnt/data ext4 defaults 0 2

Note : Il est également possible de mapper le disque avec son UUID ce qui peut éviter quelques problèmes

Rechargez la configuration des services et des unités systemd pour prendre en compte les modifications du fichier /etc/fstab

sudo systemctl daemon-reload

La commande suivante permettra de monter toutes les partitions dont celle que nous avons ajoutée :

sudo mount -a

Pour vérifier que la partition /dev/vdb1 est correctement monté, vous pouvez utiliser la commande suivante :

Configuration de graylog

Avant tout, afin d’assurer le bon fonctionnement de l’indexeur, il est nécessaire d’augmenter la valeur du paramètre vm.max_map_count pour éviter toute limitation liée à la gestion de la mémoire virtuelle :

sudo sysctl -w vm.max_map_count=262144

Création d’un répertoire Graylog dans le point de montage :

sudo mkdir /mnt/data/graylog && cd /mnt/data/graylog

Ensuite, création d’un répertoire config.

sudo mkdir -p graylog/config && cd graylog/config

On récupère le fichier docker compose :

sudo wget https://raw.githubusercontent.com/Graylog2/docker-compose/refs/heads/main/open-core/docker-compose.yml

On récupère ensuite le fichier .env pour les mots de passe :

sudo wget -O .env https://raw.githubusercontent.com/Graylog2/docker-compose/refs/heads/main/open-core/.env.example

Utilisez la commande suivante pour créer une chaîne aléatoire pour la variable GRAYLOG_PASSWORD_SECRET:

tr -dc A-Za-z0-9 < /dev/urandom | head -c ${1:-96}; echo

Pour définir le mot de passe du compte admin à travers la variable GRAYLOG_ROOT_PASSWORD_SHA2, vous devez en générer la version hachée.

Exécutez la commande suivante, puis saisissez votre mot de passe (il ne sera pas affiché à l’écran) :

echo -n "Enter Password: " && head -1 </dev/stdin | tr -d '\n' | sha256sum | cut -d" " -f1

Ensuite, éditez votre fichier .env en renseignant les valeurs obtenues pour les variables correspondantes

Nous allons maintenant éditer le fichier docker compose, comme nous voulons que les données soient stockées sur le second disque, nous allons modifier l’emplacement de stockage des volumes.

Exemple avec les volumes liées à la base de données :

Avant modification : Les volumes sont stockés sur /data/db qui est sur mon disque principal

Après modification : Les volumes sont stockées sur /mnt/data/graylog/db, qui lui est sur mon second disque

Ces modifications sont à faire pour l’ensemble des volumes présent dans le fichier docker-compose !

Avec la modification de l’emplacement des volumes, il se peut qu’il y ait des problèmes de permissions. J’ai rencontré un problème pour le volume graylog_data. Nous allons modifier les droits des volumes en les attribuant à l’utilisateur 1100 (utilisé dans les conteneurs), car sinon, il ne sera pas possible d’écrire dans les volumes.

sudo mkdir graylog_data && sudo chown -R 1100:1100 graylog_data/

On peut enfin lancer notre docker compose :

sudo docker compose up -d

Vous pouvez accéder à votre serveur graylog à travers l’URL suivante : http://votre_adresse_ip:9000

Il vous sera demandé de vous authentifier une première fois pour finaliser l’installation.

Les identifiants sont fournis et voici comment les obtenir. Commencez par récupérer l’ID de votre conteneur en exécutant la commande ci-dessous

sudo docker ps

Ensuite, consultez les logs de ce conteneur

sudo docker logs votre_ID

Cette commande vous indiquera le mot de passe à utiliser

Vous arrivez sur une page « Graylog Initial Setup » ou nous avons le choix de configurer une autorité de certification, ce que nous sommes obliger de réaliser

Choix de la politique de renouvellement

Je choisi ensuite de provisionner automatiquement un certificat

On peut cette fois-ci lancer Graylog

Nous arrivons bien sur la page de connexion

Conclusion

L’installation de Graylog avec Docker offre une solution flexible et efficace pour centraliser et analyser les logs dans un environnement numérique de plus en plus complexe. Grâce à l’utilisation de Docker, la gestion des différents services nécessaires à Graylog, comme MongoDB et OpenSearch, devient plus simple et plus modulaire.

Dans les prochains articles, nous apprendrons à configurer un INPUT et à envoyer des logs de différentes manières depuis une machine Windows et Linux.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Retour en haut