Graylog: Gérer l’erreur « failed to parse field [XXXX] of type [YYYY] »

Cette documentation fait partie du guide Premiers pas. Consultez le guide complet ici : 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 !

Vous pouvez 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 consulter cette erreur dans les logs disponibles sur 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 s’appuie sur la fonctionnalité de mapping dynamique d’OpenSearch. Lorsqu’un log est envoyé pour la première fois, OpenSearch tente de deviner le type des champs. Par exemple, si un log contient le champ time avec la valeur numérique 1234, OpenSearch le définit comme champ numérique. Si un autre log est envoyé avec le champ time défini à « abcd », une chaîne de caractères, OpenSearch le rejettera car il attend une valeur numérique.

Gardez à l’esprit que le nom du champ time n’est donné qu’à titre d’exemple. Cela peut concerner n’importe quel nom de champ et type.

Pour corriger ce problème, il faut redéfinir le type attendu par OpenSearch. Pour plus d’informations, consultez la documentation officielle de Graylog.

Avant de continuer, activez l’accès OpenSearch dans le tableau de bord Stackhero. Accédez à votre service Graylog et cliquez sur le bouton « Configurer » pour activer l’accès OpenSearch.

Soyez prudent avec ces modifications, une mauvaise configuration peut bloquer votre cluster OpenSearch et entraîner une perte de données. Si vous avez un doute, n’allez pas plus loin.

  1. Définissez votre nouveau mapping. Dans cet exemple, nous redéfinissons le champ time en type string. Vous trouverez 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 avec 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 mapping a bien é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'