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 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.

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.

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.

  1. Defina su nuevo mapping. En este ejemplo, redefinimos el campo time como tipo string. Puede consultar los tipos disponibles en la documentación de tipos de campo de OpenSearch.

  2. Guarde el siguiente contenido en un archivo llamado graylog-custom-mapping.json:

    {
      "template": "graylog_*",
      "mappings": {
        "message": {
          "properties": {
            "time": {
              "type": "string",
              "index": "not_analyzed"
            }
          }
        }
      }
    }
    
  3. Envíe este archivo utilizando el siguiente comando curl (sustituya <XXXXXX>.stackhero-network.com por 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
    }
    
  4. 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'