Diagnostics Tool

Payara Server has a diagnostic tool that on demand collects the following information from the server runtime.

  • domain.xml configuration file

  • Server logs

  • Notification logs

  • Access logs

  • A JVM thread dump.

  • A JVM Heap Dump

  • JVM Report

The collection of this data can be targeted towards specific a specific server instance, deployment group or cluster. By default, everything is collected from the DAS, each instance, deployment group and cluster configured in the domain.

If the target(s) is(are) offline, only the domain.xml configuration file, server, access and notification logs will be collected.

If you are not using the default domain1, you must specify the domain to collect diagnostics from.
The diagnostics tool can be manually upgraded to a newer version in case it is needed. To do so, download the latest 2.x JAR release from Nexus using this link and then replace the older version into your Payara Server installation under the as-install/glassfish/lib/asadmin folder.

Usage

The diagnostic tool can be used through the collect-diagnostics Asadmin CLI subcommand, which will collect the relevant data and store it locally in a ZIP bundle that can be used for troubleshooting purposes when raising support tickets on the support portal.

Using this command will allow both customers and support staff to work faster on the investigation and analysis of production and development incidents.

The --obfuscate parameter will hide sensitive data in the domain.xml such as passwords, addresses and hostnames.
Use it if you’re afraid of sensitive data being shared along with the domain configuration.
The data collected is stored in a ZIP file in your user home directory, the output directory by default.

The resulting compressed ZIP file will have a directory structure similar to the following:

deploymentGroup1
├── instance1
│   ├── instance1-domain.xml
│   ├── instance1-jvm-report.txt
│   ├── instance1-server.log
│   ├── instance1-notification.log
│   ├── instance1-server_access_log.txt
│   └── instance1-thread-dump.txt
└── instance2
    ├── instance2-domain.xml
    ├── instance2-jvm-report.txt
    ├── instance2-server.log
    ├── instance2-notification.log
    ├── instance2-server_access_log.txt
    └── instance2-thread-dump.txt

Where the data is grouped in sub-folders segregated in all targets (deployment groups, clusters and instances) scanned by the command.

Example

The following example shows how to collect the data of all instances that belong to the deploymentGroup1 deployment group in the mydomain domain:

asadmin> collect-diagnostics --target deploymentGroup1 mydomain

Directory selected /home/user/payara/diagnostics/mydomain-2024-04-15T11-42-36Z
Collecting domain.xml from instance2
Attempting to create missing path at /home/user/payara/diagnostics/mydomain-2024-04-15T11-42-36Z/deploymentGroup1/instance1
Obfuscating /home/user/payara/diagnostics/mydomain-2024-04-15T11-42-36Z/deploymentGroup1/instance1
Successfully obfuscated /home/user/payara/diagnostics/mydomain-2024-04-15T11-42-36Z/deploymentGroup1/instance1
Collecting logs from instance2
Collecting jvm report from instance2
Collecting thread dump from instance2
Collecting Heap Dump from instance2
This version of Payara does not support heap dump generation.
Collecting domain.xml from instance1
Attempting to create missing path at /home/user/payara/diagnostics/mydomain-2024-04-15T11-42-36Z/deploymentGroup1/instance1
Obfuscating /home/user/payara/diagnostics/mydomain-2024-04-15T11-42-36Z/deploymentGroup1/instance1
Successfully obfuscated /home/user/payara/diagnostics/mydomain-2024-04-15T11-42-36Z/deploymentGroup1/instance1
Collecting logs from instance1
Collecting jvm report from instance1
Collecting thread dump from instance1
Collecting Heap Dump from instance1

Command collect-diagnostics executed successfully.

Collect Diagnostics with an unavailable DAS

Diagnostics can be collected directly from a running instance in case its corresponding DAS it’s not available by specifying the admin port of the target instance (see Asadmin Options), like this:

asadmin> -p 24848 collect-diagnostics --target deploymentGroup1 mydomain
This command must be run locally on the host of the node where this instance is located.