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 lista para usar que proporciona una serie de beneficios, incluyendo:
- Servidor de correo electrónico SMTP ilimitado y dedicado incluido.
- Actualizaciones sin esfuerzo con solo un clic.
- Nombre de dominio personalizable asegurado con HTTPS (por ejemplo, https://logs.tu-empresa.com).
- Rendimiento óptimo y seguridad robusta gracias a una VM privada y dedicada.
Ahorra tiempo y simplifica tu vida: ¡solo toma 5 minutos probar la solución de Graylog cloud hosting de Stackhero!
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.