Graylog: Problèmes de mappage des données

Comment résoudre les problèmes de mappage des données d’index dans Graylog

👋 Bienvenue dans la documentation Stackhero

Stackhero offre une solution Graylog cloud entièrement gérée, conçue pour la rapidité et la simplicité. Vous pouvez :

  • Compter sur un serveur SMTP d'email dédié et illimité inclus avec votre service.
  • Appliquer les mises à jour facilement en un seul clic, sans intervention manuelle.
  • Utiliser un nom de domaine personnalisé sécurisé par HTTPS (par exemple, https://logs.votre-entreprise.com), pour offrir à votre équipe un accès direct et sécurisé.
  • Profiter d'une performance et d'une sécurité accrues sur une infrastructure privée et dédiée, sans ressources partagées ni voisins bruyants.

Concentrez-vous sur vos données, pas sur vos outils : vous pouvez commencer avec la solution Graylog cloud hosting de Stackhero en seulement quelques minutes.

Un problème courant dans Graylog concerne les conflits de mappage des données, qui peuvent entraîner des échecs lors des tentatives d’indexation. Vous pourriez rencontrer ce problème si vous voyez des logs similaires à ceux-ci :

ElasticsearchException[Elasticsearch exception [type=mapper_parsing_exception, reason=failed to parse field [level] of type [long] in document with id '34fd4d11-36ed-11f0-afc9-0242ac140002'. Preview of field's value: 'error']]; nested: ElasticsearchException[Elasticsearch exception [type=illegal_argument_exception, reason=For input string: "error"]];

Ce problème survient à cause de la fonctionnalité de mappage dynamique d’OpenSearch. Le mappage dynamique détermine automatiquement le type de données de chaque champ en se basant sur le premier document écrit dans un index. Une fois ce type défini, il est « verrouillé », et tout document ultérieur contenant un type de données différent pour ce champ sera rejeté, ce qui provoque une erreur de type mapper parsing exception.

Lorsqu’un nouvel index est créé, le premier document définit le mappage de l’index. Par exemple, si ce document contient un champ « level » avec la valeur 3 (une valeur numérique), OpenSearch définit le type de données de « level » à « long » (type numérique). Si un document ultérieur envoyé à Graylog contient le champ « level » avec la valeur « error » (type chaîne de caractères), il sera rejeté parce que le type de données ne correspond pas à celui initialement défini. Cela déclenche une erreur mapper_parsing_exception avec la raison failed to parse field [level] of type [long] in document with id 'xxx'.

Ce problème peut survenir avec n’importe quel champ si les types de données sont incohérents entre les documents.

Pour corriger ce problème, vous avez deux options :

La solution idéale consiste à standardiser les types de données utilisés pour les champs sur tous les systèmes qui envoient des données à Graylog. Par exemple, assurez-vous que le champ « level » soit toujours envoyé soit comme une chaîne de caractères (par exemple « error », « warn », etc.), soit toujours comme un nombre (3, 4, etc.). Cette cohérence évite les conflits de mappage et garantit que tous les documents sont correctement ingérés.

Si la standardisation des types de données sur tous les systèmes n’est pas possible, vous pouvez utiliser les pipelines de Graylog pour convertir les types de données à la réception. Les pipelines permettent de définir des règles qui transforment les données selon des conditions spécifiques.

Pour mettre en place cette solution :

  • Rendez-vous dans « System » > « Pipelines » dans l’interface web Graylog.
  • Cliquez sur « Add new pipeline » pour créer un nouveau pipeline.
  • Définissez des règles pour convertir le champ « level » (ou d’autres champs) vers le type de données souhaité. Par exemple, vous pouvez convertir des niveaux numériques en leur représentation textuelle correspondante (3 en « error », 4 en « warning », etc.).

Cette approche garantit que toutes les données entrantes respectent les types de données attendus, évitant ainsi les conflits de mappage.

Pour les utilisateurs avancés, Graylog permet de consulter et de modifier manuellement le mappage des index :

  • Allez dans « System » > « Indices » depuis l’interface web Graylog.
  • Sélectionnez l’index concerné.
  • Accédez à « Configuration » > « Configure index field types » pour consulter ou modifier les mappages des champs.

Cependant, toute modification manuelle doit être effectuée avec précaution, car un mappage incorrect peut entraîner d’autres problèmes d’ingestion.