こんにちは!G-genの片岡です。本記事では、Cloud Monitoring で利用可能な監視の静観設定(Snooze)について見ていきます。 ノイズアラートをどう抑止するか、頭を悩ませていた日々から開放される日も近そうですね!
Cloud Monitoring 振り返り
Cloud Monitoring では、アラートポリシーを用いて、アラートを通知する条件と方法を定義することができます。
例えば Google Compute Engine (以下GCE) の運用において、VMの負荷や稼働状況を収集し、指定した条件に応じてメールやSlack 通知を行うことで、事象に素早く気付くことが可能となります。
Cloud Monitoring の概要及び基本機能については、以下の記事で解説しています。
モニタリング
今回は、GCE のリソースモニタリングとアラートの設定例を取り上げていきます。
検証用 VMは、Debian GNU/Linux 11 (bullseye)で、Apache2 HTTP Server をインストールした環境を利用しています。
Ops エージェント
Cloud Monitoring はデフォルトで標準的な指標(Google Cloud の指標)を取得することができます。
一方で、メモリ使用率
, ディスク使用率
, スワップ利用率
等は「Ops エージェント」を VM にインストールすることで取得可能となります。
- "Google Cloud の指標" で収集できる項目
- "Ops エージェントの指標" で収集できる項目
Monitoring
> ダッシュボード
> VM Instances
を確認すると、作成した直後のVMはエージェントが "未検出” の状態です。
Opsエージェントがインストールされていない場合、メモリ使用率
やディスク使用率
の指標が取得できていません。
Ops エージェントのセットアップ
今回はこちらの手順を参考に、Opsエージェントのインストールを行っていきます。
インストールコマンドを実行後、数分でOpsエージェントが検出されます。
*インストール後、数分経ってもエージェントステータスが"未検出"の場合、VM にアタッチされているサービスアカウントに、以下のロールが付与されているかご確認ください。
- モニタリング指標の書き込み (roles/monitoring.metricWriter)
その他要件については、こちらをご確認ください。
正常にインストールが完了すると、先程まで取得できていなかったメモリ使用率
やディスク使用率
の指標が取得できています。
アラート設定
次の3つのポリシー作成を行います。
1."Google Cloud の指標" を用いた CPU utilization ポリシー
2."Ops エージェントの指標” を用いた Memory utilization ポリシー
3. 稼働時間チェックを用いたポリシー
Monitoring
>アラート
からポリシーの作成を行います。
1.CPU utilization
CPU使用率がしきい値を超えた場合に、メール通知を行うポリシーを作成します。
アラート条件を指標から選択します。
本設定では、1分間のCPU 使用率をしきい値と比較します。
今回はしきい値を 80%より上 と定義しました。
通知チャンネルを設定します。今回はメールでの通知とします。
アラート ポリシー名 を設定します。
2.Memory utilization
メモリ使用率がしきい値を超えた場合に、メール通知を行うポリシーを作成します。
アラート条件を指標から選択します。
本設定では、1分間のメモリ使用率をしきい値と比較します。
今回はしきい値を 80%より上 と定義しました。
通知チャンネルを設定します。今回はメールでの通知とします。
アラート ポリシー名 を設定します。
3.稼働時間チェック
Monitoring
>稼働時間チェック
から設定を行います。
GCE で稼働しているサービスエンドポイントにアクセスできなくなった場合に、メール通知を行うポリシーを作成します。
以下の通り設定を行います。
動作確認
1.CPU負荷をかけてみる
- 以下のコマンドを負荷状況に応じて複数回実行
yes > /dev/null &
設定した通りに、アラートがトリガーされました。
2.メモリ負荷をかけてみる
- 以下のコマンドを負荷状況に応じて複数回実行
/dev/null < $(yes) &
設定した通りに、アラートがトリガーされました。
3.VMインスタンスを停止してみる
- コンソールからVMインスタンスを停止
設定した通りに、アラートがトリガーされました。
静観設定(Snooze)設定
定期的なバックアップ処理、ウイルススキャン、各種バッチ処理によるリソース消費のスパイク時、またはメンテナンス時など、特定の期間においてアラート発報を抑止したいといったニーズがあるかと思います。Snooze機能を使うことで、アラート発報を一定期間無効にすることが可能です。
- 参考:スヌーズの作成と管理
ここまで設定してきたアラートを用いて、Snooze機能を検証してみます。
Monitoring
> アラート
画面中段に "Snoozes" という項目ができています。
ユースケース①:緊急メンテナンス等で、今から30分間アラート発報を無効にしたい場合
ユースケース②:毎日22:00から24:00までアラート発報を無効にしたい場合
最後に、停止する対象アラートを選択して設定完了です。
実際に、Snooze期間内に上記同様の動作確認3項目を実施しましたが、インシデントとしてはカウントされずアラート発報を抑止できました。
指定した期間が終わると、Snoozeが解除され通常のアラート動作が再開されます。
Snooze期間内の場合は、手動でSnoozeを終了することも可能です。
事前にメンテナンスウィンドウを設定しておくことで、ノイズアラートの撲滅に貢献できる機能となります。
曜日単位での設定やラベリングによる対応等、今後の機能拡張にも期待したいところです。
片岡 義就 (記事一覧)
クラウドソリューション部
2022年7月 G-genにジョイン。
前職ではAWSをはじめインフラ全般の設計構築、販促企画に従事。お客様にとって最適なクラウドジャーニーを伴走支援すべく、スキルUPに奔走中。