アプリケーション モニタリング用に Google Cloud Observability を設定する

App Hub アプリケーションをデプロイすると、そのアプリケーションは複数の Google Cloud プロジェクトにテレメトリー データを送信する可能性があります。アプリケーションによって生成されたすべてのテレメトリーを単一のインターフェース(アプリケーション モニタリングが提供するダッシュボードなど)で表示するには、Google Cloud Observability を構成する必要があります。このドキュメントでは、必要な構成について説明します。

このドキュメントは、アプリケーションをデプロイしてから App Hub に登録する場合、または App Design Center を使用してアプリケーションをデプロイする場合に適用されます。

Google Cloud Observability の構成に加えて、次の操作を行うこともできます。

  1. アラート ポリシーにアプリケーション固有のラベルを付加します。これらのラベルを追加すると、アプリケーションに関連付けられたインシデントがアプリケーション モニタリング ダッシュボードに表示されます。この手順については、このドキュメントのアラート ポリシーを App Hub アプリケーションに関連付けるセクションをご覧ください。

  2. Google Kubernetes Engine にワークロードをデプロイし、トラフィック、レイテンシ、エラー率のゴールデン シグナルをアプリケーション モニタリング ダッシュボードに表示する場合は、OpenTelemetry を使用してアプリケーションを計測します。詳細については、アプリケーション モニタリング用に計測するをご覧ください。

始める前に

  • オブザーバビリティ スコープを構成するプロジェクトを特定します。このプロジェクトは、App Hub ホスト プロジェクトまたは管理プロジェクトです。たとえば、フォルダの表示名が My Folder の場合、フォルダの管理プロジェクトの表示名は My Folder-mp になります。

  • オブザーバビリティ スコープを構成するために必要な Identity and Access Management(IAM)ロールを付与されていることを確認します。必要な IAM ロールは、ログデータの保存を一元管理できる集約シンクを作成するかどうかによって異なります。

    シンクとスコープを構成する

    オブザーバビリティ スコープの構成と集約ログシンクの作成に必要な権限を取得するには、組織に対する組織管理者roles/resourcemanager.organizationAdmin)の IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。

    必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

    スコープのみを構成する

    オブザーバビリティ スコープの構成に必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。

    ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。

    必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

オブザーバビリティ スコープを構成する

オブザーバビリティ スコープは、エクスプローラ ページとダッシュボード ページで表示するデータを検索する方法を制御します。各 Google Cloud プロジェクトには 1 つのオブザーバビリティ スコープが含まれています。プロジェクトのオブザーバビリティ スコープは直接構成しません。代わりに、プロジェクトで次の内容を構成します。

  • デフォルトのログスコープ

    [ログ エクスプローラ] ページを開くか、ダッシュボードを表示したときに、アプリケーションのログデータが表示されるように、このスコープを構成します。このスコープに、アプリケーションのログデータを保存するプロジェクトとログビューが一覧表示されていることを確認します。

  • 指標スコープ

    Metrics Explorer ページを使用して作成したグラフやアラート ポリシーで、アプリケーションの指標データを表示またはモニタリングできるように、このスコープを構成します。このスコープに、アプリケーションの指標データを保存するプロジェクトが一覧表示されていることを確認します。

  • デフォルトのトレース スコープ

    [Trace エクスプローラ] ページを開いたときに、アプリケーションのトレースデータが表示されるように、このスコープを構成します。このスコープに、アプリケーションのトレースデータを保存するプロジェクトが一覧表示されていることを確認します。

このセクションの残りの部分では、これらのスコープを構成する方法について説明します。

デフォルトのログスコープを構成して設定する

次のいずれかを行います。

  • 組織内のすべてのログデータを一元化されたログバケットに転送する組織レベルの集約シンクがある場合は、次のことをおすすめします。

    1. アプリケーション ログの一元化されたログバケットにログビューを作成します。

    2. App Hub ホスト プロジェクトまたは管理プロジェクトで、ログスコープを作成してログビューを追加し、このスコープをデフォルトのログスコープとして設定します。

  • アプリ対応フォルダを使用しており、組織レベルの集約シンクまたはネストされたフォルダがない場合は、次のことをおすすめします。

    1. アプリ対応フォルダのインターセプト集約シンクを作成し、これらのログを管理プロジェクトの _Default ログバケットに転送します。

    2. アプリ管理用フォルダの管理プロジェクトで、_Default という名前のログスコープがデフォルトのログスコープとして設定されていることを確認します。_Default という名前のスコープで、プロジェクトの _Default ログバケット(アプリケーションの一元化されたストレージ ロケーション)の _AllLogs ビューが一覧表示されます。

  • 集約シンクを使用していない場合は、App Hub ホスト プロジェクトまたは管理プロジェクトで、デフォルトのログスコープを構成して、アプリケーションのログデータの保存場所を一覧表示します。ログデータを保存するログバケットにログビューを追加することをおすすめします。

たとえば、アプリ対応フォルダを構成し、集約シンクを使用していないとします。さらに、次の操作を行います。

  1. アプリ対応フォルダの管理プロジェクトで、ログスコープを作成します。
  2. ログスコープには、フォルダ内のプロジェクト(管理プロジェクトを含む)ごとに 1 つのログビューを追加します。

    追加するビューは、プロジェクトの _Default ログバケットの _AllLogs ビューです。このビューには、_Default ログバケット内のすべてのログが含まれます。_Default ログバケットには、アプリケーション ログデータが保存されます。

    このステップを完了すると、ログスコープに次のようなエントリが追加されます。

    _Default/_AllLogs     my-folder-mp
    _Default/_AllLogs     project-in-my-folder
    _Default/_AllLogs     another-project-in-my-folder
    
  3. ログスコープを保存して、デフォルトのログスコープとして設定します。

指標スコープを構成する

App Hub ホスト プロジェクトまたは管理プロジェクトの指標スコープに、アプリケーションの指標データを保存するすべてのプロジェクトが一覧表示されていることを確認します。

  • アプリ対応フォルダの場合、Google Cloud Observability は、アプリ対応フォルダ内のプロジェクトのリストを指標スコープ内のプロジェクトのリストと同期しようとします。たとえば、アプリ対応フォルダにプロジェクトを追加すると、そのプロジェクトを指標スコープに追加するコマンドが実行されます。

    アプリ対応フォルダ内のプロジェクト数が指標スコープの割り当て(デフォルトは指標スコープあたり 375 個のプロジェクト)を超えない場合、Google Cloud Observability は指標スコープ内のプロジェクトのリストをアプリ対応フォルダ内のプロジェクトのリストと同期できます。たとえば、割り当てが指標スコープごとに 375 個のプロジェクトであるとします。アプリ対応フォルダに 100 個のプロジェクトが含まれている場合、指標スコープにはアプリ対応フォルダ内のすべてのプロジェクトが一覧表示されます。アプリ対応フォルダにプロジェクトを追加すると、それらのプロジェクトは指標スコープにも追加されます。

    アプリ対応フォルダ内のプロジェクト数が指標スコープの割り当てを超えると、指標スコープ内のプロジェクトのリストに、アプリ対応フォルダ内のすべてのプロジェクトが含まれなくなります。たとえば、割り当てが指標スコープごとに 375 個のプロジェクトであり、アプリ対応フォルダに 380 個のプロジェクトがあるとします。375 個のプロジェクトが指標スコープに追加されると、割り当てが枯渇し、残り 5 個のプロジェクトの追加の試行は失敗します。そのため、一部のアプリケーション データは管理プロジェクトで使用できません。

    指標スコープの割り当ての使用状況を確認し、割り当ての更新をリクエストするか、指標スコープを手動で変更する必要があるかを判断することをおすすめします。これらの手順については、アプリ管理用フォルダの指標スコープをご確認ください。

  • App Hub ホスト プロジェクトの場合は、ホスト プロジェクトの指標スコープを構成する必要があります。

    指標データを保存するプロジェクトのセットを変更する場合は、ホスト プロジェクトの指標スコープも更新する必要があります。

デフォルトのトレース スコープを構成して設定する

手順は次のとおりです。

  1. アプリケーションのトレースデータを保存する各プロジェクトで、次の手順で Observability API を有効にすることをおすすめします。

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  2. App Hub ホスト プロジェクトまたは管理プロジェクトで、トレース スコープを作成し、アプリケーションのトレースデータを保存するプロジェクトを追加します。アプリ対応フォルダを使用している場合は、そのフォルダにプロジェクトを追加します。

  3. カスタム トレース スコープをデフォルトのトレース スコープとして設定します。

    トポロジマップには、ホスト プロジェクトまたは管理プロジェクトと同じ組織内のプロジェクトのトレースデータのみが表示されます。

アラート ポリシーを App Hub アプリケーションに関連付ける

アプリケーション モニタリングのコンテキストからアラート ポリシーを表示するには、アプリケーション固有のラベルをアラート ポリシーに追加して、アラート ポリシーをサービスまたはワークロードに関連付ける必要があります。これらのユーザー定義ラベルは、ポリシー用に作成されたインシデントにも含まれます。ラベルの詳細については、インシデントにラベルでアノテーションを付けるをご覧ください。App Hub ラベルのリストについては、アプリケーションのテレメトリーを表示するをご覧ください。

Google Cloud コンソールを使用してアラート ポリシーをワークロードまたはサービスに関連付けるには、次の操作を行います。

  1. Google Cloud コンソールで、[ アラート] ページに移動します。

    [アラート] に移動

    検索バーを使用してこのページを検索する場合は、小見出しが [Monitoring] の結果を選択します。

  2. Google Cloud コンソールのツールバーで、App Hub ホスト プロジェクトまたは管理プロジェクトを選択します。
  3. アラート ポリシーを見つけて、 [さらに表示] をクリックし、[編集] を選択して、[通知と名前] セクションに移動します。
  4. [アプリケーション ラベル] セクションで、アプリケーションを選択してから、ワークロードまたはサービスを選択します。
  5. [ポリシーを保存] をクリックします。

これらの手順を完了すると、次のキーを持つラベルがアラート ポリシーに添付されます。これらのラベルは、アプリケーションとサービスまたはワークロードを識別します。

  • apphub_application_location
  • apphub_application_id
  • apphub_service_id または apphub_workload_id

Google Cloud CLI、Terraform、または Cloud Monitoring API を使用して、アラート ポリシーにユーザーラベルを追加することもできます。ただし、前述の例に示したラベルキーを使用する必要があります。詳しくは以下をご覧ください。

アクセスを許可

IAM は、ログ、指標、トレースデータへのアクセスを管理します。このセクションでは、プリンシパルに付与することが必要な場合のあるロールの概要について説明します。

  • App Hub ホスト プロジェクトまたは管理プロジェクトのデフォルトのログスコープに一覧表示されているログビューに対するログ表示アクセス者roles/logging.viewAccessor)。ログビューへのアクセス権の付与の詳細については、ログビューへのアクセスを制御するをご覧ください。

  • App Hub ホスト プロジェクト、管理プロジェクト、デフォルトのログスコープに一覧表示されている他のプロジェクトに対するログ閲覧者roles/logging.viewer)。このロールには、_Default ログバケット内のほとんどのログエントリへのアクセス権が付与されます。詳細については、Logging のロールをご覧ください。

  • App Hub ホスト プロジェクトまたは管理プロジェクトに対するモニタリング編集者のロール(roles/monitoring.editor)。アラート ポリシーを作成する必要がないプリンシパルには、モニタリング閲覧者ロール(roles/monitoring.viewer)を付与することを検討してください。

  • App Hub ホスト プロジェクトまたは管理プロジェクト、およびデフォルトのトレース スコープに一覧表示されているプロジェクトに対する Cloud Trace ユーザーroles/cloudtrace.user)。

  • App Hub ホスト プロジェクトまたは管理プロジェクトに対する App Hub 閲覧者roles/apphub.view)。

次のステップ