If you are not receiving traces and metrics in the Traces Explorer and Metrics Explorer, these are some options to troubleshoot.
Is the Java Library connected to the SolarWinds APM collector?
If your server is behind a firewall, you may not be able to connect to the SolarWinds APM collector. See Firewall or access control requirements for the URIs to add to firewall exclusions.
The connectivity diagnostic tool can be run using the same APM library JAR that was used for installation.
For Java 8+:
java -cp "/path/to/solarwinds-apm-agent.jar com.tracelytics.util.diagnostic.DiagnosticTools service_key=YourServiceKey
See Diagnostics for more information about the diagnostics tool.
If an error message similar to below is found when the application starts up, either the library JAR path is incorrect or the application user does not have permission to access the library JAR file.
Error opening zip file or JAR manifest missing : /home/ec2-user/SolarWinds/solarwinds-apm-agent.jar Error occurred during initialization of VM agent library failed to init: instrument
Verify the Java Library file path and make sure the application user has read access to both the library JAR file and its parent directories.
Restart the application server and make sure your application is receiving requests. Your application must receive requests in order for traces and metrics data to be sent to the Traces Explorer and Metrics Explorer.
It is not recommended to run another APM library alongside the SolarWinds Observability Java Library. Disable other APM libraries from your application before starting your application with the SolarWinds Observability Java Library.
Check if the library has been initialized by inspecting the application server log files. The message
Successfully initialized SolarWindsAPM OpenTelemetry extensions with service key should be printed upon successful library startup.
Look at the response headers returned to see if the library has been initialized. The Java Library will add the header
X-Trace to the response. If the response does not contain the header
X-Trace, the library probably was not loaded correctly.
Review the other troubleshooting options to try to resolve the issue.
If there is a low sample rate or connection issues, requests may not be sampled. The
X-Trace response header ends in
00 if a request isn’t traced and ends in
01 if the request is being traced.
There should be some requests that return an
X-Trace header ending in
01. If all
X-Trace headers end in
00, this may indicate the server cannot connect to the SolarWinds APM collector.
Review the application server logs for any connection issues logged by the library.
The service key is defined as an environment variable or added to the
solarwinds-apm-config.json file (usually located in the same directory as the
solarwinds-apm-agent.jar library JAR).
The Service key is used to identify your account and the service being instrumented. It is shown in the Add Data dialog when adding the new service.
YourApiToken with the SolarWinds Observability API token (ingestion type) generated for this service, and replace
YourServiceName with your chosen name for this service. See API Tokens.
The service name is also called the entity's service ID in SolarWinds Observability. The service name can also be seen in the Overview tab in the service entity's Entity Explorer details view. Editing the display name of the service entity in SolarWinds Observability does not affect the Service key.
Log messages from the library can be found in the application server log files.
Increase the logging level verbosity to
debug (default is
info) to get more detailed information added to the library logs. Use the library configuration property LogLevel to change the logging level.
Restart the application server so the new level can take effect.
An application correctly configured with our Java Library should log debug messages to
System.out tagged with
Search the application server log files for
WARNING [SolarWinds APM]. Sometimes configuration errors such as invalid formatting in the config file can lead to instrumentation problems.
The Java Library instruments a wide range of servlet based containers, see Support Matrix.
If your application framework is not on the list, use the SDK for custom instrumentation.