AWS CLIを利用した、サービス監視について(Windows)


概要

 AWS CLIを利用したWindowsサービス監視について記載します。
 CloudWatch Agentでは、プロセス監視が可能ですが、サービス監視を行う事が出来ません。
 そこで、Windowsのコマンドでサービスの起動状態を確認し
 結果をCloudWatchに出力するといった内容となります。※
 ※出力=put の意味となります。

事前設定

 本内容では、下記項目が必要となるので先事前に準備をお願いします。
 ①CloudWatch メトリクス 出力用 IAMユーザ作成 ※1
 ②AWS CLIインストール,初期設定(IAMユーザ設定含む) ※1
 ※1 上記内容は、AWSに公式手順がある為参照してください。

設定内容

 今回の設定内容については、2フェーズに分け作業を実施します。
 ★設定フェーズ
  ①監視サービス名確認作業
  ②監視サービス確認用バッチファイル作成

サービス名確認作業

 まず、初めにサービス名の確認を行います。
 Windowsのサービスより、対象のサービス一覧を確認して下さい。※2
 対象のサービスをダブルクリックし、プロパティ情報を表示してください。
 表示完了後、【サービス名】を確認してください。今回サービス名に記載されていないようを利用します。
 ※本例では、Task Schedulerのサービス確認を実施しています。
 ※2 ファイル名を指定して実行【services.msc】を起動する事により表示されます。

サービス確認用バッチファイル作成

 次にバッチファイルを作成します。
 まず、メモ帳を開き下記内容を入力してください。
 一部内容は、可変となるため入力をお願いします。

win_service.bat
@echo off

rem AWSインスタンスメタデータ取得
rem 取得後、【instanceid】に代入
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

rem サービス稼働確認(errorlevel の結果により、Processesの値を変更)
sc query 【###確認したサービス名を入力###】 | findstr STATE | findstr RUNNING >null
if %errorlevel% == 0 (
echo errorlevel=%errorlevel%
set Processes=1
) else (
echo errorlevel=%errorlevel%
set Processes=0
)
echo Processes=%Processes%

#Putコマンドを利用し、CloudWatchに送信
aws cloudwatch put-metric-data --metric-name "【###メトリクス名###】" --namespace "【###ネームスペース名###】" --region 【###リージョン名###】 --value %Processes%  --unit "Count" --dimensions "InstanceId=%incetanceid%"

★スクリプト説明
 本スクリプトは、sc queryの結果を確認し正であれば、Processes変数に1を代入
 誤であれば0を代入します。その後、CloudWatchにProcessesの値が送信されます。
 ※稼働しているサービスのみ表示されるので、STOP等の場合は表示されない。すなわち誤となります。

後は、タスクスケジューラで繰り返しスクリプトを起動させれば完了です。

結果

今回は、例として下記設定で実施しました。
★本例での設定

設定内容
 監視サービス名 "schedule"
 metric-name "schedule"
 namespace "Windows"

★出力結果(CloudWatch内の出力結果です。)

CloudWatch 内にカスタムメトリクスが作成されています。
後は、本スクリプトを定期間隔で実行すれば完了となります。
※タスクスケジューラによる定期間隔設定方法については、batファイル定期実行方法についてに記載しています。

以上が、今回の内容となります。

参考URL

 下記内容を参考にし本スクリプトを作成しております。

 ・CloudWatch メトリクス 出力用IAMユーザ作成方法
  (https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/create-iam-roles-for-cloudwatch-agent.html)

 ・Windows AWS CLIインストール
  https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/install-windows.html

 ・sc queryコマンド説明資料
  https://win.just4fun.biz/?%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%97%E3%83%AD%E3%83%B3%E3%83%97%E3%83%88/%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E4%B8%80%E8%A6%A7%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B%E3%83%BBsc%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89