G-gen の三木です。Google Cloud(旧称 GCP)の Cloud Monitoring のアラートポリシー機能で、通知文に VM 名称等を含める方法をご紹介します。
前提知識
Cloud Monitoring とは
Cloud Monitoring は、 Google Cloud における監視機能を提供するサービスです。以下の機能を提供します。
- メトリクスの収集
- 可視化
- アラート管理
- インシデント管理
詳細は以下の記事をご参照ください。
ログベースのアラートとラベル機能
ログベースのアラート機能では、Cloud Logging で収集したログに特定の文字列が現れた際に、E メールや Slack に通知することができます。
また、ログベースのアラートを定義する際にラベルを指定することができます。ラベルとはログエントリの一部を抽出したテキスト値です。
ラベルを上手く活用することで、E メールや Slack へのアラート通知の本文に、様々な情報を出力することが出来ます。
- 参考 : ログベースのアラート ポリシーの構成
- 参考 : ログベースの指標にラベルを構成する
改善前
設定値
VM から出力されるログの重要度が ERROR
の場合に通知を飛ばすために、以下のように設定しました。
ログベースの通知の設定方法について、詳細は以下のページをご参照ください。
- 参考 : ログベースのアラート ポリシーの構成
また、Slack への通知方法は以下のページをご参照ください。
- 参考 : Slack 通知を構成す
課題
ある Google Cloud 環境で、Compute Engine の VM インスタンスでエラーが発生した際に E メールと Slack へ通知されるよう、上記のようにアラートを設定しました。
動作確認したところ、通知の件名や内容には VM 名が記載されていないため、どの VM でエラーが起きているのかが分かりません。対象の VM を知るには Google Cloud コンソールにログインして詳細を確認する必要がありました。これは、運用上の課題となりました。
改善後
設定
通知本文に VM の名称を表示させるために、ラベル機能を活用します。
次のように設定することで、VM 名をラベルとして定義できます。
Key | Value |
---|---|
Display name | vm_name |
Log field name | labels.isntance_name |
Log field name では、Cloud Logging に出力されるログエントリのキーを指定します。VM 名だけでなく、ログに出力される内容であれば、この方法で抽出することができます。
次に、定義したラベルを通知の本文にも表示させます。Documentation 設定を次のように書き換えます。
以下に示した ${log.extracted_label.vm_name}
は、前述のラベルを指しています。
VM でエラーが発生しました。 対象のVM名は ${log.extracted_label.vm_name} です。
テスト
次に、通知内容の変化をテストします。
テストの際は logEntries.write
リファレンス ページを活用するのが便利です。Google Cloud の API リファレンスでは、API に対してテストリクエストを送信することができます。
このページの右側ペインの RequestBody に入力した内容が、Cloud Logging ログエントリとして記録されます。
今回は以下のリクエスト内容で、テストを行いました。
{ "entries": [ { "logName": "projects/my-projecct/logs/GCEGuestAgent", "jsonPayload": { "message": "Error happened" }, "severity": "ERROR", "labels": { "instance_name": "test01" }, "resource": { "type": "gce_instance", "labels": { "project_id": "my-projecct", "location": "asia-northeast1", "instance_id": "1234567890123456789", "zone": "asia-northeast1-b" } } } ] }
リクエストを記述したら Execute ボタンを押下することで、Cloud Logging にログエントリが記録され、アラートが発報します。
改善後のアラート内容
通知内容に、VM 名が表示されることが確認できました。
三木宏昭 (記事一覧)
クラウドソリューション部
HROne→ServerWorks→WealthNavi→G-gen。AWS 11資格、Google Cloud認定全冠。Google Cloud Partner Top Engineer 2024。Google Authorized Trainer
Follow @cloudeep_miki