Graylog: Problemas de mapeo de datos
Cómo resolver problemas de mapeo de datos en índices de Graylog
👋 Bienvenido a la documentación de Stackhero
Stackhero ofrece una solución Graylog cloud totalmente gestionada, diseñada para ofrecer velocidad y simplicidad. Puede:
- Contar con un servidor SMTP de correo electrónico dedicado e ilimitado incluido con su servicio.
- Aplicar actualizaciones fácilmente con un solo clic, sin necesidad de intervención manual.
- Utilizar un nombre de dominio personalizado protegido por HTTPS (por ejemplo, https://logs.su-empresa.com), proporcionando a su equipo un acceso directo y seguro.
- Disfrutar de un alto nivel de rendimiento y seguridad en una infraestructura privada y dedicada, sin recursos compartidos ni vecinos ruidosos.
Concéntrese en sus datos, no en sus herramientas: puede empezar a utilizar la solución de Graylog cloud hosting de Stackhero en solo unos minutos.
Un problema habitual en Graylog son los conflictos de mapeo de datos, que pueden provocar fallos en los intentos de indexación. Puede que se encuentre con este problema si ve registros como los siguientes:
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"]];
Motivo del problema
Este problema surge debido a la funcionalidad de mapeo dinámico de OpenSearch. El mapeo dinámico determina automáticamente el tipo de dato de cada campo en función del primer documento que se escribe en un índice. Una vez establecido, este tipo de dato queda "fijado", y cualquier documento posterior que contenga un tipo de dato diferente para ese campo será rechazado, provocando una excepción de tipo mapper parsing exception.
Cuando se crea un nuevo índice, el primer documento define el mapeo del índice. Por ejemplo, si el documento contiene un campo "level" con el valor 3 (un valor numérico), OpenSearch establece el tipo de dato de "level" como "long" (tipo numérico). Si posteriormente se envía a Graylog un documento con el campo "level" con el valor "error" (tipo cadena de texto), será rechazado porque el tipo de dato no coincide con el tipo definido inicialmente. Esto genera un error mapper_parsing_exception con el motivo failed to parse field [level] of type [long] in document with id 'xxx'.
Este problema puede ocurrir con cualquier campo si los tipos de datos no son consistentes entre los documentos.
Cómo resolver el problema
Para resolver este problema, dispone de dos opciones:
1. Garantizar la coherencia de los tipos de datos entre sistemas
La solución ideal es estandarizar los tipos de datos utilizados para los campos en todos los sistemas que envían datos a Graylog. Por ejemplo, asegúrese de que el campo "level" se envíe siempre como una cadena de texto (como "error", "warn", etc.) o siempre como un número (3, 4, etc.). Esta coherencia evita conflictos de mapeo y garantiza que todos los documentos se ingieran correctamente.
2. Utilizar pipelines de Graylog para la conversión de datos
Si no es posible estandarizar los tipos de datos en todos los sistemas, puede utilizar los pipelines de Graylog para convertir los tipos de datos al recibirlos. Los pipelines permiten definir reglas que transforman los datos en función de condiciones específicas.
Para implementar esta solución:
- Acceda a "System" > "Pipelines" en la interfaz web de Graylog.
- Haga clic en "Add new pipeline" para crear un nuevo pipeline.
- Defina reglas para convertir el campo "level" (u otros campos) al tipo de dato deseado. Por ejemplo, puede convertir niveles numéricos a sus representaciones en texto correspondientes (como 3 a "error", 4 a "warning", etc.).
Este enfoque garantiza que todos los datos entrantes cumplan con los tipos de datos esperados, evitando conflictos de mapeo.
Visualización y modificación de los mapeos de índices
Para usuarios avanzados, Graylog permite consultar y ajustar manualmente el mapeo de los índices:
- Vaya a "System" > "Indices" en la interfaz web de Graylog.
- Seleccione el índice correspondiente.
- Acceda a "Configuration" > "Configure index field types" para ver o modificar los mapeos de los campos.
Sin embargo, las modificaciones manuales deben realizarse con precaución, ya que un mapeo incorrecto puede provocar nuevos problemas de ingesta.