スヌーズの作成と管理

このドキュメントでは、スヌーズを作成、管理する方法について説明します。スヌーズを使用すると、Cloud Monitoring で特定の期間にインシデントの作成や通知の発行ができなくなります。各スヌーズは、適用先のリソースを指定します。

コンセプトの概要については、通知とアラートのスヌーズをご覧ください。

ホワイトリストの作成と管理には、Google Cloud コンソールまたは Cloud Monitoring API を使用します。

始める前に

  1. 必要な権限があることを確認してください。

    • Google Cloud コンソールを使用してスヌーズを表示および編集するために必要な権限を取得するには、プロジェクトに対するモニタリング編集者roles/monitoring.editor)の IAM ロールの付与を管理者に依頼してください。ロールの付与の詳細については、アクセスの管理をご覧ください。

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

    Cloud Monitoring のロールの詳細については、Identity and Access Management を使用してアクセスを制御するをご覧ください。

  2. このドキュメントの Cloud Monitoring API の例を使用する場合は、次の操作を行います。

    1. Google Cloud プロジェクト ID を保存する環境変数である PROJECT_ID を作成します。

      PROJECT_ID=PROJECT_ID
      
    2. Google Cloud CLI に対して認証を行います。

      gcloud auth login
      
    3. デフォルトの Google Cloud プロジェクトを設定します。

      gcloud config set project ${PROJECT_ID}
      
    4. 承認トークンを作成する。

      ACCESS_TOKEN=`gcloud auth print-access-token`
      

      アクセス トークンは定期的に更新する必要があります。動作していたコマンドが急に未認証と報告された場合は、このコマンドを再発行します。

スヌーズの作成

アラート ポリシーでのインシデントの作成と通知の送信を防ぐには、スヌーズを作成します。

スヌーズを作成するには、Google Cloud コンソール、gcloud CLI、または Cloud Monitoring API を使用します。

Console

  1. Google Cloud コンソールのナビゲーション パネルで、[Monitoring] を選択してから、 [アラート] を選択します。

    [アラート] に移動

  2. 対応待ちのインシデントからスヌーズを作成するには、次のようにします。
    1. [アラート] ページの [インシデント] ペインでインシデントを見つけて、[インシデントの概要] をクリックします。
    2. [インシデントの詳細] ページで [スヌーズ] をクリックし、スヌーズ期間を選択します。他のフィールドは構成できません。
  3. まだ完了していない場合は、次の操作を行います。

    1. [アラート] ページで、[スヌーズを作成] をクリックします。
    2. スヌーズ用にわかりやすい名前を入力します。この名前は、[アラート] ページに表示されます。
    3. [Start time] を選択します。特定の時間を入力するか、スヌーズが作成されるときにそのスヌーズを開始できます。
    4. [期間] を入力します。このフィールドの値は、スヌーズが持続する時間を決定します。
    5. [スヌーズの条件] セクションに情報を入力します。[アラート ポリシー] メニューを使用して、スヌーズを適用するアラート ポリシーを選択できます。

      1 つのスヌーズには最大 16 個のアラート ポリシーを追加できます。

      [スヌーズの条件] セクションに入力すると、[スヌーズ条件を作成] ペインに、基準に一致する過去のインシデントが一覧表示されます。

    6. [作成] をクリックします。

Cloud Monitoring API

スヌーズを作成するには、Snooze エンドポイントに POST リクエストを発行することで、snoozes.create メソッドを呼び出します。snooze オブジェクトを指定する必要があります。

curl -d @my-snooze.json -H "Authorization: Bearer $ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
-X POST https://monitoring.googleapis.com/v3/projects/${PROJECT_ID}/snoozes

このメソッドは、snooze オブジェクトを返します。"name" フィールドには、Monitoring によって生成されたスヌーズ ID が含まれます。このフィールドは、返されるオブジェクトと my-snooze.json の内容との唯一の相違点です。

{
  "name": "projects/my-project/snoozes/2986666341878464512",
  "criteria": {
    "policies": [
      "projects/my-project/alertPolicies/787884840895011889"
    ]
  },
  "interval": {
    "startTime": "2022-11-12T19:00:20Z",
    "endTime": "2022-11-12T19:05:20Z"
  },
  "displayName": "Snooze2"
}

gcloud CLI

スヌーズを作成するには、gcloud monitoring snoozes create コマンドを実行します。

gcloud monitoring snoozes create --criteria-policies=LIST_OF_POLICIES --display-name=DISPLAY_NAME --start-time=START_TIME --end-time=END_TIME

前のコマンドでは、end-timestart-time より少なくとも 1 分後である必要があります。ISO 8601 のフォーマット ルールに従う必要があります。ただし、絶対時間または相対時間を指定できます。次の例では、絶対時間を指定しています。現在の時刻から 30 分後にスヌーズを開始するには、--start-time="+PTM30M" を使用します。

複数のプロジェクトを指定する場合は、プロジェクトをカンマで区切ります。

たとえば、次のコマンドは、「Maintenance Week」という表示名でスヌーズを作成します。スヌーズは 2 つのアラート ポリシーに適用され、3 月 1 日から 3 月 7 日までの期間にわたります。

gcloud monitoring snoozes create --display-name="Maintenance Week" \
    --criteria-policies="projects/my-project/alertPolicies/12345,projects/my-project/alertPolicies/23451" \
    --start-time="2023-03-01T03:00:00.0-0500" \
    --end-time="2023-03-07T23:59:59.5-0500"

上記の例では、my-project に次のスヌーズを作成します。

{
 "name": "projects/my-project/snoozes/98765",
 "displayName": "Maintenance Week",
 "interval": {
   "startTime": "2023-03-01T08:00:00Z",
   "endTime": "2023-03-08T04:59:59Z"
 },
 "criteria": {
   "policies": [
     "projects/my-project/alertPolicies/12345",
     "projects/my-project/alertPolicies/23451",
   ]
 }
}

成功すると、このコマンドに対するレスポンスは次のようになります。

Created snooze [projects/my-project/snoozes/98765]

アラート ポリシーの名前は Google Cloud コンソールに表示されません。アラート ポリシーの名前を確認するには、次のいずれかを行います。

  • gcloud alpha monitoring policies list コマンドを実行します。このコマンドのレスポンス データには、アラート ポリシーの名前が含まれています。
  • アラート ポリシーの JSON 表現を表示します。[ポリシーの詳細] ページのオプションを使用して、JSON 表現をローカル システムにダウンロードできます。

定期的なスヌーズを作成する

一定の間隔で発生するスヌーズを作成するには、アラート ポリシーのスヌーズを作成するスクリプトを作成します。次に、cronCloud Scheduler などのジョブ スケジューラを使用して、必要なスケジュールに対してスクリプトを実行します。

スヌーズの一覧表示

スヌーズを作成すると、プロジェクトのスヌーズの履歴レコードに追加されます。このレコードには、期限切れ、アクティブ、および今後のスヌーズが表示されます。このレコードからエントリを削除することはできません。つまり、スヌーズを削除することはできません。ただし、このビューにより、スヌーズの詳細を表示したり、スヌーズの編集やコピーなどの操作を行ったりできます。

Console

スヌーズのリストを表示するには、次の操作を行います。

  1. Google Cloud コンソールのナビゲーション パネルで、[Monitoring] を選択してから、 [アラート] を選択します。

    [アラート] に移動

  2. [スヌーズ] ペインで [すべてのスヌーズを表示] をクリックします。

    [スヌーズ] ページには、スヌーズの一覧と、過去、現在、予定されているスヌーズをグラフで表示するタイムラインが表示されます。

    • スヌーズを編集、コピー、キャンセル、終了するには、 その他のオプション メニューを使用します。使用可能なオプションは、スヌーズの状態によって決まります。
    • すべてのスヌーズを表示するには、[過去のスヌーズを表示] を有効にします。デフォルトでは、アクティブなスヌーズと今後のスヌーズのみが一覧表示されます。
    • [タイムライン] テーブルの表示期間を変更するには、[期間] メニューを使用します。デフォルトでは、今後 1 時間のデータが表示されます。ただし、このフィールドを変更して、過去の期間または将来の期間を指定できます。 期限切れのスヌーズは 13 か月間保持されます。
    • 特定のスヌーズの詳細を表示するには、[詳細を表示] をクリックします。
    • アクティブなスヌーズの概要を表示するには、[タイムライン] テーブルの [アクティブ] 行の網掛け部分にポインタを置きます。ツールチップで概要情報が表示されます。
    • アクティブなスヌーズをグラフで表示するには、[タイムライン] テーブルの [アクティブ] 行を開きます。

Cloud Monitoring API

Google Cloud プロジェクトに属するすべてのスヌーズを一覧表示するには、snoozes.list メソッドを呼び出します。

curl -H "Authorization: Bearer $ACCESS_TOKEN" \
https://monitoring.googleapis.com/v3/projects/${PROJECT_ID}/snoozes

このメソッドは、snooze オブジェクトのリストを返します。たとえば、プロジェクトに 1 つのスヌーズがある場合、snoozes.list コマンドへのレスポンスは次のようになります。

{
  "snoozes": [
    {
      "name": "projects/my-project/snoozes/2986663705844383744",
      "criteria": {
        "policies": [
          "projects/my-project/alertPolicies/787884840895011889"
        ]
      },
      "interval": {
        "startTime": "2022-11-08T19:00:20Z",
        "endTime": "2022-11-08T19:05:20Z"
      },
      "displayName": "Snooze1"
    }
  ]
}

特定のスヌーズに関する情報を取得するには、snoozes.get メソッドを呼び出し、プロジェクト ID とスヌーズ ID を指定します。上記のレスポンスでは、スヌーズ ID は 2986663705844383744 です。

curl -H "Authorization: Bearer $ACCESS_TOKEN" \
https://monitoring.googleapis.com/v3/projects/${PROJECT_ID}/snoozes/${SNOOZE_ID}

このメソッドは、単一の snooze オブジェクトを返します。

{
  "name": "projects/my-project/snoozes/2986663705844383744",
  "criteria": {
    "policies": [
      "projects/my-project/alertPolicies/787884840895011889"
    ]
  },
  "interval": {
    "startTime": "2022-11-08T19:00:20Z",
    "endTime": "2022-11-08T19:05:20Z"
  },
  "displayName": "Snooze1"
}

gcloud CLI

現在のプロジェクトのスヌーズを一覧表示するには、gcloud monitoring snoozes list コマンドを実行します。

gcloud monitoring snoozes list OPTIONAL_FLAGS

オプションのフラグについては、gcloud monitoring snoozes list リファレンス ページをご覧ください。

このコマンドへのレスポンスは、プロジェクト内のスヌーズの名前のリスト(YAML 形式)です。たとえば、ID が my-project の Google Cloud プロジェクトに対するこのコマンドのレスポンスは、単一のエントリです。

criteria:
  policies:
  - projects/my-project/alertPolicies/12345
  - projects/my-project/alertPolicies/23451
displayName: Maintenance Week
interval:
  endTime: '2023-03-08T04:59:59Z'
  startTime: '2023-03-01T08:00:00Z'
name: projects/my-project/snoozes/98765

特定のスヌーズの詳細を一覧表示するには、gcloud monitoring snoozes describe コマンドを実行します。

gcloud monitoring snoozes describe NAME

たとえば、projects/my-project/snoozes/98765 という名前のスヌーズの詳細を表示するには、次のコマンドを実行します。

gcloud monitoring snoozes describe projects/my-project/snoozes/98765

describe コマンドに無効な NAME を渡した場合、レスポンスにはエラーコード 500 と次のメッセージが含まれます。

Internal error encountered. Please retry after a few seconds. If internal errors persist, contact support at https://cloud.google.com/support/docs.

スヌーズを編集する

予定されているスヌーズの名前と期間は編集できます。また、アクティブなスヌーズの名前と終了時間も編集できます。たとえば、メンテナンスの時間枠が再スケジュールされる場合は、スヌーズを編集する必要があります。

過去のスヌーズやスヌーズの条件を編集することはできません。ただし、過去のスヌーズを将来の期間に対してスケジュールするには、該当するスヌーズをコピーして、[作成] を選択する前にそのコピーに変更を適用します。

Console

スヌーズを編集するには、次の手順を行います。

  1. Google Cloud コンソールのナビゲーション パネルで、[Monitoring] を選択してから、 [アラート] を選択します。

    [アラート] に移動

  2. [スヌーズ] ペインで [すべてのスヌーズを表示] をクリックします。
  3. スヌーズのリストで、編集するスヌーズを探し、 その他のオプション メニューで [スヌーズを編集] を選択します。
  4. 変更が完了したら、[保存] をクリックします。

Cloud Monitoring API

既存のスヌーズを変更するには、PATCH リクエストを Snooze エンドポイントに発行して、snoozes.patch メソッドを呼び出します。修正した snooze オブジェクトを提供し、変更するフィールドを識別するクエリ パラメータを含める必要があります。curl を使用する場合、クエリ パラメータを URL エンコードする必要があります。

今後のスヌーズで、名前と期間を変更できます。アクティブなスヌーズでは、名前と終了時間を変更できます。過去のスヌーズは変更できません。

スヌーズの displayName を更新するには、スヌーズ オブジェクトを記述し、表示名を更新する JSON ファイル my-updated-snooze.json を作成します。そのうえで、次のコマンドを実行します。

curl -d @my-updated-snooze.json -H "Authorization: Bearer $ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
-X PATCH https://monitoring.googleapis.com/v3/projects/${PROJECT_ID}/snoozes/${SNOOZE_ID}?updateMask=displayName

このメソッドは、my-updated-snooze.json ファイルの内容と同じ snooze オブジェクトを返します。

{
  "name": "projects/my-project/snoozes/2986665388391530496",
  "criteria": {
    "policies": [
      "projects/my-project/alertPolicies/7164333552684403347"
    ]
  },
  "interval": {
    "startTime": "2022-11-08T22:26:05Z",
    "endTime": "2022-11-08T22:31:05Z"
  },
  "displayName": "Updated snooze name"
}

gcloud CLI

スヌーズを編集するには、gcloud monitoring snoozes update コマンドを実行します。表示名、開始時間、終了時間を更新できます。

gcloud monitoring snoozes update NAME OPTIONAL_FLAGS

update コマンドのオプションのリストについては、gcloud monitoring snoozes update リファレンス ページをご覧ください。

たとえば、projects/my-project/snoozes/98765 という名前のスヌーズの表示名を変更するには、次のコマンドを実行します。

gcloud monitoring snoozes update projects/my-project/snoozes/98765  --display-name="March Maintenance"

スヌーズを終了またはキャンセルする

アクティブなスヌーズに指定した条件と一致するリソースに関する通知を受信するには、スヌーズを終了させます。たとえば、計画されたメンテナンスが予想よりも早く完了したときには、スヌーズを終了できます。

予定されたスヌーズが不要になった場合は、そのスヌーズをキャンセルします。 キャンセル操作では、期間が 0 に設定され、その結果、スヌーズが過去の状態に移行します。

Console

アクティブなスヌーズを終了したり、予定されているスヌーズをキャンセルしたりするには、次の操作を行います。

  1. Google Cloud コンソールのナビゲーション パネルで、[Monitoring] を選択してから、 [アラート] を選択します。

    [アラート] に移動

  2. [スヌーズ] ペインで [すべてのスヌーズを表示] をクリックします。
  3. スヌーズのリストで、終了またはキャンセルするスヌーズを見つけて、次のいずれかを行います。

    • アクティブなスヌーズを終了するには、 [その他のオプション] メニューで [今すぐ終了] を選択します。
    • 予定されているスヌーズをキャンセルするには、 [その他のオプション] メニューで [スヌーズをキャンセル] を選択します。

Cloud Monitoring API

アクティブなスヌーズを終了するには、スヌーズを編集して、終了時刻を現在の時刻に設定します。詳細については、スヌーズを編集するをご覧ください。

予定されているスヌーズをキャンセルするには、スヌーズを編集して、スヌーズの開始時刻に終了時刻を設定します。開始時刻には将来の日付を指定してください。詳細については、スヌーズを編集するをご覧ください。

gcloud CLI

アクティブなスヌーズを終了するか、予定されているスヌーズをキャンセルするには、gcloud monitoring snoozes cancel コマンドを実行します。

gcloud monitoring snoozes cancel NAME

たとえば、projects/my-project/snoozes/98765 という名前のスヌーズをキャンセルするには、次のコマンドを実行します。

gcloud monitoring snoozes cancel projects/my-project/snoozes/98765

スヌーズのコピー

既存のスヌーズを別のスヌーズのテンプレートとして使用する場合は、コピーを作成します。スヌーズをコピーすると、元のスヌーズの値に設定された開始時間を除くすべてのフィールドを含むスヌーズ エディタが開きます。[作成] をクリックする前にすべてのフィールドを変更できます。

コンソールを使用してスヌーズをコピーするには、次の手順を行います。

  1. Google Cloud コンソールのナビゲーション パネルで、[Monitoring] を選択してから、 [アラート] を選択します。

    [アラート] に移動

  2. [スヌーズ] ペインで [すべてのスヌーズを表示] をクリックします。
  3. スヌーズのリストで、編集するスヌーズを探し、 その他のオプション メニューで [スヌーズをコピー] を選択します。
  4. コピーに変更を適用し、[作成] をクリックします。

次のステップ