- 前回 -
- 今回 -
前回までにJolokiaの起動まで確認ができているので、性能情報の取得を試みる。
まずはTomcatの起動状況を確認する。
[root@tfapk001 ~]# ps -ef | grep tomcat
tomcat 946 1 3 19:55 ? 00:00:12 /usr/lib/jvm/java-21-openjdk-21.0.8.0.9-1.el9.x86_64/bin/java -Djava.util.logging.config.file=/opt/apache-tomcat-11.0.13/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED --enable-native-access=ALL-UNNAMED -javaagent:/opt/jolokia/jolokia-agent-jvm-2.4.0-javaagent.jar=port=8778,host=127.0.0.1 -classpath /opt/apache-tomcat-11.0.13/bin/bootstrap.jar:/opt/apache-tomcat-11.0.13/bin/tomcat-juli.jar -Dcatalina.base=/opt/apache-tomcat-11.0.13 -Dcatalina.home=/opt/apache-tomcat-11.0.13 -Djava.io.tmpdir=/opt/apache-tomcat-11.0.13/temp org.apache.catalina.startup.Bootstrap start
root 2048 1982 0 20:00 pts/0 00:00:00 grep --color=auto tomcat
プロセスID 946 でTomcatが起動していることが分かる。
また ”-javaagent:/opt/jolokia/jolokia-agent-jvm-2.4.0-javaagent.jar=port=8778,host=127.0.0.1” であることから、Jolokiaにアクセスするためには、ポート番号は8778となる。
[root@tfapk001 ~]# curl -s http://localhost:8778/jolokia/read/java.lang:type=Runtime/Name | jq
{
"request": {
"mbean": "java.lang:type=Runtime",
"attribute": "Name",
"type": "read"
},
"value": "946@tfapk001",
"status": 200,
"timestamp": 1761651508
}
Jolokiaへアクセス確認を行うと、プロセスIDとホスト名が返ってくる。
Jolokiaでは、JSON形式でレスポンスが返却される。
ただし、下記のように人間には読みづらい形で返ってくる。
[root@tfapk001 ~]# curl -s http://localhost:8778/jolokia/read/java.lang:type=Runtime/Name
{"request":{"mbean":"java.lang:type=Runtime","attribute":"Name","type":"read"},"value":"946@tfapk001","status":200,"timestamp":1761651653}
そこで人間でも読みやすい形にするために、パイプでつないで jq コマンドで整形する。
次にバージョンの確認を行う。
[root@tfapk001 ~]# curl -s http://localhost:8778/jolokia/version | jq
{
"request": {
"type": "version"
},
"value": {
"agent": "2.4.0",
"protocol": "8.1",
"decorators": {},
"details": {
"agent_version": "2.4.0",
"agent_id": "22927a81-jvm",
"secured": false,
"url": "http://127.0.0.1:8778/jolokia"
},
"id": "22927a81-jvm",
"config": {
"maxDepth": "15",
"discoveryEnabled": "false",
"maxCollectionSize": "0",
"agentId": "22927a81-jvm",
"debug": "false",
"dateFormat": "yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSSXXX",
"historyMaxEntries": "10",
"agentContext": "/jolokia",
"maxObjects": "0",
"debugMaxEntries": "100"
},
"info": {
"proxy": {},
"jmx": {}
}
},
"status": 200,
"timestamp": 1761651477
}
バージョンも返ってきた。
あとは、取得したい情報に合わせてコマンドを実行するだけとなる。
[root@tfapk001 ~]# curl -s http://localhost:8778/jolokia/read/java.lang:type=Memory/HeapMemoryUsage | jq
{
"request": {
"mbean": "java.lang:type=Memory",
"attribute": "HeapMemoryUsage",
"type": "read"
},
"value": {
"init": 60817408,
"committed": 75497472,
"max": 958398464,
"used": 22156096
},
"status": 200,
"timestamp": 1761653434
}
なお、JolokiaへのリクエストはGETとPOSTがあり、詳細は以下のマニュアルから確認すると良い。
こうして取得した情報は、jqコマンドを駆使して整形し、必要に応じてCSV等へ変換することになる。
参考

