本記事は
オブザーバビリティウィーク
1日目の記事です。
💻📄
告知記事
▶▶ 本記事 ▶▶
2日目
🔔🏢
こんにちは。横田です。 本ブログでは、Google CloudのCloud Loggingを使用してVMが停止・起動したときのログを抽出しエラー検知メールを飛ばす方法について話します。 想定する読者層は以下の通りです。
- Google Cloud勉強中の人
- Cloud Loggingを触り始めた人
1. はじめに
使用するサービスはCompute EngineとCloud Loggingです。 VMの停止/起動を検知してメールで通知するというシンプルなものです。 以前、Cloud Monitoringを使用して同じような記事を書いています。 まず、Cloud Loggingについて少し説明します。これは、Google Cloud上の様々なサービスや外部システムから発生する活動記録(ログ)を収集・管理するサービスです。 デフォルトのログ保持期間は監査ログが400日間、その他のログは30日間です。
2. Cloud LoggingとCloud Monitoringの違い
どちらのサービスもオブザーバビリティサービスのため使い分けについて話します。 例としてCloud MonitoringとCloud Loggingそれぞれで検証用の構成を下図に示します。
構成自体は同じで直接Compute Engineインスタンスを監視します。 Cloud Loggingはアプリケーションでエラーの発生や、異常なIPアドレスからのアクセス・ログイン試行を検知などのイベントを監視することに向いています。 ほぼリアルタイムで出力されるログを検知し即座にアラートを飛ばすことができます。 Cloud MonitoringはCPU使用率の急増や、Apacheの接続数が上限に近づいているなどの状態を監視することに向いています。 設定されたウィンドウ(最小1分)のメトリクスを評価し、閾値を超えるとアラートを飛ばします。 どちらのサービスでアラートを飛ばすか迷うときは下記のどちらが用途に適しているかで考えると良いかと思います。
- Cloud Logging:ログを検知してアラートを飛ばす
- Cloud Monitoring:ウィンドウ内のメトリクスを評価してアラートを飛ばす
2つのサービスを組み合わせて、全体の異常をCloud Monitoringで検知し、詳細な情報をログで調査するといった使い方も効果的です。
3. 実装
それでは、実装していきます。 参考にしたサイトは下記になります。
Cloud Logging のドキュメント | Google Cloud
ログベースのアラート ポリシーを構成する | Cloud Logging | Google Cloud
3.1 インスタンス作成
まずはログ取得の対象となるインスタンスを作成します。 検索窓に「Compute Engine」と入力し、表示された検索結果「Compute Engine」をクリックします。
「インスタンスを作成」から設定値を入力します。名前やリージョン、マシン構成は任意で構いません。 今回使用したスペックは以下の表のとおりです。 入力が完了したら「作成」をクリックします。
設定項目 | 設定値 |
---|---|
マシンタイプ | e2-micro |
OSバージョン | Debian GNU/Linux 12 (bookworm) |
VMの停止・起動のログを収集できれば良いので、サーバ内に入って設定を行う必要はありません。 作成したVMインスタンス名をクリックしインスタンスIDを控えておきます。
ログを出力しておくため、ここでインスタンスの停止/起動を行っておきます。 作成したインスタンスにチェックを入れ「停止」をクリック。 停止が完了したら「開始/再開」をクリックします。
これでVMの準備完了です。
3.2 VM停止アラートポリシー作成
次にインスタンスからログを収集し、エラー通知を送信するためのアラートポリシーを作成します。 停止用と起動用に2つのポリシーを作成します。
3.2.1 ログ抽出用クエリ作成
Cloud Loggingでのクエリ作成方法はいくつかありますが、今回はGeminiアプリ(Gemini2.5 Flash)を使って簡易的なクエリを作成します。 お好きなAIアプリを使ってクエリを作成していただいて構いません。 (※プロンプトに個人情報や機密情報を入力するときは事前にオプトアウトされているかなどを必ず確認してください。)
検索窓に「Monitoring」と入力し、表示された検索結果「Monitoring」をクリックします。
ログ エクスプローラの画面が表示され、初期状態は下図のようになっています。 このコンソール上で実行するクエリは無料です。
Geminiアプリに対して以下のプロンプトを入力するとクエリが生成されます。
プロンプト | 生成されたクエリ |
---|---|
あなたはクエリ作成担当者です。 Cloud Loggingを使って特定のCompute Engineが 停止したときのログを抽出するクエリを作って下さい。 |
resource.type="gce_instance" AND protoPayload.methodName="v1.compute.instances.stop" AND resource.labels.instance_id="INSTANCE_ID" |
生成されたクエリをそのまま使い期待通りのログが出力されるか確認します。 生成されたクエリの「INSTANCE_ID」には先ほど控えたインスタンスIDを入力してください。 クエリを入力し「クエリを実行」をクリックします。
結果セクションで確認するとVMの停止ログを抽出できていることが分かります。
以上でログ抽出用クエリの作成は完了です。
3.2.2 通知チャンネルの設定
メールに対して通知を送信するための設定を行います。 「操作」をクリックし「ログアラートの作成」をクリックします。
任意の「アラートポリシー名」と「ドキュメント」を入力し「次へ」をクリック。
「通知の間隔」を5分に設定し「次へ」をクリックします。
「通知チャンネル」をクリックし「Manage Notification Channels」をクリックします。
Eメールの「Add New」をクリックしメールアドレスと表示名を入力し「Save」をクリックします。
右上の「×」ボタンをクリックしリフレッシュマークをクリック。 先ほど設定した通知チャンネルが表示されるのでチェックを入れ「OK」をクリックします。
設定を確認し「Save」をクリック。停止の通知メール設定は完了です。
3.3 VM起動アラートポリシー作成
3.2章と同じ手順でVM起動のポリシーを作成します。 通知先は同じなので通知チャンネルは先ほど作成した「test email address」を使用してください。 プロンプトと生成されるクエリは以下です。
プロンプト | 生成されたクエリ |
---|---|
あなたはクエリ作成担当者です。 Cloud Loggingを使って特定のCompute Engineが 起動したときのログを抽出するクエリを作って下さい。 |
resource.type="gce_instance" AND protoPayload.methodName="v1.compute.instances.start" AND resource.labels.instance_id="INSTANCE_ID" |
左のサイドパネルから「アラート」をクリックしポリシーが2つ作成されていることを確認できれば設定完了です。
3.4 メール確認
正しく実装されているか確認します。 VMを停止させ数分待つとメールが届きます。
VM停止のエラーメールが届いたことを確認した後に、VMの起動を行います。 数分待つと今度は起動通知のメールが届きます。
メール通知の確認完了です。
4. まとめ
本ブログでは、Cloud Loggingを使用してVMインスタンスの停止/起動時にエラー通知を飛ばしました。
- Cloud Loggingはカスタムクエリを作成し柔軟な通知設定が可能
- ログ エクスプローラからのクエリ実行は費用が無料
ここまでお読みいただきありがとうございました。明日もGoogle Cloudのブログを投稿します。