監査ログを使用して 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 に関連するすべての監査ログを表示するには、クエリエディタ フィールドに次のクエリを入力します。

     protoPayload.serviceName="pubsub.googleapis.com"
    
    Query Editor フィールドにクエリを入力する方法を示した図。
    図 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 の監査ログクエリを作成する方法については、監査ロギングをご覧ください。