Fortinet black logo

User Guide

Tomcat (JMX)

24.2.0
Copy Link
Copy Doc ID af1daa65-c273-11ec-9fd1-fa163e15d75b:937719
Download PDF

Tomcat (JMX)

The Tomcat plugin lets you monitor a number of metrics on your web server. If you cannot find this plugin in the /usr/lib/panopta-agent/plugins folder, update your Agent.

Enable JMX on Tomcat

Before configuring the Agent, make sure that JMX is enabled on the host where your Tomcat web server is deployed.

1. Create setenv.sh file in the Tomcat bin directory. For example, if your bin directory is /opt/tomcat/apache-tomcat-9.0.37/bin/, run the following command:
export CATALINA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8008 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.access.file=/opt/tomcat/apache-tomcat-9.0.37/conf/jmxremote.access -Dcom.sun.management.jmxremote.password.file=/opt/tomcat/apache-tomcat-9.0.37/conf/jmxremote.password"

The command also allows you to set the port that you want to use for JMX and the path where the jmx.access and jmx.password files must be created.

Be sure that the Tomcat user owns the new setenv.sh file.

2. Create the jmx.access and jmx.password files.
jmx.access
<USERNAME> readonly

jmx.password
<USERNAME> <PASSWORD>

You can set the username and password as desired. These will be set in the FortiMonitor configuration file in the following section.

Also, make sure that the tomcat user owns these files and that the password file has permission 600.

-rw-r--r--. 1 tomcat tomcat 18 Jul 31 12:52 jmxremote.access
-rw-------. 1 tomcat tomcat 16 Jul 31 12:52 jmxremote.password

3. Restart the Tomcat service.

a. Navigate to tomcat_home/bin.

b. Run the following command to stop Apache Tomcat:

./shutdown.sh

c. Run the following command to restart Apache Tomcat:

./startup.sh

Agent configuration

Once the agent is installed, you will need to edit the Agent config file (/etc/fm-agent/fm_agent.cfg) and set the following parameters:

  • username and password – The username and password that you used in the jmx.password file.

  • port – The port where Tomcat is listening to. You can enter any number of ports in the port parameter for each Tomcat instance that you have installed in the server. Each port entered should be separated by a comma.

  • host – The host where your Tomcat instances are deployed. If you have multiple Tomcat instances, make sure that you enter the hostname, separated by a comma, for each Tomcat instance you want to monitor. See the following example for more details.

  • jvm_path – The path to your Java installation. Run locate libjvm.so to determine your JVM path.

The following Agent configuration file shows the configuration for multiple Tomcats running on a single server.

Control Panel configuration

If you have not already, read the Add FortiMonitor Agent checks article to learn how to set up monitoring for any agent plugin. To use the Tomcat plugin, first select Tomcat (JMX) from the monitoring catalog.

There are a number of metrics available to monitor.

Metric

Unit

Action/Classloadingtime

Action/Errorcount

Action/Loadtime

Action/Maxtime

Action/Processingtime

Action/Requestcount

Average total memory

seconds

Count of errors

errors

Count of expired sessions

sessions

Count of requests

requests

Current count of busy threads

threads

Current count of threads

threads

Default/Classloadingtime

Default/Errorcount

Default/Loadtime

Default/Maxtime

Default/Processingtime

Default/Requestcount

DynamicJAXWSServlet/Classloadingtime

DynamicJAXWSServlet/Errorcount

DynamicJAXWSServlet/Loadtime

DynamicJAXWSServlet/Maxtime

DynamicJAXWSServlet/Processingtime

DynamicJAXWSServlet/Requestcount

GC/Classloadingtime

GC/Errorcount

GC/Loadtime

GC/Maxtime

GC/Processingtime

GC/Requestcount

HTMLManager/Classloadingtime

HTMLManager/Errorcount

HTMLManager/Loadtime

HTMLManager/Maxtime

HTMLManager/Processingtime

HTMLManager/Requestcount

J4p-agent/Classloadingtime

J4p-agent/Errorcount

J4p-agent/Loadtime

J4p-agent/Maxtime

J4p-agent/Processingtime

J4p-agent/Requestcount

JMXProxy/Classloadingtime

JMXProxy/Errorcount

JMXProxy/Loadtime

MXProxy/Maxtime

JMXProxy/Processingtime

JMXProxy/Requestcount

Jsp/Classloadingtime

Jsp/Errorcount

Jsp/Loadtime

Jsp/Maxtime

Jsp/Processingtime

Jsp/Requestcount

JVM maximum memory

megabytes

JVM total memory

megabytes

Longest sessions alive time

seconds

Manager/Classloadingtime

Manager/Errorcount

Manager/Loadtime

Manager/Maxtime

Manager/Processingtime

Manager/Requestcount

Maximum number of active sessions

sessions

Maximum number of threads

threads

Maximum processing time

milliseconds

Mem/Classloadingtime

Mem/Errorcount

Mem/Loadtime

Mem/Maxtime

Mem/Processingtime

Mem/Requestcount

Memory used

MB

Number of loaded JSPs

JSPs

Number of reloaded JSPs

JSPs

Params/Classloadingtime

Params/Errorcount

Params/Loadtime

Params/Maxtime

Params/Processingtime

Params/Requestcount

Rejected sessions creations

sessions

RSDispatcher/Classloadingtime

RSDispatcher/Errorcount

RSDispatcher/Loadtime

RSDispatcher/Maxtime

RSDispatcher/Processingtime

RSDispatcher/Requestcount

ShutdownRestart/Classloadingtime

ShutdownRestart/Errorcount

ShutdownRestart/Loadtime

ShutdownRestart/Maxtime

ShutdownRestart/Processingtime

ShutdownRestart/Requestcount

Status/Classloadingtime

Status/Errorcount

Status/Loadtime

Status/Maxtime

Status/Processingtime

Status/Requestcount

Time to start up

milliseconds

Total active sessions

sessions

Total bytes received

bytes

Total bytes sent

bytes

Total number of active sessions since startup

Total number of rejected sessions since startup

Total number of requests served since startup

Total processing time

seconds

Total processing time (in milliseconds) since startup

Total sessions count

sessions

Total/Averagesessionalivetime

Total/Bytesreceived

Total/Bytessent

Total/Currentthreadbusy

Total/Currentthreadcount

Total/Errorcount

Total/Expiredsessions

Total/Freememory

Total/JSPsloaded

Total/JSPsreloaded

Total/Longestsessionalivetime

Total/Maxactivesessions

Total/Maxmemory

Total/Maxprocessingtime

Total/Maxthreads

Total/Requestcount

Total/Totalmemory

WSServlet/Classloadingtime

WSServlet/Errorcount

WSServlet/Loadtime

WSServlet/Maxtime

WSServlet/Processingtime

WSServlet/Requestcount

If you would like to inspect the Tomcat plugin in more detail you can find the python script for it in the /usr/lib/fm-agent/plugins folder.

Tomcat (JMX)

The Tomcat plugin lets you monitor a number of metrics on your web server. If you cannot find this plugin in the /usr/lib/panopta-agent/plugins folder, update your Agent.

Enable JMX on Tomcat

Before configuring the Agent, make sure that JMX is enabled on the host where your Tomcat web server is deployed.

1. Create setenv.sh file in the Tomcat bin directory. For example, if your bin directory is /opt/tomcat/apache-tomcat-9.0.37/bin/, run the following command:
export CATALINA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8008 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.access.file=/opt/tomcat/apache-tomcat-9.0.37/conf/jmxremote.access -Dcom.sun.management.jmxremote.password.file=/opt/tomcat/apache-tomcat-9.0.37/conf/jmxremote.password"

The command also allows you to set the port that you want to use for JMX and the path where the jmx.access and jmx.password files must be created.

Be sure that the Tomcat user owns the new setenv.sh file.

2. Create the jmx.access and jmx.password files.
jmx.access
<USERNAME> readonly

jmx.password
<USERNAME> <PASSWORD>

You can set the username and password as desired. These will be set in the FortiMonitor configuration file in the following section.

Also, make sure that the tomcat user owns these files and that the password file has permission 600.

-rw-r--r--. 1 tomcat tomcat 18 Jul 31 12:52 jmxremote.access
-rw-------. 1 tomcat tomcat 16 Jul 31 12:52 jmxremote.password

3. Restart the Tomcat service.

a. Navigate to tomcat_home/bin.

b. Run the following command to stop Apache Tomcat:

./shutdown.sh

c. Run the following command to restart Apache Tomcat:

./startup.sh

Agent configuration

Once the agent is installed, you will need to edit the Agent config file (/etc/fm-agent/fm_agent.cfg) and set the following parameters:

  • username and password – The username and password that you used in the jmx.password file.

  • port – The port where Tomcat is listening to. You can enter any number of ports in the port parameter for each Tomcat instance that you have installed in the server. Each port entered should be separated by a comma.

  • host – The host where your Tomcat instances are deployed. If you have multiple Tomcat instances, make sure that you enter the hostname, separated by a comma, for each Tomcat instance you want to monitor. See the following example for more details.

  • jvm_path – The path to your Java installation. Run locate libjvm.so to determine your JVM path.

The following Agent configuration file shows the configuration for multiple Tomcats running on a single server.

Control Panel configuration

If you have not already, read the Add FortiMonitor Agent checks article to learn how to set up monitoring for any agent plugin. To use the Tomcat plugin, first select Tomcat (JMX) from the monitoring catalog.

There are a number of metrics available to monitor.

Metric

Unit

Action/Classloadingtime

Action/Errorcount

Action/Loadtime

Action/Maxtime

Action/Processingtime

Action/Requestcount

Average total memory

seconds

Count of errors

errors

Count of expired sessions

sessions

Count of requests

requests

Current count of busy threads

threads

Current count of threads

threads

Default/Classloadingtime

Default/Errorcount

Default/Loadtime

Default/Maxtime

Default/Processingtime

Default/Requestcount

DynamicJAXWSServlet/Classloadingtime

DynamicJAXWSServlet/Errorcount

DynamicJAXWSServlet/Loadtime

DynamicJAXWSServlet/Maxtime

DynamicJAXWSServlet/Processingtime

DynamicJAXWSServlet/Requestcount

GC/Classloadingtime

GC/Errorcount

GC/Loadtime

GC/Maxtime

GC/Processingtime

GC/Requestcount

HTMLManager/Classloadingtime

HTMLManager/Errorcount

HTMLManager/Loadtime

HTMLManager/Maxtime

HTMLManager/Processingtime

HTMLManager/Requestcount

J4p-agent/Classloadingtime

J4p-agent/Errorcount

J4p-agent/Loadtime

J4p-agent/Maxtime

J4p-agent/Processingtime

J4p-agent/Requestcount

JMXProxy/Classloadingtime

JMXProxy/Errorcount

JMXProxy/Loadtime

MXProxy/Maxtime

JMXProxy/Processingtime

JMXProxy/Requestcount

Jsp/Classloadingtime

Jsp/Errorcount

Jsp/Loadtime

Jsp/Maxtime

Jsp/Processingtime

Jsp/Requestcount

JVM maximum memory

megabytes

JVM total memory

megabytes

Longest sessions alive time

seconds

Manager/Classloadingtime

Manager/Errorcount

Manager/Loadtime

Manager/Maxtime

Manager/Processingtime

Manager/Requestcount

Maximum number of active sessions

sessions

Maximum number of threads

threads

Maximum processing time

milliseconds

Mem/Classloadingtime

Mem/Errorcount

Mem/Loadtime

Mem/Maxtime

Mem/Processingtime

Mem/Requestcount

Memory used

MB

Number of loaded JSPs

JSPs

Number of reloaded JSPs

JSPs

Params/Classloadingtime

Params/Errorcount

Params/Loadtime

Params/Maxtime

Params/Processingtime

Params/Requestcount

Rejected sessions creations

sessions

RSDispatcher/Classloadingtime

RSDispatcher/Errorcount

RSDispatcher/Loadtime

RSDispatcher/Maxtime

RSDispatcher/Processingtime

RSDispatcher/Requestcount

ShutdownRestart/Classloadingtime

ShutdownRestart/Errorcount

ShutdownRestart/Loadtime

ShutdownRestart/Maxtime

ShutdownRestart/Processingtime

ShutdownRestart/Requestcount

Status/Classloadingtime

Status/Errorcount

Status/Loadtime

Status/Maxtime

Status/Processingtime

Status/Requestcount

Time to start up

milliseconds

Total active sessions

sessions

Total bytes received

bytes

Total bytes sent

bytes

Total number of active sessions since startup

Total number of rejected sessions since startup

Total number of requests served since startup

Total processing time

seconds

Total processing time (in milliseconds) since startup

Total sessions count

sessions

Total/Averagesessionalivetime

Total/Bytesreceived

Total/Bytessent

Total/Currentthreadbusy

Total/Currentthreadcount

Total/Errorcount

Total/Expiredsessions

Total/Freememory

Total/JSPsloaded

Total/JSPsreloaded

Total/Longestsessionalivetime

Total/Maxactivesessions

Total/Maxmemory

Total/Maxprocessingtime

Total/Maxthreads

Total/Requestcount

Total/Totalmemory

WSServlet/Classloadingtime

WSServlet/Errorcount

WSServlet/Loadtime

WSServlet/Maxtime

WSServlet/Processingtime

WSServlet/Requestcount

If you would like to inspect the Tomcat plugin in more detail you can find the python script for it in the /usr/lib/fm-agent/plugins folder.