Graylog: Probleme bei der Datenzuordnung
Wie man Probleme bei der Datenzuordnung von Graylog-Indizes löst
👋 Willkommen bei der Stackhero-Dokumentation!
Stackhero bietet eine einsatzbereite Graylog Cloud-Lösung, die zahlreiche Vorteile bietet, darunter:
- Unbegrenzter und dedizierter SMTP-E-Mail-Server inklusive.
- Mühelose Updates mit nur einem Klick.
- Anpassbarer Domainname gesichert mit HTTPS (zum Beispiel, https://logs.ihre-firma.com).
- Optimale Performance und robuste Sicherheit durch eine private und dedizierte VM.
Sparen Sie Zeit und vereinfachen Sie Ihr Leben: Es dauert nur 5 Minuten, um die Graylog Cloud Hosting-Lösung von Stackhero auszuprobieren!
Ein häufiges Problem in Graylog sind Datenzuordnungskonflikte, die zu fehlgeschlagenen Indexierungsversuchen führen können. Sie könnten auf dieses Problem stoßen, wenn Sie Protokolle wie diese sehen:
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"]];
Grund für das Problem
Dieses Problem entsteht durch die dynamische Zuordnungsfunktion von OpenSearch. Die dynamische Zuordnung bestimmt automatisch den Datentyp jedes Feldes basierend auf dem ersten Dokument, das in einen Index geschrieben wird. Sobald festgelegt, ist dieser Datentyp "festgelegt", und alle zukünftigen Dokumente mit einem anderen Datentyp für dieses Feld werden abgelehnt, was zu einer Mapper-Parsing-Ausnahme führt.
Wenn ein neuer Index erstellt wird, definiert das erste Dokument die Indexzuordnung. Wenn das Dokument beispielsweise ein "level"-Feld mit einem Wert von 3 (einem numerischen Wert) enthält, setzt OpenSearch den Datentyp für "level" auf "long" (einen numerischen Typ). Wenn ein späteres Dokument, das an Graylog gesendet wird, das "level"-Feld auf "error" (einen String-Typ) setzt, wird es abgelehnt, da der Datentyp nicht mit dem ursprünglich festgelegten Typ übereinstimmt. Dies löst einen mapper_parsing_exception-Fehler mit dem Grund failed to parse field [level] of type [long] in document with id 'xxx'. aus.
Dieses Problem kann bei jedem Feld auftreten, wenn die Datentypen zwischen den Dokumenten inkonsistent sind.
Wie man das Problem löst
Um dieses Problem zu lösen, haben Sie 2 Optionen:
1. Sicherstellen konsistenter Datentypen über Systeme hinweg
Die ideale Lösung besteht darin, die verwendeten Datentypen für Felder in allen Systemen, die Daten an Graylog senden, zu standardisieren. Stellen Sie beispielsweise sicher, dass das "level"-Feld immer entweder als String (wie "error", "warn" usw.) oder immer als Zahl (3, 4 usw.) gesendet wird. Diese Konsistenz verhindert Zuordnungskonflikte und stellt sicher, dass alle Dokumente korrekt aufgenommen werden.
2. Verwendung von Graylog-Pipelines zur Datenkonvertierung
Wenn die Standardisierung der Datentypen über alle Systeme hinweg nicht machbar ist, können Sie die Pipelines von Graylog verwenden, um Datentypen bei Empfang zu konvertieren. Pipelines ermöglichen es Ihnen, Regeln zu definieren, die Daten basierend auf bestimmten Bedingungen transformieren.
Um diese Lösung umzusetzen:
- Navigieren Sie zu "System" > "Pipelines" in der Graylog-Weboberfläche.
- Klicken Sie auf "Add new pipeline", um eine neue Pipeline zu erstellen.
- Definieren Sie Regeln, um das "level"-Feld (oder andere Felder) in den gewünschten Datentyp zu konvertieren. Beispielsweise können Sie numerische Level in ihre entsprechenden String-Darstellungen konvertieren (wie 3 zu "error", 4 zu "warning" usw.).
Dieser Ansatz stellt sicher, dass alle eingehenden Daten den erwarteten Datentypen entsprechen und verhindert Zuordnungskonflikte.
Anzeigen und Ändern von Indexzuordnungen
Für fortgeschrittene Benutzer bietet Graylog die Möglichkeit, die Zuordnung von Indizes anzuzeigen und manuell anzupassen:
- Gehen Sie zu "System" > "Indices" in der Graylog-Weboberfläche.
- Wählen Sie den relevanten Index aus.
- Navigieren Sie zu "Configuration" > "Configure index field types", um die Feldzuordnungen anzuzeigen oder zu ändern.
Manuelle Anpassungen sollten jedoch mit Vorsicht vorgenommen werden, da falsche Zuordnungen zu weiteren Aufnahmeproblemen führen können.