このドキュメントでは、Cloud Monitoring を使用して Compute Engine ゾーンリソースの予約の使用量をモニタリングする方法について説明します。
Monitoring は、Compute Engine などの Google Cloud サービスのパフォーマンス情報を収集して保存します。パフォーマンス情報は、指標と時系列と呼ばれます。Compute Engine の予約の指標と時系列にアクセスして、次のことができます。
Monitoring ダッシュボードを使用して、予約の使用量を表示します。
Monitoring アラート ポリシーを使用して、予約の使用量が特定の状態になったときに適切なタイミングで通知を受け取ります。
これらの方法により、たとえば、予約が計画どおりに使用されていることを検証でき、無駄なリソースまたは未使用の予約から不要な費用が発生しないように、速やかに対処することもできます。
始める前に
- 予約に関する要件と制限事項を確認します。
-
Enable the Monitoring API.
-
まだ設定していない場合は、認証を設定します。認証とは、Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のように Compute Engine に対する認証を行います。
このページのサンプルをどのように使うかに応じて、タブを選択してください。
コンソール
Google Cloud コンソールを使用して Google Cloud サービスと API にアクセスする場合、認証を設定する必要はありません。
REST
このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
必要なロール
Monitoring ダッシュボードまたはアラート ポリシーを作成して予約の使用量をモニタリングするために必要な権限を取得するには、プロジェクトに対するモニタリング管理者(roles/monitoring.admin
) IAM ロールを付与するよう管理者に依頼してください。ロールの付与の詳細については、アクセス権の管理をご覧ください。
この事前定義ロールには、予約の使用量をモニタリングするための Monitoring ダッシュボードまたはアラート ポリシーの作成に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
Monitoring ダッシュボードまたはアラート ポリシーを作成して予約の使用量をモニタリングするには、次の権限が必要です。
-
ダッシュボードを作成する: プロジェクトの
monitoring.dashboards.create
-
ポリシーのアラートを作成する: プロジェクトの
monitoring.alertPolicies.create
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
制限事項
Monitoring を使用して予約の時系列にアクセスして表示する場合は、次の制限が適用されます。
予約を作成すると、30 分以内にその時系列が利用可能になります。
時系列が利用可能になると、Monitoring は少なくとも 30 分ごとに 1 回更新を開始します。
予約を削除すると、その時系列も削除され、復元できません。
現在のプロジェクトで作成された予約の時系列のみ、アクセスして表示できます。
Monitoring の制限の詳細については、Cloud Monitoring の割り当てと上限をご覧ください。
予約の指標
Monitoring ダッシュボードまたはアラート ポリシーを作成する場合は、まず Google Cloud 指標を選択して Google Cloud サービス実行のパフォーマンスを測定する必要があります。予約では、次の Compute Engine 指標を選択できます。
予約済み: 現在のプロジェクトの各予約で予約されている仮想マシン(VM)インスタンスの数。
使用済み: 現在のプロジェクト内の各予約の使用された VM の数。
指標を選択した後、予約の指標の測定値をさらにフィルタまたはグループ化できます。予約に使用できるフィルタの詳細については、このドキュメントの予約フィルタをご覧ください。
予約フィルタ
Monitoring フィルタを使用して、1 つ以上の予約に関連付けられている時系列データをグループ化またはフィルタリングできます。具体的には、Monitoring ダッシュボードまたはアラート ポリシーを作成するときに、次のラベルを 1 つ以上指定することで、使用する時系列データを制限できます。
セレクタ | ラベル名 | 説明 |
---|---|---|
metadata.system
|
machine_type
|
予約のために予約された VM で指定されたマシンタイプ。 |
metadata.system |
name |
予約の名前。 |
metadata.system
|
state
|
予約の状態。モニタリングできるのは、予約が存在する ACTIVE 状態の予約のみです。 |
metric
|
reserved_resource_type
|
予約による、予約済みゾーンリソースのタイプ。モニタリングできるのは、VM インスタンスである instance VM タイプのみです。 |
resource
|
location
|
予約が配置されているゾーン。 |
resource
|
reservation_id
|
予約の識別子(ID)。 |
resource
|
resource_container
|
予約が存在するプロジェクトのプロジェクト番号。モニタリングできるのは、現在のプロジェクトで作成された予約のみです。 |
フィルタを作成するときは、セレクタとラベル名を指定し、その後に比較演算子、そしてフィルタする値を続ける必要があります。たとえば、クエリにてゾーン us-central1-a
で予約をフィルタリングする場合は、次のフィルタを使用します。
resource.location = "us-central1-a"
フィルタで指定する値が予約のフィールドの値と一致するようにするには、予約の詳細を表示します。
予約の使用量をモニタリングする
予約の使用量をモニタリングするには、このドキュメントで指定されている次のいずれかの方法を選択します。
ダッシュボードを作成する - Monitoring ダッシュボードを作成して、グラフ領域にウィジェットを追加し、予約の使用に結びついた時系列データを表示します。
この方法は、たとえば VM が予約を正しく使用していることの確認や、複数の予約の使用傾向の比較に役立ちます。
アラート ポリシーを作成する - 予約の使用に結びついた時系列データが定義されたしきい値に達した際にアラートを送信するアラート ポリシーを作成します。
この方法は、たとえば、現在のプロジェクトで使用されている VM の数が特定の比率を下回るか、予約が特定の時間にわたって未使用のままになった場合に、通知を受けるために役立ちます。
ダッシュボードを作成する
Google Cloud コンソール(推奨)と Monitoring API を使用して、Monitoring ダッシュボードを作成し、予約の使用に結びついた時系列を表示できます。
Monitoring フィルタの時系列データを表示する方法を定義する場合は、次のいずれかの方法を使用する必要があります。
基本クエリ: この方法は、ダッシュボード ウィジェットの時系列データを簡単に構成する際に便利です。
たとえば、基本クエリを使用して、特定のゾーンの予約のどれがまだすべて使用されていないかを簡単に表示できます。
MQL: この方法は、時系列データの取得、フィルタリング、操作を行い、ダッシュボード ウィジェット用により複雑な構成を作成する際に便利です。
たとえば、Monitoring Query Language(MQL)を使用して、予約内の予約済み VM に対する使用済み VM の割合を表示できます。
基本クエリ
次の例は、折れ線グラフのウィジェットで Monitoring ダッシュボードを作成し、us-central1-a
ゾーンで使用した予約を表示する方法を示しています。
コンソール
基本クエリを使用して Monitoring ダッシュボードを作成するには、次の手順に沿って操作します。
Google Cloud コンソールで [ダッシュボード] に移動します。
[
ダッシュボードを作成] をクリックします。[新しいダッシュボード] ページが開きます。
[
ウィジェットを追加] をクリックします。[ウィジェットを追加] ペインが表示されます。
利用可能なウィジェットのいずれかをクリックします。たとえば、[線] ウィジェットをクリックします。
[ウィジェットを構成する] ペインが表示されます。
[指標を選択] をクリックします。
[指標を選択] ウィンドウで、次のことを行います。
「
Reservation
」と入力して、[予約] を選択します。[有効な指標カテゴリ] リストで、もう一度 [予約] を選択します。
[有効な指標] リストで、使用可能な指標のいずれかを選択します。 たとえば、[使用済み] を選択します。
[適用] をクリックします。
予約を特定のゾーンでフィルタするには、次の操作を行います。
[フィルタを追加] リストで、使用可能な予約用フィルタを 1 つ選択します。この例では、[location] を選択します。
[コンパレータ] リストで、使用可能な演算子を 1 つ選択します。この例では、[=(equals)](デフォルト)を選択します。
[値] リストで、予約のフィルタリングに使用するゾーンを選択します。この例では、[us-central1-a] を選択します。
[適用] をクリックします。
Google Cloud コンソールを使用して Monitoring ダッシュボードをカスタマイズするその他のオプションについては、カスタム ダッシュボードの作成と管理をご覧ください。
REST
基本クエリを使用して Monitoring ダッシュボードを作成するには、dashboards.create
メソッドに POST
リクエストを送信します。
POST https://monitoring.googleapis.com/v1/projects/PROJECT_ID/dashboards
{
"displayName": "Consumed reservations in zone us-central1-a",
"mosaicLayout": {
"columns": 12,
"tiles": [
{
"height": 4,
"widget": {
"title": "Reservation - Used for us-central1-a [MEAN]",
"xyChart": {
"chartOptions": {
"mode": "COLOR"
},
"dataSets": [
{
"minAlignmentPeriod": "60s",
"plotType": "LINE",
"targetAxis": "Y1",
"timeSeriesQuery": {
"timeSeriesFilter": {
"aggregation": {
"alignmentPeriod": "60s",
"perSeriesAligner": "ALIGN_MEAN"
},
"filter": "FILTER",
"secondaryAggregation": {
"alignmentPeriod": "60s",
"perSeriesAligner": "ALIGN_NONE"
}
}
}
}
],
"timeshiftDuration": "0s",
"yAxis": {
"scale": "LINEAR"
}
}
},
"width": 6
}
]
}
}
次のように置き換えます。
PROJECT_ID
: 現在のプロジェクトのプロジェクト ID。FILTER
: ダッシュボードで使用するモニタリング フィルタ。たとえば、ゾーンus-central1-a
で使用した予約をモニタリングするには、次のように指定します。resource.type = 'compute.googleapis.com/Reservation' AND metric.type = 'compute.googleapis.com/reservation/used' AND resource.location = 'us-central1-a'
Monitoring API を使用して Monitoring ダッシュボードをカスタマイズするその他のオプションについては、API を使用してダッシュボードを作成、管理するをご覧ください。
MQL
次の例は、折れ線グラフ ウィジェットで Monitoring ダッシュボードを作成し、予約内の予約済み VM に対する使用済み VM の割合を表示する方法を示しています。
コンソール
MQL を使用して Monitoring ダッシュボードを作成するには、次の手順に沿って操作します。
Google Cloud コンソールで [ダッシュボード] に移動します。
[
ダッシュボードを作成] をクリックします。[新しいダッシュボード] ページが開きます。
[
ウィジェットを追加] をクリックします。[ウィジェットを追加] ペインが表示されます。
利用可能なウィジェットのいずれかをクリックします。たとえば、[線] ウィジェットをクリックします。
[ウィジェットを構成する] ペインが表示されます。
[
MQL] をクリックします。クエリエディタで、MQL クエリを入力します。たとえば、予約内の予約済み VM に対する使用済み VM の割合を表示するには、次のように指定します。
fetch compute.googleapis.com/Reservation | { metric compute.googleapis.com/reservation/used | group_by [metadata.system.name], sliding(1m), max(value.used) ; metric compute.googleapis.com/reservation/reserved | group_by [metadata.system.name], sliding(1m), max(value.reserved) } | ratio
[クエリを実行] をクリックします。
[適用] をクリックします。
Google Cloud コンソールを使用して Monitoring ダッシュボードをカスタマイズするその他のオプションについては、カスタム ダッシュボードの作成と管理をご覧ください。
REST
MQL を使用して Monitoring ダッシュボードを作成するには、dashboards.create
メソッドに POST
リクエストを行います。
POST https://monitoring.googleapis.com/v1/projects/PROJECT_ID/dashboards
{
"displayName": "Consumed reservations in zone us-central1-a",
"mosaicLayout": {
"columns": 12,
"tiles": [
{
"height": 4,
"widget": {
"title": "Reservation - Used for us-central1-a [MEAN]",
"xyChart": {
"chartOptions": {
"mode": "COLOR"
},
"dataSets": [
{
"plotType": "LINE",
"targetAxis": "Y1",
"timeSeriesQuery": {
"timeSeriesQueryLanguage": "MQL_QUERY"
}
}
],
"timeshiftDuration": "0s",
"yAxis": {
"scale": "LINEAR"
}
}
},
"width": 6,
"xPos": 6
}
]
}
}
次のように置き換えます。
PROJECT_ID
: 現在のプロジェクトのプロジェクト ID。MQL_QUERY
: 折れ線グラフ ウィジェットに使用する MQL クエリ。たとえば、予約内の予約済み VM に対する使用済み VM の割合を表示するには、次のように指定します。fetch compute.googleapis.com/Reservation | { metric compute.googleapis.com/reservation/used | group_by [metadata.system.name], sliding(1m), max(value.used) ; metric compute.googleapis.com/reservation/reserved | group_by [metadata.system.name], sliding(1m), max(value.reserved) } | ratio
Monitoring API を使用して Monitoring ダッシュボードをカスタマイズするその他のオプションについては、API を使用してダッシュボードを作成、管理するをご覧ください。
アラート ポリシーを作成する
Google Cloud コンソールと Monitoring API を使用して、現在のプロジェクトの予約消費量についての通知を受信する Monitoring アラート ポリシーを作成できます。
アラート ポリシーのアラート条件を定義する際は、次のいずれかの方法を使用する必要があります。
基本クエリ: この方法は、単純なアラート条件を作成する場合に便利です。
たとえば、基本クエリを使用して、予約が初めて使用されるときにトリガーされるアラート条件を作成できます。
MQL: この方法は、時系列データの取得、フィルタリング、操作を行い、複雑なアラート条件を作成するうえで便利です。
たとえば、Monitoring Query Language(MQL)を使用して、使用された VM に対する予約済み VM の比率が特定のしきい値に達したときにトリガーされるアラート条件を作成できます。
基本クエリ
次の例では、予約が初めて使用されたときにアラート通知を送信するアラート ポリシーを作成します。具体的には、予約内の使用された VM の数が 0
を超えるときは必ずアラートがトリガーされます。
コンソール
基本クエリを使用して Monitoring アラート ポリシーを作成するには、次の手順に沿って操作します。
Google Cloud コンソールで [アラート] に移動します。
[
ポリシーを作成] をクリックします。[アラート ポリシーを作成] ページが開きます。
[
指標を選択] をクリックします。[指標を選択] ウィンドウが表示されます。
[指標を選択] ウィンドウで、次のことを行います。
[リソース名または指標名でフィルタ] フィールドに
Reservation
と入力します。[有効なリソース] リストに [予約] 指標が表示されている場合は、指標を選択します。表示されていない場合は、次の操作を行います。
[アクティブなリソースと指標のみを表示] をオフにします。
[無効なリソース] リストが表示されます。
[無効なリソース] リストで、[予約] を選択します。
[有効な指標カテゴリ] リストで、もう一度 [予約] を選択します。
[有効な指標] リストが表示されます。
[有効な指標] リストで、使用可能な指標のいずれかを選択します。
たとえば、[使用済み] を選択します。
[適用] をクリックします。
[フィルタを追加] をクリックします。
[フィルタを追加] セクションが表示されます。
[フィルタを追加] セクションで、次のようにします。
[ラベル] リストで、このドキュメントで指定されている使用可能な予約用フィルタを 1 つ選択します。
たとえば、予約を名前でフィルタリングするには、[名前] を選択します。
[比較] リストで、使用可能な演算子を 1 つ選択します。
たとえば、[=(等しい)](デフォルト)を選択します。
[値] リストで、モニタリングする予約の名前を選択します。
[完了] をクリックします。
[次へ] をクリックします。
[アラート トリガーの構成] ペインが表示されます。
[条件の種類] セクションで、次のいずれかのオプションを選択します。
時系列が特定の値を上回るか下回った場合に条件をトリガーするには、[しきい値] を選択します。
時系列に特定の時間のデータがない場合に条件をトリガーするには、[指標の不在] を選択します。
時系列が近い将来にしきい値をまたぐことが予想される場合は、[予測] を選択します。
たとえば、[しきい値](デフォルト)を選択します。
[アラート トリガー] リストで、アラートをトリガーする条件を選択します。
たとえば、[Any time series violation](デフォルト)を選択します。
[しきい値の位置] リストで、条件がトリガーされるタイミングを選択します。
たとえば、[しきい値より上] を選択します。
[しきい値] フィールドに、条件の値を入力します。
たとえば、「
0
」と入力します。[条件名] フィールドに、条件の名前を入力します。
たとえば、「
Reservation RESERVATION_NAME consumed.
」と入力します。ここで、RESERVATION_NAME は前の手順で指定した予約の名前です。
[次へ] をクリックします。
[Configure notifications and finalize alert] ペインが表示されます。
[Use notification channels] をクリックします。
[通知チャンネル] フィールドで、インシデントに関する通知を受け取るチャンネルを選択します。
利用可能な通知チャンネルがない場合は、[通知チャンネルを管理] をクリックし、手順に沿って通知チャンネルを作成します。詳細については、通知チャンネルを作成して管理するをご覧ください。
[インシデントの自動クローズ期間] フィールドで、インシデントを自動的にクローズする期間を選択します。
たとえば、[3 日] を選択します。
[アラート ポリシー名] フィールドに、アラート ポリシーの名前を入力します。
たとえば、「
Alert: you started consuming reservation RESERVATION_NAME!
」と入力します。ここで、RESERVATION_NAME は前の手順で指定した予約の名前です。
[次へ] をクリックします。
アラート条件の確認ページが開きます。
[ポリシーの作成] をクリックします。
アラート ポリシーの作成が完了するまでに数秒かかることがあります。この操作を行うと、[アラート ポリシーの作成] ページに戻ります。
Google Cloud コンソールと基本クエリを使用してアラート ポリシーを作成するときに使用可能なオプションについて詳しくは、指標ベースのアラート ポリシーを作成するをご覧ください。
REST
基本クエリを使用して Monitoring アラート ポリシーを作成するには、projects.alertPolicies.create
メソッドに POST
リクエストを送信します。
POST https://monitoring.googleapis.com/v3/projects/PROJECT_ID/alertPolicies
{
"displayName": "Alert: you started consuming reservation RESERVATION_NAME!",
"conditions": [
{
"displayName": "Reservation RESERVATION_NAME consumed.",
"conditionThreshold": {
"filter": "FILTER",
"aggregations": [
{
"alignmentPeriod": "300s",
"crossSeriesReducer": "REDUCE_NONE",
"perSeriesAligner": "ALIGN_MEAN"
}
],
"comparison": "COMPARISON_GT",
"duration": "0s",
"trigger": {
"count": 1
},
"thresholdValue": 0
}
}
],
"alertStrategy": {
"autoClose": "AUTO_CLOSE_TIME"
},
"combiner": "OR",
"enabled": true,
"notificationChannels": [
"projects/PROJECT_ID/notificationChannels/NOTIFICATION_CHANNEL"
]
}
次のように置き換えます。
PROJECT_ID
: 現在のプロジェクトのプロジェクト ID。RESERVATION_NAME
: 現在のプロジェクトにある既存の予約の名前。FILTER
: アラート ポリシーに使用する Monitoring フィルタ。たとえば、RESERVATION_NAME 予約のused
指標をモニタリングするには、次のように指定します。resource.type = 'compute.googleapis.com/Reservation' AND metric.type = 'compute.googleapis.com/reservation/used' AND metadata.system.name = 'RESERVATION_NAME'
AUTO_CLOSE_TIME
: インシデントが自動でクローズするまでの時間(秒)。値は0s
~604800s
(7 日間)の範囲で指定してください。たとえば、「259200s
」(3 日)と入力します。NOTIFICATION_CHANNEL
: 既存の通知チャンネルの名前。通知チャンネルを設定するには、通知チャンネルの作成と管理をご覧ください。
Monitoring API と基本クエリを使用してアラート ポリシーを作成するときに使用可能なオプションについては、API を使用してアラート ポリシーを作成するをご覧ください。
MQL
次の例では、予約内の予約済み VM に対する使用済み VM の割合が 90% を超えるときは常にアラート通知を送信するアラート ポリシーを作成します。
コンソール
MQL を使用して Monitoring アラート ポリシーを作成するには、次の手順に沿って操作します。
Google Cloud コンソールで [アラート] に移動します。
[
ポリシーを作成] をクリックします。[アラート ポリシーを作成] ページが開きます。
ツールバーで [MQL] をクリックします。
[クエリを編集] ペインが表示されます。
[クエリを編集] ペインで、MQL クエリを入力します。
たとえば、予約を名前でグループ化し、予約の 90% 以上が消費されたときにアラート条件をトリガーするクエリを作成するには、次のクエリを入力します。
fetch compute.googleapis.com/Reservation | { metric compute.googleapis.com/reservation/used | group_by [metadata.system.name], sliding(1m), max(value.used) ; metric compute.googleapis.com/reservation/reserved | group_by [metadata.system.name], sliding(1m), max(value.reserved) } | ratio | every 1m | condition gt(val(), 0.9)
入力したクエリを実行するには、[クエリを実行] をクリックします。
[次へ] をクリックします。
[アラート トリガーの構成] ペインが表示されます。
[条件名] の場合は、条件の名前を入力します。
たとえば、「
Over 90% of your reservations are consumed.
」と入力します。もう一度 [次へ] をクリックします。
[Configure notifications and finalize alert] ペインが表示されます。
[Use notification channels] をクリックします。
[通知チャンネル] フィールドで、インシデントに関する通知を受け取るチャンネルを選択します。
利用可能な通知チャンネルがない場合は、[通知チャンネルを管理] をクリックし、手順に沿って通知チャンネルを作成します。詳細については、通知チャンネルを作成して管理するをご覧ください。
[インシデントの自動クローズ期間] フィールドで、インシデントを自動的にクローズする期間を選択します。
たとえば、[3 日] を選択します。
[アラート ポリシー名] フィールドに、アラート ポリシーの名前を入力します。
たとえば、「
Alert: over 90% of your reservations are consumed.
」と入力します。[次へ] をクリックします。
アラート条件の確認ページが開きます。
[ポリシーの作成] をクリックします。
アラート ポリシーの作成が完了するまでに数秒かかることがあります。この操作を行うと、[アラート ポリシーの作成] ページに戻ります。
Google Cloud コンソールと MQL を使用するアラート ポリシーの作成の詳細については、MQL アラート ポリシー(コンソール)の作成をご覧ください。
REST
MQL を使用して Monitoring アラート ポリシーを作成するには、projects.alertPolicies.create
メソッドに POST
リクエストを送信します。
POST https://monitoring.googleapis.com/v3/projects/PROJECT_ID/alertPolicies
{
"displayName": "Alert: over 90% of your reservations are consumed.",
"conditions": [
{
"displayName": "Over 90% of your reservations are consumed.",
"conditionMonitoringQueryLanguage": {
"duration": "0s",
"trigger": {
"count": 1
},
"query": "MQL_QUERY"
}
}
],
"alertStrategy": {
"autoClose": "AUTO_CLOSE_TIME"
},
"combiner": "OR",
"enabled": true,
"notificationChannels": [
"projects/PROJECT_ID/notificationChannels/NOTIFICATION_CHANNEL"
]
}
次のように置き換えます。
PROJECT_ID
: 現在のプロジェクトのプロジェクト ID。MQL_QUERY
: アラート ポリシーに使用する MQL クエリ。たとえば、現在のプロジェクトの予約において、予約済み VM に対する使用済み VM の割合が 90% を超えたときを追跡するクエリを作成するには、次のように指定します。fetch compute.googleapis.com/Reservation | { metric compute.googleapis.com/reservation/used | group_by [metadata.system.name], sliding(1m), max(value.used) ; metric compute.googleapis.com/reservation/reserved | group_by [metadata.system.name], sliding(1m), max(value.reserved) } | ratio | every 1m | condition gt(val(), 0.9)
AUTO_CLOSE_TIME
: インシデントが自動でクローズするまでの時間(秒)。値は0s
~604800s
(7 日間)の範囲で指定してください。たとえば、「259200s
」(3 日)と入力します。NOTIFICATION_CHANNEL
: 既存の通知チャンネルの名前。通知チャンネルを設定するには、通知チャンネルの作成と管理をご覧ください。
Monitoring API と MQL を使用したアラート ポリシーの作成の詳細については、MQL アラート ポリシー(API)の作成をご覧ください。
トラブルシューティング
予約のモニタリングに関する問題をトラブルシューティングする方法を学習します。
次のステップ
予約を使用する方法を学習する。
コミットメントに予約を関連付ける方法を学習する。
予約の変更方法を学習する。
予約の削除方法を学習する。