監査ログを使用して Pub/Sub の問題をトラブルシューティングする

Pub/Sub は、Pub/Sub リソースの管理アクティビティとアクセス アクティビティをキャプチャする監査ログを生成します。これらのアクティビティの例としては、トピックの作成、サブスクリプションの更新、スナップショットの削除などがあります。これらのログを使用して、問題のトラブルシューティングを行い、メッセージング インフラストラクチャのセキュリティを確保できます。

Pub/Sub の監査ログに関する重要なポイントをいくつか紹介します。

  • Pub/Sub の監査ログでは、サービス名 pubsub.googleapis.com が使用されます。

  • Pub/Sub にはさまざまな種類のログがあります。次に例を示します。

    • 管理アクティビティ ログは、トピックやサブスクリプションの作成、削除、更新などのアクションを記録します。

    • データアクセス ログは、トピックの取得やサブスクリプションの一覧表示などのアクションを記録します。

    • システム イベント ログは、非アクティブなサブスクリプションの削除などのイベントを記録します。

  • Pub/Sub は、メッセージのパブリッシュ、サブスクライブ、確認応答などのメッセージ オペレーションをログに記録しません。

Pub/Sub の監査ログの詳細については、監査ログをご覧ください。

Pub/Sub 監査ログを表示する

ログ エクスプローラ は、すべてのログデータにアクセスできる一元的な場所を提供します 内 Google Cloud。ログ エクスプローラ を使用して Pub/Sub ログを表示できます。

  1. ログ エクスプローラ を表示するために必要な権限を取得します。

    詳細については、始める前にをご覧ください。

  2. コンソールで、[ログ エクスプローラ] ページに移動します。 Google Cloud

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

  3. 既存の Google Cloud プロジェクト、フォルダ、または組織を選択します。

  4. Pub/Sub に関連するすべての監査ログを表示するには、query-editor フィールドに次のクエリを入力します。

     protoPayload.serviceName="pubsub.googleapis.com"
    
    クエリエディタ フィールドにクエリを入力する方法を示す図。
    図 1 クエリを入力します。
  5. [クエリを実行] をクリックします。

  6. 特定のリソースと監査ログタイプの監査ログを表示するには、[クエリビルダー] ペインで次の操作を行います。

    1. [すべてのリソース] で、表示する監査ログを含む Google Cloud リソースを選択します。たとえば、[Cloud Pub/Sub トピック] を選択し、トピック名を選択します。

    2. [**すべてのログ名**] で、表示する監査ログタイプを選択します。

      次に例を示します。

      • 管理アクティビティ監査ログの場合は、[activity] を選択します。

      • システム イベント監査ログの場合は、[system_event] を選択します。

クエリは自動的に実行されます。

監査ログを使用して Pub/Sub の問題をトラブルシューティングする方法

  1. 調査する特定の問題を特定します。考えられる問題のリストを次に示します。

    • トピック、サブスクリプション、スナップショット、スキーマを作成、削除、変更したユーザーを特定します。

    • トピックまたはサブスクリプションの設定の変更を追跡します。

    • トピックまたはサブスクリプションが存在するかどうかとその現在のステータスを確認します。

    ただし、監査ログを使用して、メッセージのパブリッシュと配信に関連する問題をトラブルシューティングすることはできません。メッセージ配信の失敗、メッセージの重複、メッセージの順序付けの問題に関するログは見つかりません。監査ログは、低速なサブスクライバーやメッセージ確認応答の問題の特定にも役立ちません。 メッセージ レベルの問題をトラブルシューティングするには、モニタリング指標、配信不能キュー、アプリケーション ログなどの他のツールを使用する必要があります。

  2. 問題に基づいて、監査ログをフィルタするクエリを作成します。 たとえば、サブスクリプションを削除したユーザーを調べるには、 protoPayload.methodName="google.pubsub.v1.Publisher.DeleteSubscription" でフィルタします。

    サブスクリプションの作成で発生する可能性のあるエラーを調査するには、 protoPayload.methodName="google.pubsub.v1.Subscriber.CreateSubscription" でフィルタします。

  3. ログエントリのタイムスタンプ、プリンシパル、リソース名を調べて、イベントの順序を把握し、異常を特定します。

Pub/Sub の監査ログクエリを作成する方法の詳細については、監査ログをご覧ください。