Graylog: Problèmes de mappage des données
Comment résoudre les problèmes de mappage des données d’index dans 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 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"]];
Raison du problème
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.
Comment résoudre ce problème
Pour corriger ce problème, vous avez deux options :
1. Assurer la cohérence des types de données entre les systèmes
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.
2. Utiliser les pipelines Graylog pour la conversion des données
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.
Visualisation et modification des mappages d’index
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.