Plattformlogs zur Fehlerbehebung bei Cloud Storage-Importen verwenden

In diesem Leitfaden erfahren Sie, wie Sie mithilfe von Google Cloud-Plattformprotokollen Probleme beheben, die beim Aufnehmen von Daten mit Cloud Storage-Importthemen auftreten.

Fehler bei der Datenaufnahme in Cloud Storage-Importthemen

Bei Cloud Storage-Importthemen können Probleme auftreten, die verhindern, dass Daten erfolgreich aufgenommen werden. Wenn Sie beispielsweise ein Cloud Storage-Importthema verwenden, kann es zu Problemen beim Aufnehmen eines Cloud Storage-Objekts oder eines Teils eines Objekts kommen.

In der folgenden Liste werden Gründe für die Aufnahmefehler in Cloud Storage-Importthemen beschrieben, die Plattformprotokolle generieren:

  • Nachrichtengröße

    • Einzelne Nachrichten dürfen nicht größer als 10 MB sein. In diesem Fall wird die gesamte Nachricht übersprungen.

    • Wenn Sie das Avro- oder das Pub/Sub Avro-Format verwenden, dürfen Nachrichtenblöcke nicht größer als 16 MB sein. Größere Nachrichtenblöcke werden übersprungen.

  • Nachrichtenattribute

    • Nachrichten können maximal 100 Attribute haben. Alle zusätzlichen Attribute werden beim Aufnehmen der Nachricht gelöscht.

    • Attributschlüssel dürfen nicht größer als 256 Byte und Werte nicht größer als 1.024 Byte sein. Größere Schlüssel oder Werte werden bei der Datenaufnahme aus der Nachricht entfernt.

      Weitere Informationen zu den Richtlinien für die Verwendung von Nachrichtenschlüsseln und ‑attributen finden Sie unter Attribute zum Veröffentlichen einer Nachricht verwenden.

  • Avro-Formatierung

    • Prüfen Sie, ob Ihre Avro-Objekte richtig formatiert sind. Eine falsche Formatierung verhindert die Aufnahme der Nachricht.
  • Datenformat

Plattform-Logs

Ein unterstützter Google Cloud-Dienst generiert eigene Plattformprotokolle, in denen Ereignisse und Aktivitäten erfasst werden, die für den Betrieb dieses Dienstes relevant sind. Diese Plattformprotokolle enthalten detaillierte Informationen zu den Vorgängen in einem Dienst, einschließlich erfolgreicher Vorgänge, Fehlern, Warnungen und anderen bemerkenswerten Ereignissen.

Plattformprotokolle sind Teil von Cloud Logging und bieten dieselben Funktionen. Im Folgenden finden Sie beispielsweise eine Liste wichtiger Funktionen für Plattformprotokolle:

Weitere Informationen zu Plattformprotokollen finden Sie unter Google Cloud-Plattformprotokolle.

Erforderliche Rollen und Berechtigungen für die Verwendung von Plattformprotokollen

Prüfen Sie zuerst, ob Sie Zugriff auf die Protokollierung haben. Sie benötigen die IAM-Rolle (Identity and Access Management) Logbetrachter (roles/logging.viewer). Weitere Informationen zum Logging-Zugriff finden Sie unter Zugriffssteuerung mit IAM.

Im Folgenden wird beschrieben, wie Sie den IAM-Zugriff überprüfen und gewähren:

Plattformlogs aktivieren

Plattformprotokolle sind für importierte Themen standardmäßig deaktiviert. Sie können Plattformprotokolle aktivieren, wenn Sie ein Cloud Storage-Importthema erstellen oder aktualisieren.

Wenn Sie Plattformlogs deaktivieren möchten, aktualisieren Sie das Cloud Storage-Importthema.

Plattformprotokolle beim Erstellen eines Cloud Storage-Importthemas aktivieren

Sie müssen die Voraussetzungen für das Erstellen eines Cloud Storage-Importthemas erfüllen.

So erstellen Sie ein Cloud Storage-Importthema mit aktivierten Plattformprotokollen:

Console

  1. Rufen Sie in der Google Cloud Console die Seite Themen auf.

    Themen aufrufen

  2. Klicken Sie auf Thema erstellen.

    Die Seite mit den Themendetails wird geöffnet.

  3. Geben Sie im Feld Themen-ID eine ID für das Cloud Storage-Importthema ein.

    Weitere Informationen zur Benennung von Themen finden Sie in den Benennungsrichtlinien.

  4. Wählen Sie Standardabo hinzufügen aus.

  5. Wählen Sie Aufnahme aktivieren aus.

  6. Geben Sie die Optionen für die Datenaufnahme an. Folgen Sie dazu der Anleitung unter Cloud Storage-Importthema erstellen.
  7. Wählen Sie Plattformprotokolle aktivieren aus.
  8. Behalten Sie die anderen Standardeinstellungen bei.
  9. Klicken Sie auf Thema erstellen.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Wenn Sie Plattformprotokolle aktivieren möchten, muss das Flag --ingestion-log-severity auf WARNING oder höher gesetzt sein. Führen Sie den Befehl gcloud pubsub topics create aus:

    gcloud pubsub topics create TOPIC_ID\
        --cloud-storage-ingestion-bucket=BUCKET_NAME\
        --cloud-storage-ingestion-input-format=INPUT_FORMAT\
        --ingestion-log-severity=WARNING

    Ersetzen Sie Folgendes:

    • TOPIC_ID: Der Name oder die ID des Themas.

    • BUCKET_NAME: Gibt den Namen eines vorhandenen Buckets an. Beispiel: prod_bucket. Der Bucket-Name darf keine Projekt-ID enthalten. Informationen zum Erstellen eines Buckets finden Sie unter Buckets erstellen.

    • INPUT_FORMAT: Gibt das Format der aufgenommenen Objekte an. Das kann text, avro oder pubsub_avro sein. Weitere Informationen zu diesen Optionen finden Sie unter Eingabeformat.

Falls Probleme auftreten, lesen Sie den Hilfeartikel Probleme beim Importieren von Daten aus Google Cloud Storage beheben.

Plattformprotokolle beim Aktualisieren eines Cloud Storage-Importthemas aktivieren

Führen Sie diese Schritte aus:

Console

  1. Rufen Sie in der Google Cloud Console die Seite Themen auf.

    Themen aufrufen

  2. Klicken Sie auf das Thema „Cloud Storage-Import“.

  3. Klicken Sie auf der Seite mit den Themendetails auf Bearbeiten.

  4. Wählen Sie Plattformprotokolle aktivieren aus.
  5. Klicken Sie auf Aktualisieren.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Damit die Einstellungen für das importierte Thema nicht verloren gehen, sollten Sie sie jedes Mal angeben, wenn Sie das Thema aktualisieren. Wenn du etwas auslässt, wird die Einstellung von Pub/Sub auf den ursprünglichen Standardwert zurückgesetzt.

    Wenn Sie Plattformlogs aktivieren möchten, muss „ingestion-log-severity“ auf WARNING gesetzt sein. Führen Sie den Befehl gcloud pubsub topics update mit allen im folgenden Beispiel genannten Flags aus:

    gcloud pubsub topics update TOPIC_ID \
        --cloud-storage-ingestion-bucket=BUCKET_NAME\
        --cloud-storage-ingestion-input-format=INPUT_FORMAT\
        --cloud-storage-ingestion-text-delimiter=TEXT_DELIMITER\
        --cloud-storage-ingestion-minimum-object-create-time=MINIMUM_OBJECT_CREATE_TIME\
        --cloud-storage-ingestion-match-glob=MATCH_GLOB
        --ingestion-log-severity=WARNING

    Ersetzen Sie Folgendes:

    • TOPIC_ID ist die ID oder der Name des Themas. Dieses Feld kann nicht aktualisiert werden.

    • BUCKET_NAME: Gibt den Namen eines vorhandenen Buckets an. Beispiel: prod_bucket. Der Bucket-Name darf keine Projekt-ID enthalten.

    • INPUT_FORMAT: Gibt das Format der aufgenommenen Objekte an. Das kann text, avro oder pubsub_avro sein. Weitere Informationen zu diesen Optionen finden Sie unter Eingabeformat.

    • TEXT_DELIMITER: Gibt das Trennzeichen an, mit dem Textobjekte in Pub/Sub-Nachrichten aufgeteilt werden. Dies sollte ein einzelnes Zeichen sein und nur festgelegt werden, wenn INPUT_FORMAT text ist. Standardmäßig ist das Zeilenumbruchzeichen (\n) festgelegt.

      Achten Sie bei der Verwendung der gcloud CLI zum Angeben des Trennzeichens genau auf die Behandlung von Sonderzeichen wie dem Zeilenumbruch \n. Verwenden Sie das Format '\n', damit das Trennzeichen richtig interpretiert wird. Wenn Sie \n ohne Anführungszeichen oder Escape-Zeichen verwenden, wird das Trennzeichen "n" verwendet.

    • MINIMUM_OBJECT_CREATE_TIME: Gibt die Mindestzeit an, zu der ein Objekt erstellt wurde, damit es aufgenommen werden kann. Sie muss im UTC-Format YYYY-MM-DDThh:mm:ssZ vorliegen. Beispiel: 2024-10-14T08:30:30Z

      Gültig sind alle Datumsangaben zwischen 0001-01-01T00:00:00Z und 9999-12-31T23:59:59Z, sowohl in der Vergangenheit als auch in der Zukunft.

    • MATCH_GLOB: Gibt das Glob-Muster an, das mit einem Objekt übereinstimmen muss, damit es aufgenommen wird. Wenn Sie die gcloud CLI verwenden, muss das Zeichen * in einem Matchglob mit *-Zeichen in Form von \*\*.txt formatiert sein oder der gesamte Matchglob muss in Anführungszeichen "**.txt" oder '**.txt' stehen. Informationen zur unterstützten Syntax für Glob-Muster finden Sie in der Cloud Storage-Dokumentation.

Plattformlogs deaktivieren

Führen Sie diese Schritte aus:

Console

  1. Rufen Sie in der Google Cloud Console die Seite Themen auf.

    Themen aufrufen

  2. Klicken Sie auf das Thema „Cloud Storage-Import“.

  3. Klicken Sie auf der Seite mit den Themendetails auf Bearbeiten.

  4. Entfernen Sie das Häkchen bei Plattformlogs aktivieren.
  5. Klicken Sie auf Aktualisieren.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Damit die Einstellungen für das importierte Thema nicht verloren gehen, sollten Sie sie jedes Mal angeben, wenn Sie das Thema aktualisieren. Wenn du etwas auslässt, wird die Einstellung von Pub/Sub auf den ursprünglichen Standardwert zurückgesetzt.

    Wenn Sie Plattformprotokolle deaktivieren möchten, muss „ingestion-log-severity“ auf DISABLED gesetzt sein. Führen Sie den Befehl gcloud pubsub topics update mit allen im folgenden Beispiel genannten Flags aus:

    gcloud pubsub topics update TOPIC_ID \
        --cloud-storage-ingestion-bucket=BUCKET_NAME\
        --cloud-storage-ingestion-input-format=INPUT_FORMAT\
        --cloud-storage-ingestion-text-delimiter=TEXT_DELIMITER\
        --cloud-storage-ingestion-minimum-object-create-time=MINIMUM_OBJECT_CREATE_TIME\
        --cloud-storage-ingestion-match-glob=MATCH_GLOB
        --ingestion-log-severity=DISABLED

    Ersetzen Sie Folgendes:

    • TOPIC_ID ist die ID oder der Name des Themas. Dieses Feld kann nicht aktualisiert werden.

    • BUCKET_NAME: Gibt den Namen eines vorhandenen Buckets an. Beispiel: prod_bucket. Der Bucket-Name darf keine Projekt-ID enthalten.

    • INPUT_FORMAT: Gibt das Format der aufgenommenen Objekte an. Das kann text, avro oder pubsub_avro sein. Weitere Informationen zu diesen Optionen finden Sie unter Eingabeformat.

    • TEXT_DELIMITER: Gibt das Trennzeichen an, mit dem Textobjekte in Pub/Sub-Nachrichten aufgeteilt werden. Dies sollte ein einzelnes Zeichen sein und nur festgelegt werden, wenn INPUT_FORMAT text ist. Standardmäßig ist das Zeilenumbruchzeichen (\n) festgelegt.

      Achten Sie bei der Verwendung der gcloud CLI zum Angeben des Trennzeichens genau auf die Behandlung von Sonderzeichen wie dem Zeilenumbruch \n. Verwenden Sie das Format '\n', damit das Trennzeichen richtig interpretiert wird. Wenn Sie \n ohne Anführungszeichen oder Escape-Zeichen verwenden, wird das Trennzeichen "n" verwendet.

    • MINIMUM_OBJECT_CREATE_TIME: Gibt die Mindestzeit an, zu der ein Objekt erstellt wurde, damit es aufgenommen werden kann. Sie muss im UTC-Format YYYY-MM-DDThh:mm:ssZ vorliegen. Beispiel: 2024-10-14T08:30:30Z

      Gültig sind alle Datumsangaben zwischen 0001-01-01T00:00:00Z und 9999-12-31T23:59:59Z, sowohl in der Vergangenheit als auch in der Zukunft.

    • MATCH_GLOB: Gibt das Glob-Muster an, das mit einem Objekt übereinstimmen muss, damit es aufgenommen wird. Wenn Sie die gcloud CLI verwenden, muss das Zeichen * in einem Matchglob mit *-Zeichen in Form von \*\*.txt formatiert sein oder der gesamte Matchglob muss in Anführungszeichen "**.txt" oder '**.txt' stehen. Informationen zur unterstützten Syntax für Glob-Muster finden Sie in der Cloud Storage-Dokumentation.

Plattformprotokolle ansehen

So rufen Sie Plattformprotokolle für das Cloud Storage-Importthema auf:

Google Cloud Console

  1. Öffnen Sie in der Google Cloud Console den Log-Explorer.

    Zum Log-Explorer

  2. Wählen Sie ein Google Cloud-Projekt aus.

  3. Wechseln Sie bei Bedarf im Menü Upgrade von Legacy-Loganzeige zu Log-Explorer.

  4. Wenn Sie Ihre Logs so filtern möchten, dass nur Einträge zu Cloud Storage-Importthemen angezeigt werden, geben Sie in das Abfragefeld resource.type="resource.type=pubsub_topic AND severity=WARNING ein und klicken Sie auf Abfrage ausführen.

  5. Klicken Sie im Bereich Abfrageergebnisse auf Zeit bearbeiten, um den Zeitraum zu ändern, für den Ergebnisse zurückgegeben werden sollen.

Weitere Informationen zur Verwendung des Log-Explorers finden Sie unter Log-Explorer verwenden.

gcloud-CLI

Wenn Sie mit der gcloud CLI nach Plattformprotokollen für Cloud Storage-Importthemen suchen möchten, verwenden Sie den Befehl gcloud logging read.

Geben Sie einen Filter an, um Ihre Ergebnisse auf Plattformprotokolle für Cloud Storage-Importthemen zu beschränken.

gcloud logging read "resource.type=pubsub_topic AND severity=WARNING"

Cloud Logging API

Verwenden Sie die Cloud Logging API-Methode entries.list.

Verwenden Sie das Feld filter, um Ihre Ergebnisse so zu filtern, dass nur Plattformprotokolle für Cloud Storage-Importthemen enthalten sind. Unten finden Sie ein Beispiel für ein JSON-Anfrageobjekt.

{
"resourceNames":
  [
    "projects/my-project-name"
  ],
  "orderBy": "timestamp desc",
  "filter": "resource.type=\"pubsub_topic\" AND severity=WARNING"
}

Plattformprotokollformat ansehen und verstehen

Im folgenden Abschnitt finden Sie Beispielplattformprotokolle und eine Beschreibung der Felder für Plattformprotokolle.

Alle plattformspezifischen Felder für Protokolle sind in einem jsonPayload-Objekt enthalten.

Avro-Fehler

{
  "insertId": "1xnzx8md4768",
  "jsonPayload": {
    "@type": "type.googleapis.com/google.pubsub.v1.IngestionFailureEvent",
    "cloudStorageFailure": {
      "objectGeneration": "1661148924738910",
      "bucket": "bucket_in_avro_format",
      "objectName": "counts/taxi-2022-08-15T06:10:00.000Z-2022-08-15T06:15:00.000Z-pane-0-last-00-of-01",
      "avroFailureReason": {}
    },
    "topic": "projects/interpod-p2-management/topics/avro_bucket_topic",
    "errorMessage": "Unable to parse the header of the object. The object won't be ingested."
  },
  "resource": {
    "type": "pubsub_topic",
    "labels": {
      "project_id": "interpod-p2-management",
      "topic_id": "avro_bucket_topic"
    }
  },
  "timestamp": "2024-10-07T18:55:45.650103193Z",
  "severity": "WARNING",
  "logName": "projects/interpod-p2-management/logs/pubsub.googleapis.com%2Fingestion_failures",
  "receiveTimestamp": "2024-10-07T18:55:46.678221398Z"
}
Logfeld Beschreibung
insertId Eindeutige Kennung des Logeintrags.
jsonPayload.@type Gibt den Ereignistyp an. Immer type.googleapis.com/google.pubsub.v1.IngestionFailureEvent.
jsonPayload.cloudStorageFailure.objectGeneration Die Generierungsnummer des Cloud Storage-Objekts.
jsonPayload.cloudStorageFailure.bucket Der Cloud Storage-Bucket, der das Objekt enthält.
jsonPayload.cloudStorageFailure.objectName Der Name des Cloud Storage-Objekts.
jsonPayload.cloudStorageFailure.avroFailureReason Enthält genauere Details zum Avro-Parsing-Fehler. Dieses Feld bleibt leer.
jsonPayload.topic Das Pub/Sub-Thema, für das die Nachricht bestimmt war.
jsonPayload.errorMessage Eine für Menschen lesbare Fehlermeldung.
resource.type Der Ressourcentyp. Immer pubsub_topic.
resource.labels.project_id Die Google Cloud-Projekt-ID.
resource.labels.topic_id Die Pub/Sub-Themen-ID.
timestamp Zeitstempel der Erstellung des Logeintrags.
severity Schweregrad: WARNING
logName Name des Logs.
receiveTimestamp Zeitstempel für den Empfang des Logeintrags.

Textfehler

{
  "insertId": "1kc4puoag",
  "jsonPayload": {
    "@type": "type.googleapis.com/google.pubsub.v1.IngestionFailureEvent",
    "cloudStorageFailure": {
      "bucket": "bucket_in_text_format",
      "apiViolationReason": {},
      "objectName": "counts/taxi-2022-08-15T06:10:00.000Z-2022-08-15T06:15:00.000Z-pane-0-last-00-of-01",
      "objectGeneration": "1727990048026758"
    },
    "topic": "projects/interpod-p2-management/topics/large_text_bucket_topic",
    "errorMessage": "The message has exceeded the maximum allowed size of 10000000 bytes. The message won't be published."
  },
  "resource": {
    "type": "pubsub_topic",
    "labels": {
      "topic_id": "large_text_bucket_topic",
      "project_id": "interpod-p2-management"
    }
  },
  "timestamp": "2024-10-09T14:09:07.760488386Z",
  "severity": "WARNING",
  "logName": "projects/interpod-p2-management/logs/pubsub.googleapis.com%2Fingestion_failures",
  "receiveTimestamp": "2024-10-09T14:09:08.483589656Z"
}
Logfeld Beschreibung
insertId Eindeutige Kennung des Logeintrags.
jsonPayload.@type Gibt den Ereignistyp an. Immer type.googleapis.com/google.pubsub.v1.IngestionFailureEvent.
jsonPayload.cloudStorageFailure.objectGeneration Die Generierungsnummer des Cloud Storage-Objekts.
jsonPayload.cloudStorageFailure.bucket Der Cloud Storage-Bucket, der das Objekt enthält.
jsonPayload.cloudStorageFailure.objectName Der Name des Cloud Storage-Objekts.
jsonPayload.cloudStorageFailure.apiViolationReason Enthält Details zum API-Verstoß. Dieses Feld bleibt leer.
jsonPayload.topic Das Pub/Sub-Thema.
jsonPayload.errorMessage Eine für Menschen lesbare Nachricht.
resource.type Ressourcentyp, immer pubsub_topic.
resource.labels.project_id Google Cloud-Projekt-ID
resource.labels.topic_id Pub/Sub-Themen-ID.
timestamp Zeitstempel der Erstellung des Logeintrags.
severity Schweregrad: WARNING
logName Name des Logs.
receiveTimestamp Zeitpunkt, zu dem der Logeintrag von Logging empfangen wurde.