Cloud Monitoringのログアラートで通知内容にVM名を含める方法

記事タイトルとURLをコピーする

G-gen の三木です。Google Cloud(旧称 GCP)の Cloud Monitoring のアラートポリシー機能で、通知文に VM 名称等を含める方法をご紹介します。

前提知識

Cloud Monitoring とは

Cloud Monitoring は、 Google Cloud における監視機能を提供するサービスです。以下の機能を提供します。

  • メトリクスの収集
  • 可視化
  • アラート管理
  • インシデント管理

詳細は以下の記事をご参照ください。

blog.g-gen.co.jp

blog.g-gen.co.jp

ログベースのアラートとラベル機能

ログベースのアラート機能では、Cloud Logging で収集したログに特定の文字列が現れた際に、E メールや Slack に通知することができます。

また、ログベースのアラートを定義する際にラベルを指定することができます。ラベルとはログエントリの一部を抽出したテキスト値です。

ラベルを上手く活用することで、E メールや Slack へのアラート通知の本文に、様々な情報を出力することが出来ます。

改善前

設定値

VM から出力されるログの重要度が ERROR の場合に通知を飛ばすために、以下のように設定しました。

ログベースの通知の設定方法について、詳細は以下のページをご参照ください。

また、Slack への通知方法は以下のページをご参照ください。

課題

ある Google Cloud 環境で、Compute Engine の VM インスタンスでエラーが発生した際に E メールと Slack へ通知されるよう、上記のようにアラートを設定しました。

動作確認したところ、通知の件名や内容には VM 名が記載されていないため、どの VM でエラーが起きているのかが分かりません。対象の VM を知るには Google Cloud コンソールにログインして詳細を確認する必要がありました。これは、運用上の課題となりました。

メールへの通知例

Slackへの通知例

改善後

設定

通知本文に 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 名が表示されることが確認できました。

改善後のメール通知

改善後のSlack通知の内容

三木宏昭 (記事一覧)

クラウドソリューション部

HROne→ServerWorks→WealthNavi→G-gen。AWS 11資格、Google Cloud認定全冠。Google Cloud Partner Top Engineer 2024。Google Authorized Trainer