Google Cloud Observability を使用する分析ジョブを定義する

このドキュメントでは、モニタリング システムとして Google Cloud Observability を使用する場合に、デリバリー パイプラインで分析を構成する方法について説明します。

別のモニタリング プロバイダを使用する場合は、カスタム分析を定義する必要があります。これには、プロバイダから指標やその他のデータを取り込んで評価するコンテナの作成が含まれます。

始める前に

  1. Google アカウントにログインします。

    Google アカウントをまだお持ちでない場合は、新しいアカウントを登録します。

  2. Google Cloud CLI をインストールします。

  3. 外部 ID プロバイダ(IdP)を使用している場合は、まず フェデレーション ID を使用して gcloud CLI にログインする必要があります。

  4. gcloud CLI を初期化するには、次のコマンドを実行します。

    gcloud init
  5. このガイドを完了するために必要な権限があることを確認します。

  6. Google Cloud プロジェクトに対して課金が有効になっていることを確認します。

  7. Compute Engine API と Cloud Deploy API が有効になっていない場合は、有効にします。

    API を有効にするために必要なロール

    API を有効にするには、serviceusage.services.enable 権限が必要です。プロジェクトを作成した場合は、オーナーロール(roles/owner)を通じてこの権限がすでに付与されている可能性があります。それ以外の場合は、Service Usage 管理者ロール(roles/serviceusage.serviceUsageAdmin)を通じてこの権限を取得できます。ロールを付与する方法を確認する。

    gcloud services enable clouddeploy.googleapis.com  compute.googleapis.com
  8. Google Cloud CLI をインストールします。

  9. 外部 ID プロバイダ(IdP)を使用している場合は、まず フェデレーション ID を使用して gcloud CLI にログインする必要があります。

  10. gcloud CLI を初期化するには、次のコマンドを実行します。

    gcloud init
  11. このガイドを完了するために必要な権限があることを確認します。

  12. Google Cloud プロジェクトに対して課金が有効になっていることを確認します。

  13. Compute Engine API と Cloud Deploy API が有効になっていない場合は、有効にします。

    API を有効にするために必要なロール

    API を有効にするには、serviceusage.services.enable 権限が必要です。プロジェクトを作成した場合は、オーナーロール(roles/owner)を通じてこの権限がすでに付与されている可能性があります。それ以外の場合は、Service Usage 管理者ロール(roles/serviceusage.serviceUsageAdmin)を通じてこの権限を取得できます。ロールを付与する方法を確認する。

    gcloud services enable clouddeploy.googleapis.com  compute.googleapis.com

必要なロール

分析ジョブの作成と使用に必要な権限を取得するには、プロジェクトのアカウントに対する次の IAM ロールを付与するよう管理者に依頼してください。

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

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

Cloud Deploy サービス アカウントに自動化の作成と使用に必要な権限があることを確認するには、プロジェクトに対する次の IAM ロールを Cloud Deploy サービス アカウントに付与するよう管理者に依頼します。

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

管理者は、カスタムロールや他の事前定義ロールを使用して、Cloud Deploy サービス アカウントに必要な権限を付与することもできます。

Cloud Deploy で分析を設定する

デプロイ分析の構成は、次の手順で行います。

  1. 1 つ以上のアラート ポリシーを定義します。

  2. デリバリー パイプラインで分析ジョブを構成します。

  3. パイプラインを実行して分析を実行します。

アラート ポリシーを定義する

アラート ポリシーを定義して、Google Cloud Observability から指標を受け取ります。Google Cloud Observability アラート ポリシーは、モニタリング データが指定された条件を満たしたときに通知を受け取るタイミングと方法を記述します。

Cloud Deploy 分析では、これらのアラートを使用して、アラートが示す状況に基づいて実践します。

たとえば、本番環境のアプリケーションにアラート ポリシーを設定して、HTTP レスポンスのレイテンシが高すぎる場合にアラートを送信できます。そのアラートに基づいて、分析ジョブが repairRolloutRule 自動化をトリガーしてリリースをロールバックできます。

別の例として、ステージング環境にデプロイされたアプリケーションに同様のアラート ポリシーを作成できます。分析ジョブの実行中にアラートが発生しなかった場合、そのジョブは promoteReleaseRule 自動化をトリガーして、リリースを本番環境に昇格させることができます。

分析を作成する

アプリケーションのデリバリー パイプラインの分析ジョブを作成するには、パイプラインの構成内でその分析を構成し、その構成ファイルを適用します。

分析ジョブを構成する

このセクションでは、Google Cloud Observability で使用する Cloud Deploy 分析ジョブを構成する方法について説明します。

分析ジョブは、strategy スタンザ内のデリバリー パイプライン定義の一部として構成されます。これは、canary または standard の任意の戦略内に配置できます。フェーズごとに分析を構成する場合は、カスタム カナリア(strategy.canary.customCanaryDepolyment.phaseConfigs.phaseId.analysis)を使用します。

分析ジョブは、次の要素で構成されます。

  • 期間

    この期間は、分析ジョブの実行期間を指定します。期間が終了し、Google Cloud Observability からアラートが検出されない場合、分析は成功と見なされ、ロールアウトが続行されます。

  • 1 つ以上のチェック(モニタリング システムのアラート ポリシーに対応)

    各チェックには次のものが含まれます。

    • ID

    • 1 つ以上のアラート ポリシー

    つまり、1 つ以上の Google Cloud Observability アラート ポリシーへの参照です。

    • 特定のアラート ポリシーを識別するために使用される 1 つ以上のラベル。Google Cloud Observability のアラート ポリシーは多くのアプリケーションをモニタリングできるため、これらのラベルを使用すると、1 つ以上の特定のアプリケーションにチェックを制限できます。

    ここでは、システム パラメータをラベルのキーとして使用できます。

standard デプロイ戦略を使用する場合の分析ジョブの構成構文は次のとおりです。


strategy:
  standard:
    analysis:
      duration: DURATION
      googleCloud:
        alertPolicyChecks:
        - id: CHECK_ID
          alertPolicies:
          - [ALERT_POLICY_ID]
          labels:
            [KEY: VALUE]

ここで

  • DURATION

    分析ジョブを実行する時間(秒単位)。期間が経過すると、ジョブは終了します。分析が失敗した場合(コンテナがゼロ以外の終了コードを返した場合)、ジョブは期間が終了する前に終了します(FAILED)。

  • CHECK_ID

    分析の個々のチェックの ID。各 ID は、この分析ジョブ内で一意である必要があります。1 つの分析ジョブに 1 つ以上のチェックを含めることができます。

  • ALERT_POLICY_ID

    チェックに使用している Google Cloud Observability アラート ポリシーのポリシー ID です。アラート ポリシー ID を確認するには、gcloud monitoring policies list を実行します。完全修飾 ID が必要です。これは次のようになります。

    projects/project-redacted/alertPolicies/01234567890123456789

    返される識別子には、ポリシー ID の後に /conditions/13842666848149128276 が含まれる場合があります。これはポリシー ID の一部として含めないでください。

  • KEY と VALUE

    特定の警告のみを考慮するために使用されるラベルの Key-Value ペアです。たとえば、特定のワークロードのアラートのみをチェックで考慮するようにラベルを使用できます。

    ここでは、システム パラメータを値として使用できます。

    システム パラメータを使用する例を次に示します。

    labels:
     service_name: '${{render.metadata.cloud_run.service.name}}'
    

この構成により、分析ジョブが作成されます。複数のチェックがありますが、この構成では 1 つのジョブのみが作成されます。

構成されたアラート ポリシーのいずれもアラートを送信しない場合、このジョブは成功し、ロールアウトが続行されます。ポリシーがアラートをトリガーすると、ジョブは FAILED 状態で停止し、ロールアウトは失敗します(ジョブの失敗を無視することを選択しない限り、FAILED 状態になります)。

デリバリー パイプライン構成ファイルを適用する

分析ジョブを含む配信パイプラインを作成するには、次のコマンドを使用して構成ファイルを適用します。

gcloud deploy apply FILE \
       --region=REGION \
       --project=PROJECT_ID

次のように置き換えます。

  • FILE

    デリバリー パイプライン構成ファイルの名前(clouddeploy.yaml など)を指定します。

  • REGION

    デリバリー パイプラインを作成するリージョン。

  • PROJECT_ID

    このデリバリー パイプラインを作成するプロジェクトの ID。

これで、プロジェクトにデリバリー パイプラインと分析ジョブが作成されました。これらは、リリースを作成するときにパイプラインの一部になります。

次のステップ