GNU/Linux >> Tutoriels Linux >  >> Panels >> Docker

Comment centraliser la gestion des journaux avec Graylog à l'aide de Docker

Recherchez-vous un système capable d'interpréter vos fichiers journaux, de les stocker dans un environnement sécurisé et de collecter des données bien organisées à des fins d'analyse ? Eh bien, centraliser la gestion des journaux avec Graylog à l'aide de Docker pourrait être ce que vous recherchez !

Dans ce didacticiel, vous apprendrez à utiliser Graylog et Docker pour créer un système de journalisation centralisé permettant de collecter des données Syslog à partir de votre machine Ubuntu.

Continuez à lire et commencez à centraliser la gestion de vos logs !

Prérequis

Cet article sera un tutoriel étape par étape. Pour suivre, assurez-vous d'avoir les éléments suivants :

  • Deux machines Ubuntu (un hôte et un client) - Ce tutoriel utilise Ubuntu 20.04, mais d'autres distributions Linux fonctionneront.
  • Rsyslog sur la machine cliente.
  • Docker installé sur la machine hôte. La version de Docker utilisée pour ce tutoriel est 20.10.7
  • Docker-compose installé sur la machine hôte.
  • L'utilitaire Pwgen doit être installé sur la machine hôte pour générer un mot de passe secret aléatoire.

Déploiement de Graylog à l'aide de Docker Compose

Qu'est-ce que Graylog de toute façon ? Graylog est une plate-forme de gestion de journaux open source. Graylog peut collecter, indexer et analyser des données structurées et non structurées à partir de sources. L'une de ces sources est l'exploitation des systèmes en temps réel.

Avant de déployer Graylog, vous devez d'abord installer Graylog sur votre ordinateur hôte à l'aide de Docker Compose.

Supposons que vous utilisiez un ordinateur Ubuntu 20.04 basé sur le cloud. Dans ce cas, vous devrez modifier votre groupe de sécurité ou vos règles de pare-feu pour autoriser les ports suivants :1514 et 12201 pour les connexions TCP et UDP et 9000 pour les connexions TCP uniquement.

1. Ouvrez votre client SSH préféré et connectez-vous à votre machine.

2. Ensuite, exécutez les commandes ci-dessous pour créer un nouveau répertoire dans votre répertoire personnel et basculez vers ce répertoire. Vous pouvez nommer le répertoire comme vous préférez. Mais pour cette démo, le répertoire s'appelle ~/graylog.

mkdir graylog
cd graylog

3. Créez un fichier YAML nommé docker-compose.yml dans votre ~/graylog répertoire, puis remplissez le fichier avec la configuration ci-dessous. Mais n'enregistrez pas encore les modifications. Pour protéger la connexion Graylog et restreindre l'accès à vos données, vous devrez générer un mot de passe secret.

Dans le fichier nouvellement créé, vous trouverez la configuration pour configurer les composants Graylog, MongoDB et ElasticSearch. Graylog nécessite que tous ces composants soient configurés et exécutés simultanément pour que Graylog fonctionne efficacement.

version: '2'
services:
  # MongoDB: https://hub.docker.com/_/mongo/
  MongoDB: # Mongodb service
    image: mongo:4.2 # Version of Mongodb docker image 
    volumes:
      - mongo_data:/data/db # Persisted mongodb data
  # Elasticsearch: https://www.elastic.co/guide/en/elasticsearch/reference/7.10/docker.html
  elasticsearch: # ElasticSearch service
		
    image: docker.elastic.co/elasticsearch/elasticsearch-oss:7.10.2 # Version of elasticsearch image
    volumes:
      - es_data:/usr/share/elasticsearch/data # Persisted elasticsearch data 
    environment:
      - http.host=0.0.0.0
      - transport.host=localhost
      - network.host=0.0.0.0
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      # Unlimited amount of memory set for elasticsearch container
      memlock:
        soft: -1
        hard: -1
		# Resource limit for elasticsearch set to 1 gigabyte
    mem_limit: 1g
  # Graylog: https://hub.docker.com/r/graylog/graylog/
  graylog:
    image: graylog/graylog:4.2 # Version of Graylog docker image
    volumes:
      - graylog_data:/usr/share/graylog/data # Persisted Graylog data
    environment:
      # CHANGE ME (must be at least 16 characters)!
      - GRAYLOG_PASSWORD_SECRET=somepasswordpepper
      # Password: admin
      - GRAYLOG_ROOT_PASSWORD_SHA2=8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
      - GRAYLOG_HTTP_EXTERNAL_URI=http://127.0.0.1:9000/
      - GRAYLOG_WEB_ENDPOINT_URI=http://127.0.0.1:9000/api
		# Command to run as soon as components are started
    entrypoint: /usr/bin/tini -- wait-for-it elasticsearch:9200 --  /docker-entrypoint.sh
		# Containers that Graylog depends on 
    links:
      - mongodb:mongo
      - elasticsearch
    restart: always # Graylog container set to always restart when stopped
    depends_on:
      - mongodb
      - elasticsearch
    ports:
      # Graylog web interface and REST API
      - 9000:9000
      # Syslog TCP
      - 1514:1514
      # Syslog UDP
      - 1514:1514/udp
      # GELF TCP
      - 12201:12201
      # GELF UDP
      - 12201:12201/udp
# Volumes for persisting data, see https://docs.docker.com/engine/admin/volumes/volumes/
volumes:
  mongo_data:
    driver: local
  es_data:
    driver: local
  graylog_data:
    driver: local

4. Maintenant, exécutez le pwgen commande ci-dessous pour générer un seul mot de passe aléatoire (-N ) avec 96 (-s 96 ) personnages.

pwgen -N 1 -s 96

5. Votre mot de passe secret généré ressemblera à celui ci-dessous. Notez votre mot de passe secret car vous le définirez dans le docker-compose.yml fichier (étape six).

6. Retournez au docker-compose.yml fichier et remplacer somepasswordpepper dans GRAYLOG_PASSWORD_SECRET avec votre mot de passe secret nouvellement généré (étape cinq). Vous utiliserez ce mot de passe pour le cryptage et le salage du mot de passe. Sans ce mot de passe secret, le conteneur Graylog ne démarrera pas.

7. Exécutez la commande ci-dessous pour générer un hachage SHA2 d'un mot de passe de votre choix. Ce mot de passe est requis pour la première connexion à Graylog.

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

Entrez un mot de passe administrateur de votre choix lorsque vous y êtes invité, comme indiqué ci-dessous, et appuyez sur ENTRÉE. Une fois que vous avez entré un mot de passe, votre mot de passe haché est généré.

Notez votre mot de passe haché car vous le définirez dans le docker-compose.yml fichier (étape 8).

8. Remplacez la valeur du GRAYLOG_ROOT_PASSWORD_SHA2 variable d'environnement dans docker-compose.yml fichier avec le mot de passe de hachage SHA2 que vous avez précédemment généré (étape sept). Enregistrez les modifications dans le docker-compose.yml fichier et quittez l'éditeur.

9. Enfin, exécutez le docker-compose up commande ci-dessous pour déployer les conteneurs ElasticSearch, MongoDB et Graylog Docker en mode détaché (-d ). Cette commande les extrait du hub Docker et les démarre en tant que conteneurs pour que Graylog fonctionne correctement.

# Starting up MongoDB, ElasticSearch, and Graylog containers in detached mode
sudo docker-compose up -d

L'image ci-dessous montre que les images MongoDB, ElasticSearch et Graylog Docker ont été extraites du hub Docker et démarrées en tant que conteneurs.

Modification de la valeur des fragments d'index pour ElasticSearch

Vous venez de déployer Graylog, et c'est un grand pas en avant dans la centralisation de la gestion des logs. Mais maintenant, il est temps de configurer Graylog. Vous modifierez la valeur des fragments ElasticSearch en fonction du nombre de nœuds/conteneurs ElasticSearch que vous exécutez.

Une partition est une unité dans laquelle Elasticsearch distribue des données sur plusieurs nœuds. Le nombre optimal de fragments par nœud est un.

1. Ouvrez votre navigateur Web préféré et accédez à https://:9000 , où HOST_IP est l'adresse IP de votre machine hôte. Si tout se passe bien, vous arriverez à l'écran de connexion de Graylog illustré ci-dessous.

Entrez admin comme nom d'utilisateur et entrez le mot de passe administrateur que vous avez créé dans la section « Déploiement de Graylog à l'aide de Docker Compose » (étape sept). Pour ce tutoriel, le mot de passe est adamtheautomator.

Une fois connecté, vous verrez la page de démarrage de Graylog, comme indiqué ci-dessous.

2. Ensuite, cliquez sur Système menu —> Indices , comme indiqué ci-dessous, pour accéder aux indices et index page (étape trois), où vous pouvez choisir de modifier le jeu d'index par défaut.

3. Cliquez sur Modifier pour gérer l'ensemble d'index par défaut de Graylog et modifier la valeur du fragment ElasticSearch. La valeur par défaut pour les partitions ElasticSearch est quatre, et vous devrez la modifier (étape quatre).

4. Enfin, changez le nombre de fragments ElasticSearch en un (1 ) car vous n'exécutez qu'un seul nœud/conteneur ElasticSearch, puis cliquez sur Enregistrer au bas de la page.

Configuration de Graylog pour collecter les journaux de Syslog

Vous venez de configurer Graylog en modifiant la valeur des fragments d'index pour ElasticSearch. Mais vous devrez également configurer Graylog pour collecter les données de journal de Syslog sur la machine cliente. Comment? Vous configurerez les entrées Graylog pour recevoir les données de journal envoyées par votre ordinateur client via Syslog pour analyse dans l'ordinateur hôte.

Avec Syslog comme protocole de journalisation standard basé sur le réseau, vous pouvez transporter les messages d'événement ou les données de journalisation de votre ordinateur client vers Graylog.

1. Cliquez sur Système menu —> Entrées pour accéder aux entrées page, où vous configurerez une entrée Syslog UDP.

2. Recherchez et sélectionnez Syslog UDP dans le champ de recherche, comme indiqué ci-dessous, puis cliquez sur Lancer une nouvelle entrée .

3. Enfin, configurez la nouvelle entrée Syslog UDP avec ce qui suit, et cliquez sur Enregistrer en bas de la fenêtre pop-up pour conserver et appliquer les modifications :

  • Sélectionnez votre nœud dans le nœud liste déroulante.
  • Définir le titre à n'importe quel mot que vous souhaitez. Pour cette démo, le titre est syslog .
  • Définir l'adresse de liaison à 0.0.0.0, afin que Graylog puisse écouter les événements entrants n'importe où.
  • Définir le port au port UDP Syslog 1514 comme défini dans le docker-compose.yml fichier sous Syslog UDP .

Ci-dessous, vous verrez que l'entrée Syslog UDP s'exécute dans le cadre des entrées locales après configuration.

Configuration de Rsyslog pour envoyer des données Syslog à Graylog

Vous avez configuré une entrée Syslog UDP pour recevoir les données envoyées depuis votre ordinateur client, mais comment envoyez-vous les données à Graylog ? Rsyslog fera l'affaire !

Vous allez créer un fichier de configuration pour Rsyslog afin de transférer vos données Syslog de votre ordinateur client vers Graylog exécuté sur votre ordinateur hôte.

1. Créez un fichier de configuration dans /etc/rsyslog.d répertoire sur votre ordinateur client. Vous pouvez nommer le fichier comme vous préférez, mais le fichier s'appelle 90-graylog.conf pour cette démo.

2. Ensuite, ajoutez la ligne suivante au 90-graylog.conf fichier, enregistrez les modifications et fermez l'éditeur. Remplacer 34.76.103.44 avec l'adresse IP de votre machine hôte sur laquelle Graylog est exécuté.

La configuration ci-dessous envoie des données Syslog (RSYSLOG_SyslogProtocol23Format ) de la machine hôte (@34.76.103.44 ) à Graylog.

*.* @34.76.103.44:1514;RSYSLOG_SyslogProtocol23Format

3. Exécutez la commande ci-dessous pour redémarrer rsyslog pour que les modifications prennent effet.

sudo systemctl restart rsyslog

4. Revenez à l'interface Web Graylog et cliquez sur Rechercher menu pour voir vos données Syslog collectées soigneusement analysées de la même manière que celle ci-dessous.

Conclusion

Dans ce didacticiel, vous avez appris à créer votre propre système de gestion centralisée des journaux avec Graylog à l'aide de Docker et à vérifier que les données Syslog ont été collectées avec succès à partir de votre ordinateur client.

À ce stade, vous avez réalisé que la collecte et le stockage de données bien organisées dans un environnement sécurisé à des fins d'analyse ne seront plus une corvée.

Quels autres journaux pouvez-vous collecter avec Graylog ? Peut-être configurer un hôte Web pour envoyer les journaux NGINX à Graylog pour une analyse et une analyse plus approfondies ?


Docker
  1. Configurer Nextcloud avec Redis à l'aide de Docker

  2. Comment installer Docker avec Ansible [Debian/Ubuntu]

  3. Comment installer Jenkins avec Docker

  4. Comment installer WordPress avec Docker

  5. Comment déployer des microservices avec Docker

Comment configurer MySQL avec Docker sous Linux

Comment remplacer Docker par Podman sur un Mac, revisité

Comment remplacer Docker par Podman sur un Mac

Comment configurer Home Assistant sur un Raspberry Pi à l'aide de Docker

Comment installer Gitea sur Ubuntu en utilisant Docker

Comment exécuter Jenkins dans Docker à l'aide de Docker Compose avec des volumes