Tomcat on ElasticBeanstalkへCloudWatchカスタムメトリクスを簡単に追加する

今までEC2でゴリゴリ作っていたのですが最近ElasticBeanstalkの便利さに気付き始めました。
初期の頃に少しだけ触って初心者向けの機能だと今まで侮っていたのですがEclipseプラグインも発達してサクサク開発できるので楽しいです。

ElasticBeanstalkでJava Webアプリケーションを構築する場合はTomcatを使用する事になりますが、デフォルトではCloudWatchに正常/異常のチェックしかできません。 EC2のメトリクスではメモリ使用量が見れないしカスタムメトリクスって面倒くさいという方に以下の設定がオススメです。

ManagementConsoleからアプリケーションの設定で"JVM command line options"が設定できるので以下の文字列を設定します。

-Dcom.amazonaws.sdk.enableDefaultMetrics
 =metricNameSpace=MyBeanstalkApp,
  includePerHostMetrics,
  cloudwatchRegion=ap-northeast-1

metricNameSpacecloudwatchRegionは必要に応じて変更してください。
しばらく待つとCloudWatchの"Custom Metrics"にデータが収集されファイルディスクリプタ/メモリ使用量/スレッド数などが観測できるようになります。

細かい設定などは以下の記事などを参考にしてください。
Metric Configuration in AWS SDK for Java - AWS Developer Blog - Java