Install ColdFusion Performance Monitoring Toolset

Steps to install ColdFusion Performance Monitoring Toolset via installer screens and silent mode.

Note:

Before installing Performance Monitoring Toolset, ensure that you must install the package pmtagent using the ColdFusion Package Manager.

Deployment

For a detailed guide to deploying Performance Monitoring Toolset on various ColdFusion nodes, see the Deployment guide.

Windows

  1. To launch the installer, double-click ColdFusion_2021_PerformanceMonitoringToolset_WWEJ_Win64.exe. To proceed, click Next.

  2. On the License Agreement screen, click Next to proceed.

  3. Choose the component to be installed.

    If you have already configured a Datastore, you need not choose the option Datastore. In that case, specify the remote IP and port in a later screen.

  4. To install Performance Monitoring Toolset, choose a location. To proceed, click Next.

  5. The default HTTP port for Performance Monitoring Toolset is 9101. However, you can specify a different port where PMT gets configured.

    To proceed, click Next.

  6. Enter the administrator credentials. To log in to Performance Monitoring Toolset, specify a user name and a password.

  7. Configure the Datastore. If you do not have Datastore installed, you can install it with the specified host and port number.

    If you have Datastore installed, enter the remote host name and the port number and the cluster where the Datastore resides.

    To proceed, click Next.

  8. Review the pre-installation summary. To install Performance Monitoring Toolset, click Install.

    Upon successful installation, the Performance Monitoring Toolset dashboard launches in the default browser.

Linux

Before installing, make sure that:

  • The maximum count of open files must be more than 65536. Use the command, ulimit -n 65536.
  • The maximum count of maps must be more than 262144. To increase the limit, use the command, sysctl -w vm.max_map_count=262144.
  • A non-root user must exist.
  1. To launch the installer, enter the command, ./ColdFusion_2021_PerformanceMonitoringToolset_WWEJ_linux64.bin

  2. After the installation, the installer starts both Datastore and Performance Monitoring Toolset processes.

  3. To access the Datastore, navigate to URL http://<PMT-Host>:<port> after installation.

  4. You can configure init scripts by running sudo <PMTLocation>/bin/init.sh install.

Note:

For Mac OS, the steps are identical to Windows.

Install Performance Monitoring Toolset silently

Creating the properties file

The silent.properties file is an ASCII text file that defines the installation parameters. Specify the details as provided in the file. Select only the ones that apply to your installation type.

Saving the properties file

You can use a different name or save it in a different directory.

If you require more than one installer properties file, give each file a descriptive name.

Running the installer

You can run the silent installer in one of the following ways:

  • Through the command line.
  • Through a batch file or script.

The following table lists the command line options of running the installer on different operating systems.

OS

Command

UNIX

./ColdFusion_2021_PerformanceMonitoringToolset_WWEJ_Linux64.bin [-f propertiesFilePath]

Windows

ColdFusion_2021_PerformanceMonitoringToolset_WWEJ_Win64.exe [-f propertiesFilePath]. For example, if you want to install Performance Monitoring Toolset silently, run the command, ColdFusion_2021_PerformanceMonitoringToolset_WWEJ_Win64.exe -f silent.properties.

Silent installer properties

# Inform installer to start in silent mode.
INSTALLER_UI=SILENT

# INSTALL_PMT is 1 if installer has to install Performance Monitoring Toolset component. Otherwise, INSTALL_PMT is 0.
# If you install the Performance Monitoring Toolset component, it needs to connect to Datastore, which is either located in local (INSTALL_DATASTORE=1) or remote (INSTALL_DATASTORE=0).
INSTALL_PMT=1
# Set the following variables only if INSTALL_PMT=1.
# PMT_HOSTNAME must be either 127.0.0.1 or system hostname or system IP address
# Default port is 9101. Port must be free.
# Performance Monitoring Toolset service or process must be up and running to access Administrator Dashboard by URL http://PMT_HOSTNAME:PMT_PORT.
PMT_HOSTNAME=127.0.0.1
PMT_PORT=9101
# Performance Monitoring Toolset Administrator Dashboard login credentials.
USERNAME=admin
PASSWORD=Test#1234
PASSWORD_CONFIRM=Test#1234

# Set INSTALL_DATASTORE to 1 if installer has to install DataStore. Otherwise INSTALL_DATASTORE is 0.
INSTALL_DATASTORE=1
# If INSTALL_DATASTORE=1, the following two variables used for local installation. Otherwise, they are used to connect to remove the Datastore.
# 127.0.0.1 or 0.0.0.0 are not allowed as Hostname. Hostname should be either system hostname or IP address
# The default port is 9200. Port must be free.
DATASTORE_HOSTNAME=HostNameorIPAddressoftheSystem
DATASTORE_PORT=9200
DATASTORE_PORT_CLUSTER=9300

# OPTIONAL PROPERTIES

# The location to install Performance Monitoring Toolset
# Windows default location
USER_INSTALL_DIR=C:\\ColdFusion2018PerformanceMonitoringToolset
# Mac OS X default location
# USER_INSTALL_DIR=/Applications/ColdFusion2018PerformanceMonitoringToolset
# Linux or Solaris default location
# USER_INSTALL_DIR=/opt/coldfusion2018performancemonitoringtoolset

# ONLY for Linux and Solaris platforms.
# Make sure a runtime user exists in the system.
# Setting "nobody" as a default username as it is the least privileged account in Linux and Solaris platforms.
# RUNTIME_USER=nobody

Installation problems

After installing Performance Monitoring Toolset, sometimes the dashboard does not display. You'll see the following exceptions in the log.

[ERROR] 2023-12-04 17:49:03.537 io.undertow.request - UT005023: Exception handling request to /dashboard
jakarta.servlet.ServletException: org.glassfish.jersey.server.ContainerException: java.lang.NoClassDefFoundError: Could not initialize class org.xnio.conduits.Conduits
	at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:410) ~[jersey-container-servlet-core-3.0.9.jar:?]
	at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:346) ~[jersey-container-servlet-core-3.0.9.jar:?]
	at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358) ~[jersey-container-servlet-core-3.0.9.jar:?]
	at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:311) ~[jersey-container-servlet-core-3.0.9.jar:?]
	at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) ~[jersey-container-servlet-core-3.0.9.jar:?]
	at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74) ~[undertow-servlet-jakarta-2.2.20.Final.jar:2.2.20.Final]
	at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62) ~[undertow-servlet-jakarta-2.2.20.Final.jar:2.2.20.Final]
	at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68) ~[undertow-servlet-jakarta-2.2.20.Final.jar:2.2.20.Final]
	at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36) ~[undertow-servlet-jakarta-2.2.20.Final.jar:2.2.20.Final]
	at io.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68) ~[undertow-servlet-jakarta-2.2.20.Final.jar:2.2.20.Final]
	at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:117) ~[undertow-servlet-jakarta-2.2.20.Final.jar:2.2.20.Final]
	at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57) ~[undertow-servlet-jakarta-2.2.20.Final.jar:2.2.20.Final]
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) ~[undertow-core-2.2.23.Final.jar:2.2.23.Final]
	at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46) ~[undertow-core-2.2.23.Final.jar:2.2.23.Final]
	at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64) ~[undertow-servlet-jakarta-2.2.20.Final.jar:2.2.20.Final]
	at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60) ~[undertow-core-2.2.23.Final.jar:2.2.23.Final]
	at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77) ~[undertow-servlet-jakarta-2.2.20.Final.jar:2.2.20.Final]
	at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43) ~[undertow-core-2.2.23.Final.jar:2.2.23.Final]
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) ~[undertow-core-2.2.23.Final.jar:2.2.23.Final]
	at io.undertow.servlet.handlers.SendErrorPageHandler.handleRequest(SendErrorPageHandler.java:52) ~[undertow-servlet-jakarta-2.2.20.Final.jar:2.2.20.Final]
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) ~[undertow-core-2.2.23.Final.jar:2.2.23.Final]
	at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:275) ~[undertow-servlet-jakarta-2.2.20.Final.jar:2.2.20.Final]
	at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:79) ~[undertow-servlet-jakarta-2.2.20.Final.jar:2.2.20.Final]
	at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:134) ~[undertow-servlet-jakarta-2.2.20.Final.jar:2.2.20.Final]
	at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:131) ~[undertow-servlet-jakarta-2.2.20.Final.jar:2.2.20.Final]
	at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48) ~[undertow-servlet-jakarta-2.2.20.Final.jar:2.2.20.Final]
	at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43) ~[undertow-servlet-jakarta-2.2.20.Final.jar:2.2.20.Final]
	at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:255) ~[undertow-servlet-jakarta-2.2.20.Final.jar:2.2.20.Final]
	at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:79) ~[undertow-servlet-jakarta-2.2.20.Final.jar:2.2.20.Final]
	at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:100) ~[undertow-servlet-jakarta-2.2.20.Final.jar:2.2.20.Final]
	at io.undertow.server.Connectors.executeRootHandler(Connectors.java:393) ~[undertow-core-2.2.23.Final.jar:2.2.23.Final]
	at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:852) ~[undertow-core-2.2.23.Final.jar:2.2.23.Final]
	at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35) ~[jboss-threads-3.1.0.Final.jar:3.1.0.Final]
	at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2019) ~[jboss-threads-3.1.0.Final.jar:3.1.0.Final]
	at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1558) ~[jboss-threads-3.1.0.Final.jar:3.1.0.Final]
	at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1449) ~[jboss-threads-3.1.0.Final.jar:3.1.0.Final]
	at org.xnio.XnioWorker$WorkerThreadFactory$1$1.run(XnioWorker.java:1282) ~[xnio-api-3.8.7.Final.jar:3.8.7.Final]
	at java.lang.Thread.run(Thread.java:833) ~[?:?]
Caused by: org.glassfish.jersey.server.ContainerException: java.lang.NoClassDefFoundError: Could not initialize class org.xnio.conduits.Conduits
	at org.glassfish.jersey.servlet.internal.ResponseWriter.rethrow(ResponseWriter.java:255) ~[jersey-container-servlet-core-3.0.9.jar:?]
	at org.glassfish.jersey.servlet.internal.ResponseWriter.failure(ResponseWriter.java:237) ~[jersey-container-servlet-core-3.0.9.jar:?]
	at org.glassfish.jersey.server.ServerRuntime$Responder.process(ServerRuntime.java:445) ~[jersey-server-3.0.9.jar:?]
	at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:264) ~[jersey-server-3.0.9.jar:?]
	at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) ~[jersey-common-3.0.9.jar:?]
	at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) ~[jersey-common-3.0.9.jar:?]
	at org.glassfish.jersey.internal.Errors.process(Errors.java:292) ~[jersey-common-3.0.9.jar:?]
	at org.glassfish.jersey.internal.Errors.process(Errors.java:274) ~[jersey-common-3.0.9.jar:?]
	at org.glassfish.jersey.internal.Errors.process(Errors.java:244) ~[jersey-common-3.0.9.jar:?]
	at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:265) ~[jersey-common-3.0.9.jar:?]
	at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:235) ~[jersey-server-3.0.9.jar:?]
	at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:684) ~[jersey-server-3.0.9.jar:?]
	at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:394) ~[jersey-container-servlet-core-3.0.9.jar:?]
	... 37 more 

This is a Windows-specific issue. In Windows, if the NUL entry in the registry is missing, then the undertow server fails to respond to the requests. This means:

  • The Datastore service isn't being created, and the Performance Monitoring Toolset will not start.
  • The Performance Monitoring Toolset dashboard isn't accessible, resulting in CNF exceptions.

Workaround

If the NUL registry is missing, follow the steps:

  • Generate a .reg file.
  • Run regedit.
  • Import the .reg file.
  • Restart Windows.

 Adobe

Get help faster and easier

New user?

Adobe MAX 2024

Adobe MAX
The Creativity Conference

Oct 14–16 Miami Beach and online

Adobe MAX

The Creativity Conference

Oct 14–16 Miami Beach and online

Adobe MAX 2024

Adobe MAX
The Creativity Conference

Oct 14–16 Miami Beach and online

Adobe MAX

The Creativity Conference

Oct 14–16 Miami Beach and online