この記事は公開されてから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サーバの監視方法を検証しましょう。