【AWS】 カスタムメトリクスを使ったプロセス監視(Windows編) 【Cloudwatch】

こんにちは。

以前カスタムメトリクスを使ってLinuxのプロセス監視を行うブログを書いたのですが、今回Windowsで同様のことをやってみたいと思います。 

  Linux編はこちら。 qiita.com

環境

  • WindowsServer2012R2 (ami-281ad849)
  • AWS CLI (ver 1.10.63)

目次

  1. IAMロール作成
  2. batファイル作成
  3. テスト

作業

1. IAMロール作成(AWSコンソール作業)

まず、インスタンスにアタッチするIAMロールを作成します。 ポリシーは PutMetoricDataのみ許可します。

IAMポリシー

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "cloudwatch:PutMetricData"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}

上記ポリシーを持ったIAMロールを作成し、WIndowsServer起動時に、アタッチします。

2. batファイル作成(WindowsServer作業)

WIndowsServerを起動したら、プロセスの状態をCloudWatchにPutするバッチを作成します。 今回AWSCLIのインストール手順は割愛します。必要であればクラメソさんの記事を参照ください。

Windows Server への AWS CLIのインストール | Developers.IO

監視するプロセスは、特になんでもいいのですが、W32Time にしてみました。 スクリプト内容を記載していますので、コピー&ペーストでbatファイルを作成してください。

スクリプト概要

  • for分でメタデータより、incetanceidを変数(incetanceid)に格納
  • sc query コマンドで、プロセスの状態がRUNNINGかどうか確認
  • sc query コマンドの返り値を確認
  • 返り値が1(プロセスが起動中)ならば、変数(Processes)に1を格納
  • 返り値が0(プロセス起動中以外)ならば、変数(Processes)に0を格納
  • 格納した変数をもとに、CloudWatchにデータをPUT

スクリプト

@echo off

for /f "usebackq tokens=*" %%a in (`PowerShell.exe -Command invoke-restmethod -uri http://169.254.169.254/latest/meta-data/instance-id`) do @set incetanceid=%%a

sc query W32Time | findstr STATE | findstr RUNNING > null
if %errorlevel% == 0 (
set Processes=1
) else (
set Processes=0
)

aws cloudwatch put-metric-data --metric-name "W32Time" --namespace "System/Windows" --region ap-northeast-1 --value %Processes%  --unit "Count" --dimensions "InstanceId=%incetanceid%"

3. テスト

最後にスクリプトのテストをします。

  • W32Timeプロセスが起動している場合(1を返す)

f:id:ykoomaru:20160911124317p:plain

  • W32Timeプロセスが停止している場合(0を返す)

f:id:ykoomaru:20160911125647p:plain

あとは、タスクマネージャーにスクリプトを仕込んで定期実行すれば、プロセスの監視ができますね。

プロセスが停止している場合にアラートを上げる設定は、カスタムメトリクスの値をトリガーにCloudWatchの設定をしてください。

以上となります。 ご指摘事項がありましたら、ご連絡お願いします。

参考

http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/WindowsGuide/ec2-instance-metadata.html

【AWS】カスタムメトリクスを使ったプロセス監視(Linux編)【CloudWatch】 - Qiita

put-metric-data — AWS CLI 1.10.66 Command Reference