#概要
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】を起動する事により表示されます。
##サービス確認用バッチファイル作成
次にバッチファイルを作成します。
まず、メモ帳を開き下記内容を入力してください。
一部内容は、可変となるため入力をお願いします。
@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 内にカスタムメトリクスが作成されています。
後は、本スクリプトを定期間隔で実行すれば完了となります。
※タスクスケジューラによる定期間隔設定方法については、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