Graylog: Premiers pas

Comment débuter avec Graylog

👋 Bienvenue sur la documentation de Stackhero !

Stackhero propose une solution Graylog cloud prête à l'emploi qui offre de nombreux avantages, notamment :

  • Serveur e-mail SMTP illimité et dédié inclus.
  • Mises à jour sans effort en un clic.
  • Nom de domaine personnalisable sécurisé avec HTTPS (par exemple, https://logs.votre-entreprise.com).
  • Performance optimale et sécurité robuste grâce à une VM privée et dédiée.

Gagnez du temps et simplifiez-vous la vie : il suffit de 5 minutes pour essayer la solution Graylog cloud hosting de Stackhero !

Un input est le point d'entrée où Graylog reçoit vos logs. Vous pouvez envoyer des logs en utilisant TCP ou UDP. De plus, Graylog peut collecter des entrées de logs à partir d'une API, d'une file d'attente Kafka, d'un serveur RabbitMQ et d'autres méthodes.

Dans cet exemple, nous allons créer un input UDP brut. Pour commencer, ouvrez l'interface Graylog et naviguez vers "System" puis "Inputs". Choisissez "Raw/Plaintext UDP" et cliquez sur "Launch new input". Configurez votre input avec les valeurs suivantes et validez le formulaire :

  1. Node : Sélectionnez votre nœud
  2. Title : RAW UDP
  3. Port : 5555

Ensuite, ouvrez un terminal sur votre ordinateur et envoyez un message UDP à votre serveur Graylog. N'oubliez pas de remplacer XXXXXX par le nom de domaine de votre service :

  • Sur macOS : echo "Hello Graylog from UDP" | nc -u -w1 -c <XXXXXX>.stackhero-network.com 5555
  • Sur Linux : echo "Hello Graylog from UDP" | nc -u -w1 <XXXXXX>.stackhero-network.com 5555

Après avoir envoyé le message, retournez sur Graylog et cliquez sur "Search". Vous devriez voir votre message 🎉

Félicitations, vous avez maintenant envoyé votre premier message à Graylog ! N'hésitez pas à créer des inputs et des tableaux de bord supplémentaires adaptés à vos besoins. Pour plus de conseils, vous pouvez consulter la documentation officielle de Graylog.

Plusieurs exemples de code sont disponibles dans notre dépôt Git. Ce dépôt offre des implémentations pratiques et des personnalisations supplémentaires pour vous aider à tirer le meilleur parti de Graylog.

Si vous avez un client rsyslog et souhaitez envoyer des logs de manière sécurisée à Graylog, suivez ces étapes :

N'activez aucune option TLS sur l'input de Graylog. TLS sera géré directement par un reverse proxy sur votre instance afin que Graylog ne le prenne pas en charge.

  1. Allez dans la configuration de votre service Graylog sur le tableau de bord Stackhero et activez "TLS encryption" pour le port Syslog TCP 514.

  2. Mettez à jour votre configuration rsyslog comme indiqué ci-dessous. Remplacez <XXXXXX>.stackhero-network.com par le nom d'hôte de votre instance :

    # Définir le certificat CA TLS
    global(
      DefaultNetstreamDriver="gtls"
      DefaultNetstreamDriverCAFile="/etc/ssl/certs/ca-certificates.crt"
    )
    
    # Envoyer tous les logs à un serveur distant
    # Une file d'attente sur disque est créée pour cette action. Si l'hôte distant est
    # hors ligne, les messages sont mis en file d'attente sur le disque et envoyés lorsqu'il redevient disponible
    # Voir https://www.rsyslog.com/doc/v8-stable/configuration/actions.html
    # et https://www.rsyslog.com/doc/v8-stable/configuration/modules/omfwd.html
    *.* action(
      type="omfwd"
      target="<XXXXXX>.stackhero-network.com"
      port="514"
      protocol="tcp"
      KeepAlive="on"
      KeepAlive.Interval="30"
      StreamDriver="gtls"
      StreamDriverMode="1"
      StreamDriverAuthMode="x509/name"
      ResendLastMSGOnReconnect="on"
      queue.filename="fwdRule1"  # préfixe de nom unique pour les fichiers de spool
      queue.type="LinkedList"
      queue.maxDiskSpace="256m"
      queue.saveOnShutdown="on"
      action.resumeRetryCount="-1"
      action.resumeInterval="30"
    )
    
  3. Redémarrez votre service rsyslog et vérifiez la configuration en envoyant un log avec la commande :

    logger This is a test
    

Cela complète la configuration. Vous envoyez maintenant des logs de manière sécurisée à Graylog en utilisant le chiffrement TLS !

Vous pourriez rencontrer une erreur telle que :

org.opensearch.index.mapper.MapperParsingException: failed to parse field [time] of type [long] in document with id 'xxxx'

Vous pouvez voir cette erreur dans les logs fournis dans le tableau de bord Stackhero ou dans le panneau d'administration Graylog sous System > Overview > Indexer failures.

Cette erreur indique qu'un log a été envoyé avec une valeur pour le champ time qui ne correspond pas au type attendu (dans ce cas, une valeur numérique de type "long"). Graylog utilise la fonctionnalité de mappage dynamique d'OpenSearch. Lorsqu'un log est envoyé pour la première fois, OpenSearch tente de deviner les types de champs. Par exemple, si un log inclut le champ time avec la valeur numérique 1234, OpenSearch le définit comme un champ numérique. Si un autre log est envoyé avec le champ time défini comme "abcd", une chaîne, OpenSearch le rejettera car il s'attend à une valeur numérique.

Rappelez-vous que le nom de champ time est utilisé uniquement à titre d'illustration. Il peut s'agir de n'importe quel nom de champ et type.

Pour résoudre ce problème, vous devez redéfinir le type qu'OpenSearch attend. Pour plus d'informations, veuillez consulter la documentation officielle de Graylog.

Avant de continuer, activez l'accès OpenSearch dans le tableau de bord Stackhero. Naviguez vers votre service Graylog et cliquez sur le bouton "Configure" pour activer l'accès OpenSearch.

Soyez prudent avec ces modifications car des configurations incorrectes peuvent bloquer votre cluster OpenSearch et potentiellement entraîner une perte de données. Si vous n'êtes pas sûr, ne continuez pas.

  1. Définissez votre nouveau mappage. Dans cet exemple, nous redéfinissons le champ time pour qu'il soit de type string. Vous pouvez trouver les types disponibles dans la documentation des types de champs OpenSearch.

  2. Enregistrez le contenu suivant dans un fichier nommé graylog-custom-mapping.json :

    {
      "template": "graylog_*",
      "mappings": {
        "message": {
          "properties": {
            "time": {
              "type": "string",
              "index": "not_analyzed"
            }
          }
        }
      }
    }
    
  3. Envoyez ce fichier en utilisant la commande curl suivante (remplacez <XXXXXX>.stackhero-network.com par le nom de domaine de votre instance) :

    curl -u 'admin' -X PUT -d @'graylog-custom-mapping.json' -H 'Content-Type: application/json' 'https://<XXXXXX>.stackhero-network.com/opensearch/_template/graylog-custom-mapping?pretty'
    

    Vous devriez recevoir une réponse comme :

    {
      "acknowledged": true
    }
    
  4. Enfin, vérifiez que le mappage a été mis à jour avec cette commande (remplacez le domaine si nécessaire) :

    curl -u 'admin' -X GET 'https://<XXXXXX>.stackhero-network.com/opensearch/graylog_deflector/_mapping?pretty'
    

Gérer l'erreur "Unable to write audit log entry"

Si vous voyez une erreur telle que :

Unable to write audit log entry because there is no valid license

ou

Not running cleanup for auditlog entries in MongoDB because there is no valid license

cela se produit parce que Graylog Enterprise a été activé sans licence valide. Si vous avez une licence, vous pouvez l'entrer dans l'interface Graylog. Si vous n'avez pas de licence, désactivez simplement Graylog Enterprise dans le tableau de bord Stackhero.