概要
できるだけ低コストで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名
-
ポリシーを保存