Graylog: Fout "failed to parse field [XXXX] of type [YYYY]" oplossen

Deze documentatie maakt deel uit van de Aan de slag-gids. Bekijk de volledige gids hier: Hoe u aan de slag gaat met Graylog.

👋 Welkom bij de Stackhero documentatie!

Stackhero biedt een kant-en-klare Graylog cloud oplossing die tal van voordelen biedt, waaronder:

  • Onbeperkte en toegewijde SMTP e-mailserver inbegrepen.
  • Moeiteloze updates met slechts één klik.
  • Aanpasbare domeinnaam beveiligd met HTTPS (bijvoorbeeld, https://logs.uw-bedrijf.com).
  • Optimale prestaties en robuuste beveiliging aangedreven door een privé en toegewijde VM.

Bespaar tijd en vereenvoudig uw leven: het kost slechts 5 minuten om de Graylog cloud hosting oplossing van Stackhero te proberen!

U kunt een foutmelding tegenkomen zoals:

org.opensearch.index.mapper.MapperParsingException: failed to parse field [time] of type [long] in document with id 'xxxx'

U kunt deze fout bekijken in de logs die beschikbaar zijn in het Stackhero-dashboard of in het Graylog-beheerpanel onder System > Overview > Indexer failures.

Deze fout geeft aan dat er een log is verzonden met een waarde voor het veld time die niet overeenkomt met het verwachte type (in dit geval een numerieke waarde van het type "long"). Graylog maakt gebruik van de dynamische mapping-functionaliteit van OpenSearch. Wanneer een log voor het eerst wordt verzonden, probeert OpenSearch het veldtype te bepalen. Bijvoorbeeld, als een log het veld time bevat met de numerieke waarde 1234, wordt dit als numeriek veld gedefinieerd. Als vervolgens een log wordt verzonden met het veld time als "abcd", een string, zal OpenSearch dit weigeren omdat het een numerieke waarde verwacht.

Let op: de veldnaam time wordt hier alleen als voorbeeld gebruikt. Dit kan elk veld en elk type zijn.

Om dit probleem op te lossen, moet u het type dat OpenSearch verwacht opnieuw definiëren. Raadpleeg voor meer informatie de officiële Graylog-documentatie.

Voordat u verdergaat, schakelt u OpenSearch-toegang in via het Stackhero-dashboard. Navigeer naar uw Graylog-service en klik op de knop "Configure" om OpenSearch-toegang te activeren.

Wees voorzichtig met deze wijzigingen; een verkeerde configuratie kan uw OpenSearch-cluster blokkeren en mogelijk tot dataverlies leiden. Als u twijfelt, ga dan niet verder.

  1. Definieer uw nieuwe mapping. In dit voorbeeld definiëren we het veld time opnieuw als type string. Beschikbare types vindt u in de OpenSearch field datatypes documentatie.

  2. Sla de volgende inhoud op in een bestand met de naam graylog-custom-mapping.json:

    {
      "template": "graylog_*",
      "mappings": {
        "message": {
          "properties": {
            "time": {
              "type": "string",
              "index": "not_analyzed"
            }
          }
        }
      }
    }
    
  3. Stuur dit bestand met het volgende curl-commando (vervang <XXXXXX>.stackhero-network.com door de domeinnaam van uw instance):

    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'
    

    U zou een antwoord moeten krijgen zoals:

    {
      "acknowledged": true
    }
    
  4. Controleer tot slot of de mapping is bijgewerkt met dit commando (vervang de domeinnaam indien nodig):

    curl -u 'admin' -X GET 'https://<XXXXXX>.stackhero-network.com/opensearch/graylog_deflector/_mapping?pretty'