
EC2インスタンスのTomcatプロセスを監視する方法
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
困っていた内容
CloudWatchからtomcatプロセスを監視したいのですが、どうすればよいでしょうか?
CloudWatch Agentの設定ファイルにおいて、httpdの様にexeでtomcatと指定しても、正しく監視できていません。
どう対応すればいいの?
procstatプラグインの「pattern」を使用することで監視が可能です。
本記事では、実際の設定方法について解説します。
やってみた
前提
- CloudWatch Agentをセットアップが完了していること (SSMのParameter storeに設定を保存していること)
- tomcatがインストールされていること
手順
ドキュメントでは、以下の様に記載されています。
procstat プラグインでプロセスメトリクスを収集する - Amazon CloudWatch
・pattern: プロセスの起動に使用するコマンドラインでプロセスを選択します。
翻訳が微妙ではありますが、psコマンドないしsystemctlコマンドのstauts (-l)オプションを使用して、tomcatプロセスの起動指定を確認してみます。 以下の実行結果より「org.apache.catalina.startup.Bootstrap start」が使用されていることが確認できました。
[ec2-user@ip-172-31-44-146 ~]$ ps aux | grep tomcat
tomcat 3520 8.6 7.6 2322052 77528 ? Ssl 09:16 0:02 /usr/lib/jvm/jre/bin/java -classpath /usr/share/tomcat/bin/bootstrap.jar:/usr/share/tomcat/bin/tomcat-juli.jar:/usr/share/java/commons-daemon.jar ★実際には以下内容が1行で表示されます
-Dcatalina.base=/usr/share/tomcat
-Dcatalina.home=/usr/share/tomcat
-Djava.endorsed.dirs=
-Djava.io.tmpdir=/var/cache/tomcat/temp
-Djava.util.logging.config.file=/usr/share/tomcat/conf/logging.properties
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
org.apache.catalina.startup.Bootstrap start ★tomcatプロセスの起動指定
ec2-user 3574 0.0 0.0 119436 864 pts/0 S+ 09:17 0:00 grep --color=auto tomcat
[ec2-user@ip-172-31-44-146 ~]$ systemctl status tomcat -l
● tomcat.service - Apache Tomcat Web Application Container
Loaded: loaded (/usr/lib/systemd/system/tomcat.service; disabled; vendor preset: disabled)
Active: active (running) since 土 2021-07-31 09:16:56 UTC; 3min 57s ago
Main PID: 3520 (java)
CGroup: /system.slice/tomcat.service
└─3520 /usr/lib/jvm/jre/bin/java -classpath /usr/share/tomcat/bin/bootstrap.jar:/usr/share/tomcat/bin/tomcat-juli.jar:/usr/share/java/commons-daemon.jar ★実際には以下内容が1行で表示されます
-Dcatalina.base=/usr/share/tomcat
-Dcatalina.home=/usr/share/tomcat
-Djava.endorsed.dirs=
-Djava.io.tmpdir=/var/cache/tomcat/temp
-Djava.util.logging.config.file=/usr/share/tomcat/conf/logging.properties
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
org.apache.catalina.startup.Bootstrap start ★tomcatプロセスの起動指定

{
"metrics": {
"metrics_collected": {
"procstat": [
{
"pattern": "org.apache.catalina.startup.Bootstrap start",
"measurement": [
"pid_count"
],
"metrics_collection_interval": 10
}
]
}
}
}

- マネジメントコンソールのSystems Manager
- サイドバーの「Run Command」をクリック
- 黄色いボタンの「Run Command」をクリック
- 検索ボックスより「AmazonCloudWatch-ManageAgent」を確認、ラジオボタンにチェック
- コマンドのパラメータを右記の様に修正「Action: configure(append)」「Optional Configuration Location: AmazonCloudWatch-linux」
- ターゲットより、tomcatが稼働しているインスタンスを指定
- 全て指定ができたら「実行」
動作確認

[ec2-user@ip-172-31-44-146 ~]$ date; sudo systemctl stop tomcat
2021年 7月 31日 土曜日 19:23:39 JST
[ec2-user@ip-172-31-44-146 ~]$ sudo systemctl status tomcat
● tomcat.service - Apache Tomcat Web Application Container
Loaded: loaded (/usr/lib/systemd/system/tomcat.service; disabled; vendor preset: disabled)
Active: inactive (dead)
:

[ec2-user@ip-172-31-44-146 ~]$ date; sudo systemctl start tomcat
2021年 7月 31日 土曜日 19:33:08 JST
[ec2-user@ip-172-31-44-146 ~]$ sudo systemctl status tomcat
● tomcat.service - Apache Tomcat Web Application Container
Loaded: loaded (/usr/lib/systemd/system/tomcat.service; disabled; vendor preset: disabled)
Active: active (running) since 土 2021-07-31 19:33:08 JST; 8s ago
:
