Graylog: Fehler "failed to parse field [XXXX] of type [YYYY]" beheben
Diese Dokumentation ist Teil des Erste Schritte-Leitfadens. Den vollständigen Leitfaden finden Sie hier: Wie Sie mit Graylog starten.
👋 Willkommen in der Stackhero-Dokumentation
Stackhero bietet eine vollständig verwaltete Graylog Cloud-Lösung, die auf Geschwindigkeit und Einfachheit ausgelegt ist. Sie können:
- Auf einen unbegrenzten, dedizierten SMTP-E-Mail-Server vertrauen, der in Ihrem Service enthalten ist.
- Updates mühelos per Klick anwenden – ganz ohne manuellen Aufwand.
- Einen individuellen Domainnamen nutzen, der durch HTTPS gesichert ist (zum Beispiel https://logs.your-company.com), sodass Ihr Team sicheren und direkten Zugriff erhält.
- Von hoher Performance und Sicherheit auf einer privaten, dedizierten Infrastruktur profitieren – ohne geteilte Ressourcen oder störende Nachbarn.
Konzentrieren Sie sich auf Ihre Daten, nicht auf das Tooling: Mit Stackheros Graylog Cloud Hosting können Sie in nur wenigen Minuten starten.
Es kann vorkommen, dass Sie einen Fehler wie diesen sehen:
org.opensearch.index.mapper.MapperParsingException: failed to parse field [time] of type [long] in document with id 'xxxx'
Sie können diesen Fehler in den Logs im Stackhero-Dashboard oder im Graylog-Adminbereich unter System > Overview > Indexer failures einsehen.
Dieser Fehler bedeutet, dass ein Log mit einem Wert für das Feld time gesendet wurde, der nicht dem erwarteten Typ entspricht (in diesem Fall ein numerischer Wert vom Typ "long"). Graylog nutzt das dynamische Mapping-Feature von OpenSearch. Wenn ein Log zum ersten Mal gesendet wird, versucht OpenSearch, die Feldtypen zu erkennen. Enthält ein Log beispielsweise das Feld time mit dem numerischen Wert 1234, wird es als numerisches Feld definiert. Wird später ein Log mit dem Feld time und dem Wert "abcd" (also ein String) gesendet, lehnt OpenSearch dies ab, da ein numerischer Wert erwartet wird.
Beachten Sie, dass der Feldname time hier nur als Beispiel dient. Es kann sich um beliebige Feldnamen und Typen handeln.
Um dieses Problem zu beheben, müssen Sie den von OpenSearch erwarteten Typ neu definieren. Weitere Informationen finden Sie in der offiziellen Graylog-Dokumentation.
OpenSearch-Mapping aktualisieren
Bevor Sie fortfahren, aktivieren Sie den OpenSearch-Zugang im Stackhero-Dashboard. Navigieren Sie zu Ihrem Graylog-Dienst und klicken Sie auf die Schaltfläche "Konfigurieren", um den OpenSearch-Zugang zu aktivieren.
Seien Sie vorsichtig mit diesen Änderungen, da eine fehlerhafte Konfiguration Ihren OpenSearch-Cluster blockieren und zu Datenverlust führen kann. Wenn Sie unsicher sind, führen Sie die Änderungen nicht durch.
-
Definieren Sie Ihr neues Mapping. In diesem Beispiel definieren wir das Feld
timeals Typ string. Eine Übersicht der verfügbaren Typen finden Sie in der OpenSearch Feldtypen-Dokumentation. -
Speichern Sie den folgenden Inhalt in einer Datei namens
graylog-custom-mapping.json:{ "template": "graylog_*", "mappings": { "message": { "properties": { "time": { "type": "string", "index": "not_analyzed" } } } } } -
Senden Sie diese Datei mit folgendem curl-Befehl (ersetzen Sie
<XXXXXX>.stackhero-network.comdurch den Domainnamen Ihrer Instanz):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'Sie sollten eine Antwort wie diese erhalten:
{ "acknowledged": true } -
Überprüfen Sie abschließend, ob das Mapping aktualisiert wurde, mit folgendem Befehl (passen Sie die Domain ggf. an):
curl -u 'admin' -X GET 'https://<XXXXXX>.stackhero-network.com/opensearch/graylog_deflector/_mapping?pretty'