Supported telemetry types
The Tomcat integration supports these telemetry types:Prerequisites
The Tomcat integration has the following prerequisites:- Enable remote Java Management Extensions (JMX) monitoring over Remote Method
Invocation (RMI). Configure fixed RMI registry and server ports. For label-based
discovery, expose the registry on port
9012. For more information, see Monitoring and Managing Tomcat. - Make the RMI registry and the RMI server address advertised in returned stubs
reachable from the Collector. Set
java.rmi.server.hostnameon the Tomcat server, or configure the integration’s advertised host and port overrides when the advertised address isn’t reachable. - Restrict JMX access to trusted clients and configure authentication and Transport Layer Security (TLS) settings in the integration to match the Tomcat server. For more information, see Tomcat security considerations.
Configure
The Tomcat integration is enabled by default. To configure the Tomcat integration, follow these steps:-
Choose how the Collector finds your Tomcat servers:
-
For Tomcat pods with an RMI registry on port
9012, add theapp.kubernetes.io/name: tomcatlabel to the pod template.
- For Tomcat pods or Services that use another endpoint or require per-target credentials, add autodiscovery annotations for Tomcat. For more information, see autodiscovery.
-
For Tomcat pods with an RMI registry on port
-
Optional: Configure static targets instead of discovered targets, such as Tomcat
servers outside your Kubernetes cluster. For example, add the following to the
values.yamlfor your Helm chart:When you configure static targets, this integration instance collects from exactly those targets instead of discovered targets. -
Optional: Configure a second integration instance to collect from both discovered
pods and static targets. For example, add the following to the
values.yamlfor your Helm chart:Thetomcat/edgekey defines a named instance for the static targets. The baretomcatkey continues to discover targets. -
Optional: Disable the integration. For example, add the following to the
values.yamlfor your Helm chart:
Validate
To validate the Tomcat integration, follow these steps:-
In the Live Telemetry Analyzer, filter for
__name__=cxdot.integration.target.healthandcxdot.integration.name=tomcat. Thecxdot.integration.target,server.address, andserver.portattributes identify the target. -
In Metrics Explorer, run the following query while the Tomcat servers process
requests:
Confirm that the query returns the expected time series for each target.
Configuration reference
Configure one Apache Tomcat integration instance with the following settings. In Helm values, place these settings underconfig.integrations.tomcat. In a Collector configuration file,
place them under cxdot.integrations.tomcat.
Optional settings
-
enabledType:boolean. Optional. Default:true. Whether to enable this Tomcat integration instance. If true, the Collector runs the instance. If false, the Collector doesn’t run it. -
endpointsType:array of object. Optional. Static Tomcat JMX targets. When this list is empty or omitted, the integration uses automatic target discovery. When the list contains targets, this integration instance collects from exactly those targets and doesn’t automatically discover targets. Configure a second named instance to use both methods. Each endpoint can be ahost:portRMI registry address or aservice:jmx:rmiURL. -
endpoints[].endpointType:string. Required. Tomcat JMX endpoint as either ahost:portRMI registry address or aservice:jmx:rmiURL. -
registry_tlsType:boolean. Optional. Default:false. Whether to use TLS for the RMI registry connection. If true, the Collector uses TLS. If false, the Collector uses an unencrypted registry connection. -
advertised_host_overrideType:string. Optional. Default: “. Host the Collector uses for Remote Method Invocation (RMI) server connections instead of the host advertised by returned RMI stubs. When empty, the Collector uses the registry endpoint host. -
advertised_port_overrideType:integer. Optional. Default:0. Minimum:0. Maximum:65535. Port the Collector uses for RMI server connections instead of the port advertised by returned RMI stubs. When set to0, the Collector uses the advertised port. -
usernameType:string. Optional. Username for JMX authentication. Configureusernameandpasswordtogether. -
passwordType:string. Optional. Password for JMX authentication. Configureusernameandpasswordtogether. -
collection_intervalType:duration. Optional. Default:15s. How often the Collector collects metrics from each Tomcat JMX endpoint. -
bean_detection_intervalType:duration. Optional. Default:10m. How often the Collector refreshes the set of available JMX beans. -
target_systemType:string. Optional. Default:tomcat. Comma-delimited attribute mapping names to apply. The Tomcat mapping is enabled by default, and the JVM mapping is included automatically. Add-jvmto disable JVM metrics when at least one other mapping is configured. -
attribute_mapping_pathsType:array of string. Optional. Default:[]. Directories and files containing custom Java Management Extensions (JMX) attribute mappings. The Collector searches these paths before the embedded Tomcat and Java Virtual Machine (JVM) mappings. -
tlsType:object. Optional. TLS certificate and client authentication settings for RMI registry and server connections. -
tls.ca_fileType:string. Optional. Path to a PEM-encoded certificate authority (CA) certificate file used to verify the JMX server certificate. If omitted, the Collector uses the system certificate authority pool. -
tls.ca_pemType:string. Optional. PEM-encoded certificate authority certificate content used to verify the JMX server certificate. -
tls.cert_fileType:string. Optional. Path to the PEM-encoded client certificate file to present when the JMX server requires mutual TLS authentication. -
tls.cert_pemType:string. Optional. PEM-encoded client certificate content to present when the JMX server requires mutual TLS authentication. -
tls.cipher_suitesType:array of string. Optional. TLS cipher suites that the Collector can use, in preference order. If omitted, the Collector uses the secure defaults from the Go TLS library. For supported names, see https://go.dev/src/crypto/tls/cipher_suites.go. -
tls.curve_preferencesType:array of string. Optional. Elliptic curves that the Collector can use for an elliptic curve Diffie-Hellman ephemeral handshake, in preference order. If omitted, the Collector uses the Go TLS library defaults. -
tls.include_system_ca_certs_poolType:boolean. Optional. Whether to add certificates from the system certificate authority pool to the configured certificate authorities. If true, the Collector trusts both sources. If false, the Collector trusts only the configured certificate authorities. -
tls.insecureType:boolean. Optional. Whether to disable transport security. This setting must be false. Useregistry_tlsto control transport security for the RMI registry. -
tls.insecure_skip_verifyType:boolean. Optional. Whether to skip verification of the JMX server certificate. If true, the connection is encrypted but isn’t authenticated and is vulnerable to man-in-the-middle attacks. If false, the Collector verifies the certificate. -
tls.key_fileType:string. Optional. Path to the PEM-encoded client private key file used withcert_filefor mutual TLS authentication. -
tls.key_pemType:string. Optional. PEM-encoded client private key content used withcert_pemfor mutual TLS authentication. -
tls.max_versionType:string. Optional. Maximum TLS protocol version the Collector can use. If omitted, the Collector uses the maximum version supported by the Go TLS library. -
tls.min_versionType:string. Optional. Minimum TLS protocol version the Collector can use. If omitted, the minimum version is TLS 1.2. -
tls.reload_intervalType:duration. Optional. How often the Collector reloads certificate and key files. If omitted, the Collector doesn’t reload the files. -
tls.server_name_overrideType:string. Optional. Server name to verify in the JMX certificate instead of the endpoint hostname. Use this setting when the certificate name differs from the endpoint hostname. -
tls.tpmType:object. Optional. Trusted platform module settings for the TLS private key. -
tls.tpm.authType:string. Optional. Authorization value for the trusted platform module key. -
tls.tpm.enabledType:boolean. Optional. Whether to use a trusted platform module for the TLS private key. If true, the Collector loads the key from the configured device or socket. If false, the Collector uses the configured key file or in-memory key. -
tls.tpm.owner_authType:string. Optional. Owner authorization value for the trusted platform module. -
tls.tpm.pathType:string. Optional. Path to the trusted platform module device or Unix domain socket, such as/dev/tpm0or/dev/tpmrm0.

