Graylog: Gestionar el error "failed to parse field [XXXX] of type [YYYY]"
Esta documentación forma parte de la guía Primeros pasos. Consulte la guía completa aquí: Cómo empezar con 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!
Puede encontrarse con un error como el siguiente:
org.opensearch.index.mapper.MapperParsingException: failed to parse field [time] of type [long] in document with id 'xxxx'
Puede consultar este error en los logs disponibles en el panel de Stackhero o en el panel de administración de Graylog en System > Overview > Indexer failures.
Este error indica que se ha enviado un log con un valor para el campo time que no coincide con el tipo esperado (en este caso, un valor numérico de tipo "long"). Graylog utiliza la funcionalidad de mapeo dinámico de OpenSearch. Cuando se envía un log por primera vez, OpenSearch intenta adivinar el tipo de los campos. Por ejemplo, si un log incluye el campo time con el valor numérico 1234, OpenSearch lo define como un campo numérico. Si posteriormente se envía otro log con el campo time establecido como "abcd", una cadena de texto, OpenSearch lo rechazará porque espera un valor numérico.
Tenga en cuenta que el nombre del campo time se utiliza solo como ejemplo. Puede tratarse de cualquier nombre de campo y tipo.
Para resolver este problema, debe redefinir el tipo que espera OpenSearch. Para más información, consulte la documentación oficial de Graylog.
Actualizar el mapping de OpenSearch
Antes de continuar, active el acceso a OpenSearch en el panel de Stackhero. Vaya a su servicio Graylog y haga clic en el botón "Configure" para activar el acceso a OpenSearch.
Tenga cuidado con estos cambios, ya que una configuración incorrecta puede bloquear su clúster de OpenSearch y provocar la pérdida de datos. Si tiene dudas, no continúe.
-
Defina su nuevo mapping. En este ejemplo, redefinimos el campo
timecomo tipo string. Puede consultar los tipos disponibles en la documentación de tipos de campo de OpenSearch. -
Guarde el siguiente contenido en un archivo llamado
graylog-custom-mapping.json:{ "template": "graylog_*", "mappings": { "message": { "properties": { "time": { "type": "string", "index": "not_analyzed" } } } } } -
Envíe este archivo utilizando el siguiente comando curl (sustituya
<XXXXXX>.stackhero-network.compor el dominio de su instancia):curl -u 'admin' -X PUT -d @'graylog-custom-mapping.json' -H 'Content-Type: application/json' 'https://<XXXXXX>.stackhero-network.com/opensearch/_template/graylog-custom-mapping?pretty'Debería recibir una respuesta como:
{ "acknowledged": true } -
Por último, verifique que el mapping se ha actualizado con este comando (sustituya el dominio si es necesario):
curl -u 'admin' -X GET 'https://<XXXXXX>.stackhero-network.com/opensearch/graylog_deflector/_mapping?pretty'