サイトアイコン 協栄情報ブログ

CloudWatchでWindowsサーバのポートを監視する


この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。

概要

CloudWatchは様々なメトリクスを監視することができますが、サーバのポート状態を直接監視することはできなさそうです。今回はスクリプトよりポート状態を取得して、CloudWatchへ送信します。

前提

●CLIはインストール済み
●IAM権限:cloudwatch:PutMetricData

作業ステップ

ポート監視用スクリプト作成

下記のようにWindowsバッチファイルを作成します。

@echo off

set PORT_COUNT_ESTABLISHED=0
set PORT_COUNT_LISTENING=0
set PORT_COUNT=0

rem get 3389 port in ESTABLISHED
netstat -an | find "3389" | find "ESTABLISHED" /c>%CD%\temp.txt
set /p PORT_COUNT_ESTABLISHED=<%CD%\temp.txt

rem get 3389 port in LISTENING
netstat -an | find "3389" | find "LISTENING" /c>%CD%\temp.txt
set /p PORT_COUNT_LISTENING=<%CD%\temp.txt

rem get 3389 port at work
set /a PORT_COUNT=%PORT_COUNT_ESTABLISHED%+%PORT_COUNT_LISTENING%

rem send metrics to cloudwatch
aws cloudwatch put-metric-data ^
    --metric-name "PortCount" ^
    --namespace "port_monitor" ^
    --dimensions "InstanceId=i-xxxxxxxxxxx, Hostname=cpi-host01" ^
    --value %PORT_COUNT% ^
    --unit "Count" ^
    --region ap-northeast-1

exit

タスクスケジューラ設定

Windowsサーバにログインして、タスクスケジューラを起動します。
※起動方法:Run "taskschd.msc"

右側の「Create Task」を選択して、タスクを作成します。
"Run whether user is logged on or not"をチェックしたら、バッチがバックグラウンド処理になります。

トリガーを新規します。
こちらの設定は1分毎にバッチを実行する、停止するまでは30分と設定します。

バッチ実行のみの操作を新規します。

他の設定はデフォルトのままで、タスクを作成します。
"Run whether user is logged on or not"を選択する場合、管理員のパスワードが必要です。

監視結果確認

AWSマネジメントコンソールから、CloudWatchサービスのメトリクスを確認します。

メトリクスを利用して、アラームなとの作成は省略します。

最後に

Linuxはcrontab + bashの組み合わせてポート監視が可能です。次回はLinuxサーバの監視方法を検証しましょう。

モバイルバージョンを終了