プラットフォーム ログを使用してトピックのインポートに関するトラブルシューティングを行う

このガイドでは、 Cloud de Confiance by S3NS プラットフォーム ログを使用して、Cloud Storage インポート トピック、Azure Event Hubs インポート トピック、Amazon MSK インポート トピック、Confluent Cloud インポート トピックなど、インポート トピックを使用する際の問題をトラブルシューティングする方法について説明します。

プラットフォーム ログについて

サポートされている Cloud de Confiance サービスは、独自のプラットフォーム ログのセットを生成し、そのサービスのオペレーションに関連するイベントとアクティビティをキャプチャします。これらのプラットフォーム ログには、サービス内で発生していることに関する詳細情報(成功したオペレーション、エラー、警告、その他の注目すべきイベントなど)が含まれています。

プラットフォーム ログは Cloud Logging の一部であり、同じ機能を共有します。たとえば、プラットフォーム ログの重要な機能のリストは次のようになります。

  • 通常、ログは JSON オブジェクトとして構造化され、クエリとフィルタリングをさらに実行できます。

  • プラットフォーム ログは、コンソールのロギングを使用して表示できます。

  • プラットフォーム ログは、Cloud Monitoring やその他のモニタリング ツールと統合して、ダッシュボードやアラートなどのモニタリング メカニズムを作成することもできます。

  • ログ ストレージには、取り込まれたボリュームと保持期間に基づく費用が発生します。

プラットフォーム ログの詳細については、Google Cloud プラットフォーム ログをご覧ください。

始める前に

使用するトピックの作成に関する前提条件を満たしていることを確認します。

必要なロールと権限

始める前に、Logging にアクセスできることを確認してください。ログ閲覧者 (roles/logging.viewer) Identity and Access Management(IAM)ロールが必要です。Logging のアクセスの詳細については、IAM によるアクセス制御をご覧ください。

以下では、IAM アクセス権を確認して付与する方法を説明します。

インポート トピックの取り込みエラーについて

インポート トピックで、データの取り込みが正常に行われない問題が発生することがあります。

Cloud Storage のインポートに関するトピック

Cloud Storage のインポート トピックで、データが正常に取り込まれない問題が発生することがあります。たとえば、Cloud Storage インポート トピックを使用しているときに、Cloud Storage オブジェクトまたはオブジェクトの一部を取り込む際に問題が発生することがあります。

次のリストは、プラットフォーム ログを生成する Cloud Storage インポート トピックでの取り込み失敗の理由を示しています。

  • メッセージのサイズ

    • 個々のメッセージのサイズは 10 MB 以下にする必要があります。一致する場合は、メッセージ全体がスキップされます。

    • Avro 形式または Pub/Sub Avro 形式を使用している場合、Avro ブロックのサイズは 16 MB 以下にする必要があります。大きな Avro ブロックはスキップされます。

  • メッセージ属性

    • メッセージあたりの属性の最大数は 100 です。メッセージが取り込まれると、余分な属性はすべて削除されます。

    • 属性キーは 256 バイト以下、値は 1,024 バイト以下にしてください。値が最大サイズより大きい場合、取り込み時にメッセージから Key-Value ペア全体が削除されます。

      メッセージキーと属性の使用に関するガイドラインの詳細については、属性を使用してメッセージをパブリッシュするをご覧ください。

  • Avro の形式

    • Avro オブジェクトの形式が正しいことを確認します。形式が正しくないと、メッセージは取り込まれません。
  • データ形式

Azure Event Hubs、Amazon MSK、Confluent Cloud のトピックをインポートする

Azure Event Hubs、Amazon MSK、Confluent Cloud のインポート トピックで、データが正常に取り込まれない問題が発生することがあります。

次のリストは、プラットフォーム ログを生成するインポート トピックでの取り込み失敗の理由を示しています。

  • メッセージのサイズ

    • 個々のメッセージのサイズは 10 MB を超えないようにしてください。一致する場合は、メッセージ全体がスキップされます。
  • メッセージ属性

    • メッセージあたりの属性の最大数は 100 です。メッセージが取り込まれると、余分な属性はすべて削除されます。

    • 属性キーは 256 バイト以下、値は 1,024 バイト以下にしてください。値が最大サイズより大きい場合、取り込み時にメッセージから Key-Value ペア全体が削除されます。

      メッセージキーと属性の使用に関するガイドラインの詳細については、属性を使用してメッセージをパブリッシュするをご覧ください。

プラットフォーム ログを有効にする

プラットフォーム ログは、インポート トピックではデフォルトで無効になっています。プラットフォーム ログは、インポート トピックを作成または更新するときに有効にできます。プラットフォーム ログを無効にするには、インポート トピックを更新します。

インポート トピックの作成時にプラットフォーム ログを有効にする

インポート トピックの作成時にプラットフォーム ログを有効にするには、次の操作を行います。

コンソール

  1. Cloud de Confiance コンソールで、[トピック] ページに移動します。

    [トピック] に移動

  2. [トピックを作成] をクリックします。

    トピックの詳細ページが開きます。

  3. [トピック ID] フィールドに、インポート トピックの ID を入力します。

    トピックの命名の詳細については、命名ガイドラインをご覧ください。

  4. [デフォルトのサブスクリプションを追加する] を選択します。

  5. [取り込みを有効にする] を選択します。

  6. 他のデフォルト設定はそのままにします。
  7. [トピックを作成] をクリックします。

gcloud

  1. In the Cloud de Confiance console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Cloud de Confiance 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. プラットフォーム ログを有効にするには、--ingestion-log-severity フラグが WARNING または INFODEBUG などのより低い重大度レベルに設定されていることを確認します。使用しているトピックに対応する gcloud pubsub topics create コマンドを実行します。

    たとえば、Cloud Storage インポート トピックでプラットフォーム ログを有効にするには、gcloud pubsub topics create コマンドに --ingestion-log-severity=WARNING フラグを含めます。

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

インポート トピックの更新時にプラットフォーム ログを有効にする

インポート トピックの更新時にプラットフォーム ログを有効にする手順は次のとおりです。

コンソール

  1. Cloud de Confiance コンソールで、[トピック] ページに移動します。

    [トピック] に移動

  2. 使用しているインポート トピック(Cloud Storage インポート トピック、Azure Event Hubs インポート トピック、Amazon MSK インポート トピック、Confluent Cloud インポート トピック)をクリックします。

  3. [トピックの詳細] ページで、[編集] をクリックします。

  4. [プラットフォーム ログを有効にする] を選択します。
  5. [更新] をクリックします。

gcloud

  1. In the Cloud de Confiance console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Cloud de Confiance 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. プラットフォーム ログを有効にするには、ingestion-log-severity が WARNING または INFODEBUG などのより低い重大度レベルに設定されていることを確認します。使用しているトピックの設定を指定するすべてのフラグを指定して、gcloud pubsub topics update コマンドを実行します。

    たとえば、既存の Cloud Storage インポート トピックのログを更新するには、gcloud pubsub topics create コマンドに --ingestion-log-severity=WARNING フラグを含め、Cloud Storage インポート トピックの設定を指定するすべての可能なフラグ値を含めます。

    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

プラットフォーム ログを無効にする

使用しているインポート トピックのプラットフォーム ログを無効にするには、次の操作を行います。

コンソール

  1. Cloud de Confiance コンソールで、[トピック] ページに移動します。

    [トピック] に移動

  2. 使用しているインポート トピック(Cloud Storage インポート トピック、Azure Event Hubs インポート トピック、Amazon MSK インポート トピック、Confluent Cloud インポート トピック)をクリックします。

  3. [トピックの詳細] ページで、[編集] をクリックします。

  4. [プラットフォーム ログを有効にする] をオフにします。
  5. [更新] をクリックします。

gcloud

  1. In the Cloud de Confiance console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Cloud de Confiance 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. プラットフォーム ログを無効にするには、ingestion-log-severity が DISABLED に設定されていることを確認します。使用しているトピックの設定を指定するすべてのフラグを指定して、gcloud pubsub topics update コマンドを実行します。

    たとえば、既存の Cloud Storage インポート トピックでログを無効にするには、gcloud pubsub topics update コマンドに --ingestion-log-severity=DISABLED フラグを含め、Cloud Storage インポート トピックの設定を指定する可能性のあるすべてのフラグを含めます。

    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

プラットフォーム ログを表示する

使用しているインポート トピックのプラットフォーム ログを表示するには、次の操作を行います。

Cloud de Confiance コンソール

  1. Cloud de Confiance コンソールで、[ログ エクスプローラ] に移動します。

    [ログ エクスプローラ] に移動

  2. Cloud de Confiance プロジェクトを選択します。

  3. 必要に応じて、[アップグレード] メニューで、[以前のログビューア] から [ログ エクスプローラ] に切り替えます。

  4. [クエリを表示] をクリックします。

  5. ログをフィルタして、使用しているそれぞれのインポート トピック(Cloud Storage インポート トピック、Azure Event Hubs インポート トピック、Amazon MSK インポート トピック、Confluent Cloud インポート トピック)のエントリのみを表示するには、クエリ フィールドに「"resource.type=pubsub_topic AND severity=WARNING"」と入力して [クエリを実行] をクリックします。

  6. [クエリ結果] ペインで [日時を編集する] をクリックし、結果を返す期間を変更します。

ログ エクスプローラの使用方法については、ログ エクスプローラの使用をご覧ください。

gcloud CLI

gcloud CLI を使用して、使用しているインポート トピックのプラットフォーム ログを検索するには、gcloud logging read コマンドを使用します。

結果を、使用しているそれぞれのインポート トピック(Cloud Storage インポート トピック、Azure Event Hubs インポート トピック、Amazon MSK インポート トピック、Confluent Cloud インポート トピック)のプラットフォーム ログに限定するフィルタを指定します。

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

Cloud Logging API

entries.list Cloud Logging API メソッドを使用します。

Cloud Storage インポート トピックのプラットフォーム ログのみが含まれるように結果をフィルタするには、filter フィールドを使用します。JSON リクエスト オブジェクトのサンプルを次に示します。

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

プラットフォーム ログの形式を表示して理解する

次のセクションでは、プラットフォーム ログの例と、プラットフォーム ログのフィールドについて説明します。

プラットフォーム ログ固有のフィールドはすべて、jsonPayload オブジェクトに格納されます。

Cloud Storage

Avro の障害

{
  "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/my-project/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": "my-project",
      "topic_id": "avro_bucket_topic"
    }
  },
  "timestamp": "2024-10-07T18:55:45.650103193Z",
  "severity": "WARNING",
  "logName": "projects/my-project/logs/pubsub.googleapis.com%2Fingestion_failures",
  "receiveTimestamp": "2024-10-07T18:55:46.678221398Z"
}
ログフィールド 説明
insertId ログエントリの一意の識別子。
jsonPayload.@type イベントタイプを識別します。常に type.googleapis.com/google.pubsub.v1.IngestionFailureEvent です。
jsonPayload.cloudStorageFailure.objectGeneration Cloud Storage オブジェクトの世代番号。
jsonPayload.cloudStorageFailure.bucket オブジェクトを含む Cloud Storage バケット。
jsonPayload.cloudStorageFailure.objectName Cloud Storage オブジェクトの名前。
jsonPayload.cloudStorageFailure.avroFailureReason より具体的な Avro 解析エラーの詳細が含まれます。このフィールドは空のままにします。
jsonPayload.topic メッセージの宛先となる Pub/Sub トピック。
jsonPayload.errorMessage 人が読める形式のエラー メッセージ。
resource.type リソースの型。 常に pubsub_topic です。
resource.labels.project_id Cloud de Confiance プロジェクト ID
resource.labels.topic_id Pub/Sub トピック ID。
timestamp ログエントリの生成タイムスタンプ。
severity 重大度レベル(WARNING)。
logName ログの名前。
receiveTimestamp ログエントリの受信タイムスタンプ。

テキストの失敗

{
  "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/my-project/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": "my-project"
    }
  },
  "timestamp": "2024-10-09T14:09:07.760488386Z",
  "severity": "WARNING",
  "logName": "projects/my-project/logs/pubsub.googleapis.com%2Fingestion_failures",
  "receiveTimestamp": "2024-10-09T14:09:08.483589656Z"
}
ログフィールド 説明
insertId ログエントリの一意の識別子。
jsonPayload.@type イベントタイプを識別します。常に type.googleapis.com/google.pubsub.v1.IngestionFailureEvent です。
jsonPayload.cloudStorageFailure.objectGeneration Cloud Storage オブジェクトの世代番号。
jsonPayload.cloudStorageFailure.bucket オブジェクトを含む Cloud Storage バケット。
jsonPayload.cloudStorageFailure.objectName Cloud Storage オブジェクトの名前。
jsonPayload.cloudStorageFailure.apiViolationReason API 違反の詳細が含まれます。このフィールドは空のままにします。
jsonPayload.topic Pub/Sub トピック。
jsonPayload.errorMessage 人が読める形式のメッセージ。
resource.type リソースタイプ(常に pubsub_topic)。
resource.labels.project_id Cloud de Confiance プロジェクト ID。
resource.labels.topic_id Pub/Sub トピック ID。
timestamp ログエントリの生成タイムスタンプ。
severity 重大度レベル(WARNING)。
logName ログの名前。
receiveTimestamp Cloud Logging がログエントリを受信した時刻。

Amazon MSK

API 違反

  {
  "insertId": "k3breb2q",
  "jsonPayload": {
    "@type": "type.googleapis.com/google.pubsub.v1.IngestionFailureEvent",
    "awsMskFailure": {
      "apiViolationReason": {},
      "clusterArn": "arn:aws:kafka:us-east-1:291552718126:cluster/cluster-ingestion/abb9faea-4070-4eb76-9c21-f98abca92eaf-2",
      "kafkaTopic": "msk-topic",
      "partitionId": "1",
      "offset": "11"
    },
    "errorMessage": "The value of an attribute in the message exceeded the maximum allowed size of 1024 bytes. Number of bytes in the value: 1025. Key: my header. Value: my very large value …",
    "topic": "projects/my-project/topics/msk-import-topic"
  },
  "resource": {
    "type": "pubsub_topic",
    "labels": {
      "topic_id": "msk-import-topic",
      "project_id": "my-project"
    }
  },
  "timestamp": "2025-02-03T16:18:14.693357960Z",
  "severity": "WARNING",
  "logName": "projects/my-project/logs/pubsub.googleapis.com%2Fingestion_failures",
  "receiveTimestamp": "2025-02-03T16:18:16.241643258Z"
}
ログフィールド 説明
insertId ログエントリの一意の識別子。
jsonPayload.@type イベントタイプを識別します。常に type.googleapis.com/google.pubsub.v1.IngestionFailureEvent です。
jsonPayload.awsMskFailure.clusterArn 取り込み元のトピックのクラスタの ARN。
jsonPayload.awsMskFailure.kafkaTopic 取り込み元の Kafka トピックの名前。
jsonPayload.awsMskFailure.partitionId 取り込みに失敗したメッセージを含むパーティションの ID。
jsonPayload.awsMskFailure.offset 取り込みに失敗したメッセージのパーティション内のオフセット。
jsonPayload.awsMskFailure.apiViolationReason API 違反の詳細が含まれます。このフィールドは空のままにします。
jsonPayload.topic Pub/Sub トピック。
jsonPayload.errorMessage 人が読める形式のメッセージ。
resource.type リソースタイプ(常に pubsub_topic)。
resource.labels.project_id Cloud de Confiance プロジェクト ID。
resource.labels.topic_id Pub/Sub トピック ID。
timestamp ログエントリの生成タイムスタンプ。
severity 重大度レベル(WARNING)。
logName ログの名前。
receiveTimestamp Cloud Logging がログエントリを受信した時刻。

Azure Event Hubs

API 違反

{
  "insertId": "i1fbqnb12",
  "jsonPayload": {
    "@type": "type.googleapis.com/google.pubsub.v1.IngestionFailureEvent",
    "azureEventHubsFailure": {
      "apiViolationReason": {},
      "namespace": "my-namespace",
      "eventHub": "my-event-hub",
      "partitionId": "1",
      "offset": "15"
    },
    "errorMessage": "The value of an attribute in the message exceeded the maximum allowed size of 1024 bytes. Number of bytes in the value: 1025. Key: my header. Value: my very large value …",
    "topic": "projects/my-project/topics/event-hubs-import-topic"
  },
  "resource": {
    "type": "pubsub_topic",
    "labels": {
      "topic_id": "event-hubs-import-topic",
      "project_id": "my-project"
    }
  },
  "timestamp": "2025-02-03T16:18:14.693357960Z",
  "severity": "WARNING",
  "logName": "projects/my-project/logs/pubsub.googleapis.com%2Fingestion_failures",
  "receiveTimestamp": "2025-02-03T14:05:12.338211450Z"
}
ログフィールド 説明
insertId ログエントリの一意の識別子。
jsonPayload.@type イベントタイプを識別します。常に type.googleapis.com/google.pubsub.v1.IngestionFailureEvent です。
jsonPayload.azureEventHubsFailure.namespace 取り込み元のイベントハブを含む名前空間。
jsonPayload.azureEventHubsFailure.eventHub 取り込み元のイベントハブの名前。
jsonPayload.azureEventHubsFailure.partitionId 取り込みに失敗したメッセージを含むパーティションの ID。
jsonPayload.azureEventHubsFailure.offset 取り込みに失敗したメッセージのパーティション内のオフセット。
jsonPayload.azureEventHubsFailure.apiViolationReason API 違反の詳細が含まれます。このフィールドは空のままにします。
jsonPayload.topic Pub/Sub トピック。
jsonPayload.errorMessage 人が読める形式のメッセージ。
resource.type リソースタイプ(常に pubsub_topic)。
resource.labels.project_id Cloud de Confiance プロジェクト ID。
resource.labels.topic_id Pub/Sub トピック ID。
timestamp ログエントリの生成タイムスタンプ。
severity 重大度レベル(WARNING)。
logName ログの名前。
receiveTimestamp Cloud Logging がログエントリを受信した時刻。

Confluent Cloud

テキストの失敗

{
  "insertId": "i1fbqnb14",
  "jsonPayload": {
    "@type": "type.googleapis.com/google.pubsub.v1.IngestionFailureEvent",
    "confluentCloudFailure": {
      "apiViolationReason": {},
      "clusterId": "lma-1x18ae",
      "kafkaTopic": "confluent-topic",
      "partitionId": "1",
      "offset": "19"
    },
    "errorMessage": "The value of an attribute in the message exceeded the maximum allowed size of 1024 bytes. Number of bytes in the value: 1025. Key: my header. Value: my very large value …",
    "topic": "projects/my-project/topics/confluent-import-topic"
  },
  "resource": {
    "type": "pubsub_topic",
    "labels": {
      "topic_id": "confluent-import-topic",
      "project_id": "my-project"
    }
  },
  "timestamp": "2025-02-03T16:18:14.693357960Z",
  "severity": "WARNING",
  "logName": "projects/my-project/logs/pubsub.googleapis.com%2Fingestion_failures",
  "receiveTimestamp": "2025-02-03T17:03:11.428221440Z"
}
ログフィールド 説明
insertId ログエントリの一意の識別子。
jsonPayload.@type イベントタイプを識別します。常に type.googleapis.com/google.pubsub.v1.IngestionFailureEvent です。
jsonPayload.confluentCloudFailure.clusterId 取り込み元のトピックを含むクラスタ ID。
jsonPayload.confluentCloudFailure.kafkaTopic 取り込み元の Kafka トピックの名前。
jsonPayload.confluentCloudFailure.partitionId 取り込みに失敗したメッセージを含むパーティションの ID。
jsonPayload.confluentCloudFailure.offset 取り込みに失敗したメッセージのパーティション内のオフセット。
jsonPayload.confluentCloudFailure.apiViolationReason API 違反の詳細が含まれます。このフィールドは空のままにします。
jsonPayload.topic Pub/Sub トピック。
jsonPayload.errorMessage 人が読める形式のメッセージ。
resource.type リソースタイプ(常に pubsub_topic)。
resource.labels.project_id Google Cloud プロジェクト ID。
resource.labels.topic_id Pub/Sub トピック ID。
timestamp ログエントリの生成タイムスタンプ。
severity 重大度レベル(WARNING)。
logName ログの名前。
receiveTimestamp Cloud Logging がログエントリを受信した時刻。
Apache Kafka® は、Apache Software Foundation または米国その他の諸国における関連会社の商標です。