Graylog: Problèmes de mappage des données

Comment résoudre les problèmes de mappage des données d'index 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 problème courant dans Graylog est les conflits de mappage des données qui peuvent entraîner des échecs de tentatives d'indexation. Vous pourriez rencontrer ce problème si vous voyez des logs comme 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 provient de la fonctionnalité de mappage dynamique d'OpenSearch. Le mappage dynamique détermine automatiquement le type de données de chaque champ en fonction du premier document écrit dans un index. Une fois défini, ce type de données est "verrouillé", et tout document futur avec un type de données différent pour ce champ est rejeté, provoquant une exception de parsing du mapper.

Lorsqu'un nouvel index est créé, le premier document définit le mappage de l'index. Par exemple, si le document contient un champ "level" avec une valeur de 3 (une valeur numérique), OpenSearch définit le type de données pour "level" sur "long" (un type numérique). Si un document ultérieur envoyé à Graylog contient le champ "level" défini sur "error" (un type chaîne), il sera rejeté car le type de données ne correspond pas au type 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 résoudre ce problème, vous avez 2 options :

La solution idéale est de standardiser les types de données utilisés pour les champs dans tous les systèmes envoyant des données à Graylog. Par exemple, assurez-vous que le champ "level" est toujours envoyé soit comme une chaîne (comme "error", "warn", etc.) soit toujours comme un nombre (3, 4, etc.). Cette cohérence prévient les conflits de mappage et garantit que tous les documents sont ingérés correctement.

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

Pour mettre en œuvre cette solution :

  • Accédez à "System" > "Pipelines" dans l'interface web de 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) au type de données souhaité. Par exemple, vous pouvez convertir les niveaux numériques en leurs représentations chaîne correspondantes (comme 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 offre la possibilité de visualiser et d'ajuster manuellement le mappage des indices :

  • Allez dans "System" > "Indices" dans l'interface web de Graylog.
  • Sélectionnez l'index pertinent.
  • Accédez à "Configuration" > "Configure index field types" pour visualiser ou modifier les mappages des champs.

Cependant, les ajustements manuels doivent être abordés avec prudence, car des mappages incorrects peuvent entraîner d'autres problèmes d'ingestion.