[Windows]EC2Configから送信できるCloudWatchカスタムメトリクスの種類について
望月です。
数カ月前にEC2Configからパフォーマンスに関する指標をAWS CloudWatchにカスタムメトリクスとして登録するための機能追加がありました。その解説は弊社メンバーのブログを参照下さい。
- パフォーマンスカウンタのデータをCloudWatchカスタムメトリクスにする | Developers.IO
- AWS CodeDeployでWindowsのCloudWatchカスタムメトリクス設定を自動化する | Developers.IO
さて、上のブログではディスク使用率やメモリ使用率などを取得していましたが、これ以外にどのような値が取れるのでしょうか。そしてそれを取得するにはどのように記述すれば良いのでしょうか。調べてみました。
なお、動作確認はWindows Server 2008 R2で実施していますが、Windows Server 2012系でも変わらないと思います。
困ったらドキュメント
困ったらとにかくAWSのドキュメントをあさりましょう。というわけでEC2Config CloudWatch Integrationに関するドキュメントを探しました。以下のページです。
このページの中ほどに取得できる値の確認方法が記載されていました。以下のとおりに実行してみましょう。
まず、コマンドプロンプトでperfmon.exeを実行します。
パフォーマンスモニタが開きました。その後、画面左側のペインの「モニターツール」-> 「パフォーマンスモニター」の順で選択します。 その後、画面右側の「+」ボタンを押します。するとパフォーマンスモニタから確認できる値の一覧がダイアログで表示されます。 このダイアログに表示されている値全てが、EC2Configからカスタムメトリクスとして送信可能なようです。
EC2Configの設定ファイルであるAWS.EC2.Windows.CloudWatch.jsonには、「CategoryName」、「CounterName」、「InstanceName」の3つの値をパラメータとして入力します *1。それぞれ何を入力すればよいかは、下の画像を参考にして下さい。下の画像はディスクの空き容量を取得するための情報です。
試しにパフォーマンスモニタの画面から何かメトリクスを見つけて、取得してみましょう。
眺めていたところ「LogicalDisk」というCategoryに「Disk Read Bytes/sec」というカウンタを発見しました。これを取得してみます。そのための設定をAWS.EC2.Windows.CloudWatch.jsonに追記します
<前略...> { "Id": "DiskReadsPerSec", "FullName": "AWS.EC2.Windows.CloudWatch.PerformanceCounterComponent.PerformanceCounterInputComponent,AWS.EC2.Windows.CloudWatch", "Parameters": { "CategoryName": "LogicalDisk", "CounterName": "Disk Read Bytes/sec", "InstanceName": "C:", "MetricName": "DiskReads", "Unit": "Bytes", "DimensionName": "InstanceId", "DimensionValue": "{instance_id}" } }, <中略...> "Flows": { "Flows": [ "DiskReadsPerSec,CloudWatch" ] } } }
ところどころ飛び飛びで分かりづらいですが、ポイントは2つです。まず、取得するパフォーマンスの情報を"Components"要素の中に追加します。そして、それをCloudWatchに出力するための設定が"Flows"に入ることになります。
ファイルの変更後、EC2Configサービスを再起動します。
C:\Users\Administrator>net stop ec2config Ec2Config サービスを停止中です.. Ec2Config サービスは正常に停止されました。 C:\Users\Administrator>net start ec2config Ec2Config サービスを開始します. Ec2Config サービスは正常に開始されました。
上手く働いていれば、メトリクスがDiscReadsというメトリクス名で取得できているはずです。
その後しばらく待ち、CloudWatchのコンソール画面を確認してみましょう。
正常に値が追加できることが確認できました!
まとめ
本当は監視できる値を全て列挙したい、という勢いで調べ始めたのですが想像以上に量が多かったので頓挫しました。この機能は特にプログラムを自分で書くことなくCloudWatchにパフォーマンス監視のメトリクスを追加できるので、非常にお手軽、かつ有用だと思います。お試し下さい!
脚注
- それ以外にも入力する値はありますが、それはCloudWatchのディメンジョン名やメトリクス名のため割愛します ↩