Zum Inhalt springen

Fehlerbehebung

Fehlerbehebung bei nicht zustellbaren Nachrichten in STACKIT Intake

Abschnitt betitelt „Fehlerbehebung bei nicht zustellbaren Nachrichten in STACKIT Intake“

Wenn Sie Probleme damit haben, dass Nachrichten nicht in Ihrer STACKIT Dremio Iceberg-Tabelle erscheinen, kann dies mehrere Ursachen haben. Die folgenden Schritte zur Fehlerbehebung helfen Ihnen dabei, das Problem zu identifizieren und zu beheben.

Häufige Gründe für nicht zugestellte Nachrichten

Abschnitt betitelt „Häufige Gründe für nicht zugestellte Nachrichten“
  • Nachrichten in der Dead Letter Queue (DLQ): Ihre Nachrichten wurden möglicherweise aufgrund eines Verarbeitungsfehlers in die DLQ verschoben. Folgen Sie den Schritten im nächsten Abschnitt, um dies zu diagnostizieren.
  • Flushing-Verzögerung: Daten werden regelmäßig aus dem Puffer von Intake in die Dremio-Tabelle geschrieben (Flushing). Wenn Ihre Nachrichten nicht sofort sichtbar sind, kann dies an dieser Verzögerung liegen.
    • Lösung: Warten Sie einige Minuten (in Hochlastszenarien bis zu 5 Minuten oder länger), bis die Daten geschrieben wurden und in Dremio sichtbar werden. Die Nachrichten werden während dieser Zeit sicher gepuffert.
  • Authentifizierungsfehler (abgelaufener PAT): Wenn das von Ihrem Intake verwendete Personal Access Token (PAT) abgelaufen ist, kann Intake keine Daten mehr in Dremio schreiben. Der Status von Intake wird dies wahrscheinlich durch einen fehlgeschlagenen Zustand oder eine Fehlermeldung widerspiegeln.
    • Lösung: Erstellen Sie ein neues PAT für Ihren technischen Dremio-Benutzer und aktualisieren Sie Intake mit dem neuen Token. Folgen Sie dazu den Anweisungen im folgenden Abschnitt.

Wenn ein abgelaufener oder ungültiger PAT die Ursache für Ihren Ingestion-Fehler ist, müssen Sie ein neues Token generieren und Ihr Intake aktualisieren.

  1. Generieren Sie ein neues PAT in Dremio Melden Sie sich unter Verwendung der Dremio-Konfigurationsanleitung als Ihr dedizierter technischer Benutzer (z. B. intake_write_user) bei Dremio an.

    • Gehen Sie zu den Kontoeinstellungen und wählen Sie den Reiter Personal Access Tokens.
    • Klicken Sie auf Token generieren und vergeben Sie einen neuen Namen sowie eine Ablaufzeit.
  2. Aktualisieren Sie Intake mit dem neuen PAT

    Verwenden Sie eine PUT-Anfrage, um das Feld personalAccessToken Ihres Intakes zu aktualisieren.

    Terminal-Fenster
    stackit curl -X PUT \
    "[https://intake.api.eu01.stackit.cloud/v1beta/projects/$PROJECT_ID/regions/eu01/intakes/$INTAKE_ID](https://intake.api.eu01.stackit.cloud/v1beta/projects/$PROJECT_ID/regions/eu01/intakes/$INTAKE_ID)" \
    -H "Content-Type: application/json" \
    --data '{
    "catalog": {
    "uri": "'"$DREMIO_CATALOG_URI"'",
    "warehouse": "'"$DREMIO_WAREHOUSE"'",
    "auth": {
    "type": "dremio",
    "dremio": {
    "tokenEndpoint": "'"$DREMIO_TOKEN_ENDPOINT"'",
    "personalAccessToken": "<YOUR_NEW_PAT>"
    }
    }
    }
    }'

    Dies aktualisiert die Authentifizierungsdaten Ihres Intakes, sodass es sich neu verbinden und das Schreiben von Daten in Dremio fortsetzen kann.

Diagnose von Nachrichten in der Dead Letter Queue (DLQ)

Abschnitt betitelt „Diagnose von Nachrichten in der Dead Letter Queue (DLQ)“

Wenn das Problem keine einfache Flushing-Verzögerung oder ein abgelaufenes PAT ist, wurden Ihre Nachrichten möglicherweise in die DLQ verschoben. Die folgenden Schritte führen Sie durch die Diagnose und Behebung dieser Probleme.

  1. Überprüfen Sie den Intake-Status auf Fehler

    Der erste Schritt besteht darin, den Status Ihres Intakes zu überprüfen. Der Status von Intake kann eine schnelle Zusammenfassung aller laufenden Probleme liefern.

    Verwenden Sie den folgenden Befehl, um die Details Ihres Intakes abzurufen:

    Terminal-Fenster
    stackit curl -X GET \
    "[https://intake.api.eu01.stackit.cloud/v1beta/projects/$PROJECT_ID/regions/eu01/intakes/$INTAKE_ID](https://intake.api.eu01.stackit.cloud/v1beta/projects/$PROJECT_ID/regions/eu01/intakes/$INTAKE_ID)"

    Achten Sie auf zwei Schlüsselfelder in der JSON-Antwort:

    • undeliveredMessageCount: Wenn diese Zahl größer als Null ist, deutet dies darauf hin, dass Nachrichten an die DLQ gesendet wurden.
    • failure_message: Dieses Feld enthält die letzte aufgetretene Fehlermeldung, die oft direkt auf die Ursache des Problems hinweist (z. B. “JSON parsing failed”).
  2. Nachrichten aus der Dead Letter Queue (DLQ) lesen

    Um die problematischen Nachrichten im Detail zu untersuchen, müssen Sie aus dem DLQ-Topic lesen. Sie sollten bereits einen Intake-Benutzer vom Typ deadletter für diesen Zweck gemäß den Anweisungen in der Getting-Started-Anleitung erstellt haben.

    Verwenden Sie einen Kafka-Client wie kcat, um Nachrichten aus dem DLQ-Topic zu konsumieren. Ersetzen Sie die Platzhalterwerte durch Ihre eigenen:

    Terminal-Fenster
    kcat -b $INTAKE_RUNNER_ID.intake.eu01.onstackit.cloud:9094 \
    -t deadletter-intake-"$INTAKE_ID" \
    -C \
    -X security.protocol=SASL_SSL \
    -X sasl.mechanisms=SCRAM-SHA-512 \
    -X sasl.username=intake-user-"$INTAKE_USER_DLQ_ID" \
    -X sasl.password='<YOUR_SECURE_PASSWORD_FOR_DEADLETTER_USER>'

    Dieser Befehl gibt den Inhalt der Nachrichten in der DLQ in Ihrem Terminal aus, sodass Sie diese auf Fehler untersuchen können.

Basierend auf den Informationen aus der failure_message und den Nachrichten, die Sie aus der DLQ gelesen haben, sind hier einige häufige Gründe für nicht zustellbare Nachrichten und deren Behebung:

  • Fehlerhaftes JSON: Die häufigste Ursache für nicht zustellbare Nachrichten ist ein Payload, der kein gültiges JSON ist. Stellen Sie sicher, dass Ihre Anwendung wohlgeformte JSON-Objekte sendet.
    • Lösung: Korrigieren Sie das Format des JSON-Payloads in Ihrem Daten-Producer.
  • Schema-Abweichung oder Evolutionsprobleme: Die Daten in Ihrer Nachricht entsprechen möglicherweise nicht dem Schema der Ziel-Iceberg-Tabelle. Dies kann passieren, wenn ein Feld einen anderen Datentyp hat als ursprünglich abgeleitet oder explizit definiert.
    • Lösung: Überprüfen Sie die failure_message auf Details zum Schemakonflikt. Wenn sich das Schema Ihrer Daten geändert hat, müssen Sie möglicherweise Ihre Dremio-Tabelle aktualisieren, um das neue Schema zu berücksichtigen.
  • Nicht unterstützte Datentypen: Einige Datentypen werden von Intake möglicherweise nicht unterstützt oder nicht korrekt verarbeitet.
    • Lösung: Formatieren Sie Ihre Daten so um, dass unterstützte Typen verwendet werden (stellen Sie z. B. sicher, dass Zeitstempel in einem erkennbaren String-Format vorliegen).
  • Dremio-Berechtigungen: Dem von Intake verwendeten Dremio Personal Access Token (PAT) fehlen möglicherweise die erforderlichen Berechtigungen, um in die Zieltabelle oder den Namespace zu schreiben.
    • Lösung: Stellen Sie sicher, dass das PAT über die erforderlichen Berechtigungen USAGE, CREATE FOLDER, COMMIT und CREATE TABLE verfügt, wie in der Dremio-Konfigurationsanleitung beschrieben.

Kontaktieren Sie den STACKIT Support, um Hilfe zu erhalten

Abschnitt betitelt „Kontaktieren Sie den STACKIT Support, um Hilfe zu erhalten“

Wenn diese Anleitung zur Fehlerbehebung Ihnen nicht bei der Lösung Ihres Problems geholfen hat, wenden Sie sich an das Help Center .