このドキュメントでは、Cloud Monitoring API を使用して指標ベースのアラート ポリシーをプログラムで作成、編集、削除、一覧表示、取得する方法について説明します。次の例は、Google Cloud CLI の使用方法とクライアント ライブラリの使用方法を示しています。 このコンテンツは、ログベースのアラート ポリシーには適用されません。ログベースのアラート ポリシーの詳細については、ログのモニタリングをご覧ください。
これらのタスクは、Google Cloud コンソールを使用して行うこともできます。詳細については、次のドキュメントをご覧ください。
アラート ポリシーについて
アラート ポリシーは、AlertPolicy
オブジェクトとして表されます。このオブジェクトは、システムにおける異常な状態の可能性を示す一連の条件を記述するものです。アラート ポリシーは通知チャネルを参照します。通知チャネルには、アラート ポリシーがトリガーされたことを通知する方法を指定できます。
各アラート ポリシーは、指標スコープのスコープ プロジェクトに属しています。各プロジェクトには最大 500 個のポリシーを含めることができます。API 呼び出しの場合は、「プロジェクト ID」を指定する必要があり、指標スコープのスコープ プロジェクトの ID を値として使用します。この例では、指標スコープのスコープ プロジェクトの ID は a-gcp-project
です。
AlertPolicy
リソースでは、次の 5 つの操作がサポートされています。
- 新しいポリシーの作成
- 既存のポリシーの削除
- 特定のポリシーの取得
- すべてのポリシーの取得
- 既存のポリシーの変更
アラート ポリシーは JSON または YAML で表現できます。これにより、ポリシーをファイルに記録し、ファイルを使用してポリシーをバックアップおよび復元できます。Google Cloud CLI では、どちらの形式のファイルからもポリシーを作成できます。REST API では、JSON ファイルからポリシーを作成できます。選択可能な JSON 形式のアラート ポリシーについては、サンプル ポリシーをご覧ください。
以下の例では、gcloud
インターフェースと API を使用して、ポリシーの基本的な使用例を示しています。API サンプルは、アラート ポリシー用のバックアップおよび復元システムの実装に API を使用するサンプル プログラムから抜粋したものです。サンプルの詳細は、例: バックアップと復元に示されています。
始める前に
API に対してコードを記述する前に以下が必要です。
- アラート ポリシーで使用される一般的なコンセプトと用語を十分理解する。詳細については、アラートの概要をご覧ください。
- Cloud Monitoring API が使用可能である。詳細については、API の有効化をご覧ください。
- クライアント ライブラリを使用する場合は、使用する言語のライブラリをインストールする。詳しくは、クライアント ライブラリをご覧ください。 現在、アラートの API サポートは、C#、Go、Java、Node.js、および Python でのみ使用できます。
Google Cloud CLI を使用する場合は、インストールする。ただし、Cloud Shell を使用する場合は、Google Cloud CLI がすでにインストールされていること。
gcloud
インターフェースを使用した例もここで説明します。gcloud
の例ではすべて、現在のプロジェクトがターゲット(gcloud config set project [PROJECT_ID]
)としてすでに設定されているため、呼び出しによって明示的な--project
フラグが省略されることが想定されています。サンプル内の現在のプロジェクトの ID はa-gcp-project
です。
-
Cloud Monitoring API を使用してアラート ポリシーを作成および変更するために必要な権限を取得するには、プロジェクトに対する Monitoring AlertPolicy 編集者(
roles/monitoring.alertPolicyEditor
)の IAM ロールの付与を管理者に依頼してください。 ロールの付与については、プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
Monitoring の IAM ロールの詳細については、Identity and Access Management を使用してアクセスを制御するをご覧ください。
アプリケーションを Google Cloud プロジェクト内のアラート ポリシーの状態を変更するシングル スレッドの Cloud Monitoring API 呼び出しに設計します。たとえば、アラート ポリシーの作成、更新、削除を行うシングル スレッド API 呼び出しなどです。
アラート ポリシーを作成する
プロジェクトでアラート ポリシーを作成するには、alertPolicies.create
メソッドを使用します。このメソッドの呼び出し方法、パラメータ、レスポンス データについては、リファレンス ページ alertPolicies.create
をご覧ください。
JSON ファイルまたは YAML ファイルからポリシーを作成できます。Google Cloud CLI では、これらのファイルを引数として指定できます。プログラムで JSON ファイルを読み取り、AlertPolicy
オブジェクトに変換して、そのオブジェクトから alertPolicies.create
メソッドでポリシーを作成することもできます。 アラートルールを含む Prometheus JSON または YAML 構成ファイルがある場合は、gcloud CLI を使用して、PromQL 条件を含む Cloud Monitoring アラート ポリシーに移行できます。詳細については、Prometheus からアラートのルールとレシーバーを移行するをご覧ください。
次のサンプルは、アラート ポリシーの作成を示していますが、アラート ポリシーを記述する JSON ファイルまたは YAML ファイルを作成する方法については説明していません。代わりにこのサンプルでは、JSON 形式のファイルが存在し、API 呼び出しの発行方法を示しています。JSON ファイルの例については、サンプル ポリシーをご覧ください。指標の比率のモニタリングの概要については、指標の比率をご覧ください。
gcloud
プロジェクトでアラート ポリシーを作成するには、gcloud alpha monitoring
policies create
コマンドを使用します。次の例では、rising-cpu-usage.json
ファイルから a-gcp-project
でアラート ポリシーを作成します。
gcloud alpha monitoring policies create --policy-from-file="rising-cpu-usage.json"
このコマンドが成功すると、新しいポリシーの名前が戻ります。次に例を示します。
Created alert policy [projects/a-gcp-project/alertPolicies/12669073143329903307].
ファイル rising-cpu-usage.json
には、表示名「High CPU rate of change」のポリシーの JSON が含まれています。このポリシーの詳細については、変化率ポリシーをご覧ください。
詳細については、gcloud alpha monitoring policies create
のリファレンスをご覧ください。
C#
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Go
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Java
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
PHP
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
作成された AlertPolicy
オブジェクトには、追加のフィールドがあります。ポリシー自体には、name
、creationRecord
、mutationRecord
の各フィールドがあります。さらに、ポリシーの各条件にも name
が付けられます。これらのフィールドは外部で変更することはできないため、ポリシーを作成するときにこれらのフィールドを設定する必要はありません。ポリシーの作成に使用する JSON のどの例にも、これらのフィールドは含まれていません。ただし、フィールドから作成されたポリシーが作成後に取得された場合、フィールドが表示されます。
アラート ポリシーを一覧表示して取得する
プロジェクト内のポリシーのリストを取得するには、alertPolicies.list
メソッドを使用します。このメソッドを使用してポリシーを取得し、それぞれのポリシーに対してなんらかのアクション(バックアップなど)を実行します。このメソッドでは filter
オプションと orderBy
オプションもサポートされており、結果を絞り込んだり並べ替えたりできます。並べ替えとフィルタリングをご覧ください。
特定のポリシーを探している場合に、その名前がわかっているときは、alertPolicies.get
メソッドを使用して、そのポリシーのみを取得できます。ポリシーの名前は、AlertPolicy
オブジェクトの displayName
ではなく、name
フィールドの値です。ポリシーの名前は projects/[PROJECT_ID]/alertPolicies/[POLICY_ID]
という形式になります。たとえば、次のようになります。
projects/a-gcp-project/alertPolicies/12669073143329903307
gcloud
プロジェクト内のすべてのアラート ポリシーを一覧表示するには、gcloud alpha monitoring
policies list
コマンドを使用します。
gcloud alpha monitoring policies list
list
コマンドが成功すると、指定したプロジェクト内のすべてのポリシーの一覧が YAML 形式で返されます。たとえば、プロジェクト a-gcp-project
内の「High CPU rate of change」という表示名のポリシーは次のように一覧表示されます(このリストには、他のポリシーも含まれています)。
---
combiner: OR
conditions:
- conditionThreshold:
aggregations:
- alignmentPeriod: 900s
perSeriesAligner: ALIGN_PERCENT_CHANGE
comparison: COMPARISON_GT
duration: 180s
filter: metric.type="compute.googleapis.com/instance/cpu/utilization" AND resource.type="gce_instance"
thresholdValue: 0.5
trigger:
count: 1
displayName: CPU usage is increasing at a high rate
name: projects/a-gcp-project/alertPolicies/12669073143329903307/conditions/12669073143329903008
creationRecord:
mutateTime: '2018-03-26T18:52:39.363601689Z'
mutatedBy: [USER@DOMAIN]
displayName: High CPU rate of change
enabled: true
mutationRecord:
mutateTime: '2018-03-26T18:52:39.363601689Z'
mutatedBy: [USER@DOMAIN]
name: projects/a-gcp-project/alertPolicies/12669073143329903307
---
アラート ポリシーを 1 つ表示するには、代わりに gcloud alpha monitoring policies
describe
を使用し、ポリシーの名前を指定します。たとえば、次のコマンドは上記のリストのみを返します。
gcloud alpha monitoring policies describe projects/a-gcp-project/alertPolicies/12669073143329903307
詳細については、gcloud alpha monitoring policies list
と describe
のリファレンスをご覧ください。describe
コマンドは、API の alertPolicies.get
メソッドに相当します。
C#
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Go
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Java
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
PHP
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
アラート ポリシーを削除する
プロジェクトからポリシーを削除するには、alertPolicies.delete
メソッドを使用して、削除するアラート ポリシーの名前を指定します。
gcloud
アラート ポリシーを削除するには、gcloud alpha monitoring policies
delete
を使用して、削除するポリシーの名前を指定します。たとえば、次のコマンドは、表示名「High CPU rate of change」のポリシーを削除します。
gcloud alpha monitoring policies delete projects/a-gcp-project/alertPolicies/12669073143329903307
詳細については、gcloud alpha monitoring policies delete
のリファレンスをご覧ください。
アラート ポリシーを変更する
アラート ポリシーを変更するには、alertPolicies.patch
メソッドを使用します(REST API 内)。他の API の実装と gcloud
インターフェースは、patch
ではなく、この update
を呼び出します。
update オペレーションは、既存のポリシーを完全に置き換えることも、フィールドのサブセットを変更することもできます。update オペレーションは、新しい AlertPolicy
オブジェクトと、オプションのフィールド マスクを受け取ります。
フィールド マスクが指定されている場合、フィールド マスクにリストされているフィールドはすべて、指定されたポリシーの値で更新されます。指定されたポリシーにフィールド マスクに記載されたフィールドが含まれていない場合、そのフィールドはクリアされ、デフォルト値に設定されます。マスクにリストされていないフィールドは、以前の値のままになります。
フィールド マスクが指定されていない場合、既存のポリシーは指定されたポリシーに置き換えられますが、名前(projects/[PROJECT_ID]/alertPolicies/[POLICY_ID]
)は再利用されます。新しいポリシーの条件に CONDITION_ID
を含む name
値がある場合、それらの名前を使用します。値がない場合は、新しい条件とポリシー名が作成されます。
gcloud
コマンドラインを使用してポリシーを更新する場合、更新するフィールドの指定には、フィールド マスクではなく、コマンドライン フラグが使用されます。詳細については、gcloud alpha monitoring policies update
をご覧ください。
アラート ポリシーを有効または無効にする
ポリシーを有効または無効にするには、AlertPolicy
オブジェクトでブール値フィールド enabled
の値を変更します。ポリシーを有効にした場合、ポリシーが無効になっていた間に収集されたデータによってトリガーされることに注意してください。
gcloud
アラート ポリシーを無効にするには、gcloud alpha monitoring policies update
コマンドを使用して、--no-enabled
フラグを指定します。次のコマンドによって、プロジェクト a-gcp-project
内の「High CPU rate of change」アラート ポリシーが無効になります。
gcloud alpha monitoring policies update projects/a-gcp-project/alertPolicies/12669073143329903307 --no-enabled
ポリシーを有効にするには、同じコマンドを使用して、--enabled
フラグを指定します。詳細については、gcloud alpha monitoring policies update
のリファレンスをご覧ください。update
コマンドは、REST API の alertPolicies.patch
メソッドに相当します。
C#
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Go
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Java
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
PHP
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
アラート ポリシーで通知チャネルを更新する
アラート ポリシーで参照される通知チャネルを更新することもできます。 アラート ポリシーは、通知チャネルを名前で参照します。その時点で存在していないチャネルを、アラート ポリシーで使用することはできません。
NotificationChannel
リソースと NotificationChannelDescriptors
リソースを使用して、通知チャネルをプログラムで作成および管理します。
ここで紹介する例は、これらのチャネルがすでに存在していることを前提にしています。API の使用例もプログラムのサンプルに含まれています。
通知チャネル オブジェクトの詳細については、API によって通知チャネルを作成して管理するをご覧ください。
gcloud
アラート ポリシーで通知チャネルを変更するには、gcloud alpha monitoring policies update
コマンドを使用します。通知チャネルに関連するフラグを指定することで、通知チャネルの削除、置き換え、新しい通知チャネルの追加ができます。
たとえば、プロジェクト a-gcp-project の表示名「High CPU rate of change」のポリシーは、通知チャネルなしで作成されています。
このポリシーに通知チャネルを追加するには、gcloud alpha monitoring
policies update
コマンドを使用し、--add-notification-channels
フラグを指定して追加するチャネルを指定します。
gcloud alpha monitoring policies update projects/a-gcp-project/alertPolicies/12669073143329903307 \
--add-notification-channels="projects/a-gcp-project/notificationChannels/1355376463305411567"
詳細については、gcloud alpha monitoring policies update
のリファレンスをご覧ください。update
コマンドは、REST API の alertPolicies.patch
メソッドに相当します。
ここで追加する通知チャネルはあらかじめ存在している必要があります。詳細については、通知チャンネルを作成するをご覧ください。
C#
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Go
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Java
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
PHP
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
アラート ポリシーのドキュメントを変更する
ポリシーに関連付けられたインシデントと通知に含まれているドキュメントをポリシーに含めることができます。応答側がアラート ポリシーで示された問題を理解し、処理する際に役立つ情報を組み込むには、このフィールドを使用します。ドキュメントは、メール通知とドキュメントを利用できる通知タイプに含まれています。それ以外のチャネルタイプではドキュメントが省略されることがあります。
gcloud
ポリシーにドキュメントを追加したり、既存のドキュメントを置き換えたりするには、gcloud alpha monitoring policies update
コマンドを使用して、--documentation-format="text/markdown"
フラグ(サポートされている唯一の形式)を指定し、さらに、--documentation
フラグ(コマンドラインから値を入力する場合)または --documentation-from-file
フラグ(ファイルから値を読み取る場合)のいずれかを指定します。
たとえば、プロジェクト a-gcp-project の表示名「High CPU rate of change」のポリシーは、ドキュメントなしで作成されています。
次のコマンドは、指定されたポリシーの documentation
フィールドを、cpu-usage-doc.md
ファイルの内容に設定します。
gcloud alpha monitoring policies update projects/a-gcp-project/alertPolicies/12669073143329903307 \
--documentation-format="text/markdown" \
--documentation-from-file="cpu-usage-doc.md"
詳細については、gcloud alpha monitoring policies update
のリファレンスをご覧ください。update
コマンドは、REST API の alertPolicies.patch
メソッドに相当します。
ダッシュボードにアラート ポリシーを追加する
カスタム ダッシュボードで単一条件のアラート ポリシーの概要を表示するには、ダッシュボードに AlertChart
ウィジェットを追加します。新しいダッシュボードには dashboards.create
メソッドを使用し、既存のダッシュボードには dashboards.patch
メソッドを使用します。
複数条件のアラート ポリシーを指定すると、AlertChart
ウィジェットにはデータが表示されません。
これらの API メソッドの使用方法の詳細については、API を使用してダッシュボードを作成、管理するをご覧ください。
例: バックアップと復元
ここに示すすべての API の例は、プロジェクト内のアラート ポリシーをファイルにバックアップし、そのポリシーを別のプロジェクトに復元できる、より大きなアプリケーションから引き出されたものです。バックアップと復元に使用されるプロジェクトが別の場合、1 つのプロジェクトから別のプロジェクトへのポリシーのエクスポートとインポートをこの大きなアプリケーションで行ったことになります。
ここでは、小さな個別の抜粋ではなく、コンテキスト内のバックアップと復元のコードを示します。
ポリシーのバックアップ
バックアップ オペレーションは簡単です。各プロジェクトのアラート ポリシーのセットと通知チャネルのセットが収集され、JSON の外部ストレージに保存されます。
C#
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Go
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Java
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
PHP
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
バックアップされたポリシーの復元
復元プロセスは、元のバックアップより複雑です。元のバックアップしたプロジェクトに復元することができます。別のプロジェクトに復元して、アラート ポリシーのインポートを行うこともできます。
同じプロジェクトに復元する場合、既存のチャネルまたはポリシーがそのまま残っている場合はこちらも更新されます。存在しない場合は再作成されます。バックアップされたポリシー内の読み取り専用項目(作成レコード、変異レコードなど)は、ポリシーおよび通知が再作成される前に復元プロセスによってクリアされます。
また、あるプロジェクトに保存されたポリシーを使用して、別のプロジェクトで新規または類似のポリシーを作成できます。ただし、保存したポリシーのコピーでは、最初に次の変更を行う必要があります。
- 通知チャネルから次のフィールドを削除します。
name
verificationStatus
- アラート ポリシーでチャネルを参照する前に通知チャネルを作成します(新しいチャネル ID が必要です)。
- 再作成するアラート ポリシーから次のフィールドを削除します。
name
condition.name
creationRecord
mutationRecord
新規プロジェクトでポリシーが再作成されると、バックアップされたポリシー内の条件の名前は、作成レコードおよび変異レコードとともにクリアされます。
別のプロジェクトに通知チャネルを再作成すると、別の名前が付けられるため、復元プロセスでは、バックアップされたアラート ポリシーのチャネル名を新しい名前にマップし、古い名前を新しい名前で置き換える必要があります。
チャネルの作成時や更新時には、通知チャネルの名前のほか、verificationStatus
フィールドの値も設定することはできないため、センチネル値の unspecified
が使用されます。チャネルが新しいプロジェクトに復元された後は、チャネルを明示的に確認する必要があります。
C#
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Go
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Java
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
PHP
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
アラートと Google Cloud CLI
Google Cloud CLI では、アラート ポリシーと通知チャネルを管理するコマンド グループは monitoring
であり、これは現在アルファ版です。monitoring
グループは alpha
コンポーネントで使用できます。つまり、これらのコマンドはすべて以下から始まります。
gcloud alpha monitoring
alpha
コンポーネントがインストールされているかどうかを確認するには、次のコマンドを実行します。
gcloud components list
alpha
コンポーネントがインストールされていない場合は、次のコマンドを実行してインストールします。
gcloud components install alpha
alpha
コンポーネントがある場合は、次のコマンドを実行して、monitoring
グループがないかチェックします。
gcloud alpha monitoring --help
monitoring
グループが含まれていない場合、このグループを追加するように Google Cloud CLI からメッセージが表示されます。
You do not currently have this command group installed.
[...]
Do you want to continue (Y/n)? y