Graylog: Problèmes de mapping des données
Comment résoudre les problèmes de mapping 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 mapping 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"]];
Raison du problème
Ce problème provient de la fonctionnalité de mapping dynamique d'OpenSearch. Le mapping 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 mapping 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.
Comment résoudre le problème
Pour résoudre ce problème, vous avez 2 options :
1. Assurer la cohérence des types de données entre les systèmes
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 mapping et garantit que tous les documents sont ingérés correctement.
2. Utiliser les pipelines Graylog pour la conversion des données
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 mapping.
Visualisation et modification des mappings d'index
Pour les utilisateurs avancés, Graylog offre la possibilité de visualiser et d'ajuster manuellement le mapping 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 mappings des champs.
Cependant, les ajustements manuels doivent être abordés avec prudence, car des mappings incorrects peuvent entraîner d'autres problèmes d'ingestion.