概要
できるだけ低コストでWindows機の生存監視をしてく、GCP で実現してみたので、方法を備忘録としてメモ。
基本的なアーキは下記:
- 【Windows機】 Task Scheduler にて 30 分に1 回 生存証明用URL にアクセスするように仕込む。
- 【GCP/Firebase Hosting】 生存証明用URL (静的HTML)を用意
- 【GCP/Cloud Monitoring】 前述のURLのアクセスを監視し、1h に1度もアクセスが無い状況になったら決めておいたメアド宛にメール送信
ポイント:
- Task Scheduler なのでWindows再起動しても上げなおしが発生しないし、落ちて動かなくなることもない。コードやアプリの配布やインストールも不要。
- Firebase Hosting なので無料枠の中で URL おける。
- Cloud Monitoring なので無料枠の中で監視ができ、特定メアドへと送信も可能。gmailアカウントがあれば管理者追加も楽。
方法
1. Firebase
- Hosting と Cloud Logging を有効にする。
- プランを Blaze にする。(Cloud Loggingで「指標」を使うため。無料枠内に収まると想定。)
-
Log Storage で
_Default
の保存期間を1 days
に。(念のために課金額を減らしておく。) - Hosting のページで Cloud Logging を開始する。
2. 生存証明用URL
-
public/xxxxxx.html
というページ作成。(xxxxxx はランダム文字列。) - firebase deploy
3. タスク(テスト用)追加
- Task Scheduler 起動
タスクの作成...
-
全般
タブ-
名前
: PC名
-
-
トリガー
タブ-
繰り返し間隔
:1分間
-
継続時間
:無期限
-
-
操作
タブ-
新規(N)...
ボタン -
操作
:プログラムの開始
-
プログラム/スクリプト(P)
:curl
-
引数の追加(オプション)(A)
:-s "https://プロジェクトID.web.app/xxxxxx.html?PC名"
-
OK
ボタン
-
4. 指標作成
- Log Explorer にアクセス。今回のプロジェクトを選択。
- 下記でログが取れることを確認
resource.labels.project_id="プロジェクトID" httpRequest.requestUrl=~"https://プロジェクトID.web.app/xxxxxx.html*"
-
指標を作成
ボタン -
ログの指標の作成
画面-
指標タイプ
:Counter
-
ログ指標の名前
:AccessingGeneric
-
単位
:1
-
フィルタの作成
:resource.labels.project_id="プロジェクトID" httpRequest.requestUrl=~"https://プロジェクトID.web.app/xxxxxx.html*"
-
ラベル
:-
名前
:pcid
-
種類
:STRING
-
フィールド名
:httpRequest.requestUrl
-
正規表現
:\.html\?(.*)$
-
-
指標を作成
ボタン
-
5. ポリシー(アラート)作成
- ポリシー にアクセス。今回のプロジェクトを選択。
-
+ CREATE POLICY
ボタン-
指標の選択
で前述の指標(AccessingGeneric
)を選択 -
ADD FILTER
でpcid = PC名
-
ローリングウィンドウ
:5分
-
ローリングウィンドウ関数
:count
-
-
トリガーの設定
Metric absence
任意の時系列の違反
-
2分
(この期間不在になったら通知が飛ぶ) -
Absent PC名 for 2min.
(メールに載る文言)
-
通知と名前
-
通知チャネル
: 自分のメアド -
Notify on incident closure
を ON -
アラートポリシー名
:Absent PC名
-
ポリシーを保存