How do I install Dynatrace OneAgent on Solaris?

Dynatrace supports Oracle Solaris (x86 and SPARC) for Java and Apache HTTP server.

If your infrastructure is based on these technologies you can use Dynatrace OneAgent to effectively monitor your hosts, services, and user experience.

If a proxy is required to connect to Dynatrace Server, we recommend that you install Security Gateway and have Dynatrace OneAgent use Security Gateway for this purpose.

Install Dynatrace OneAgent on Solaris

Select Deploy Dynatrace from the navigation menu.

Click Start Installation.

Click the Solaris button.

Choose the CPU architecture of your environment.

Click Copy to copy the wget command.

Log into your Solaris host and execute the wget command.

Attention:

  • The wget command isn't installed on Solaris by default. Either install it or use an alternative means of downloading OneAgent.
  • While downloading, you may encounter the following error:
Releasing 0x0000000239ae1890 (new refcount 1).
Initiating SSL handshake.
SL handshake failed.
Closed fd 5
Unable to establish SSL connection.

This can be caused by selecting the wrong SSL or TLS protocol on handshake. As different operating systems act differently (both server and client side), you must specify some protocols manually under certain conditions.

For this specific case, to select the correct protocol, you must specify --secure-protocol=tlsv1_2 as an additional parameter of the wget command. The command should appear as follows:

wget --secure-protocol=tlsv1_2  
   -O Dynatrace-OneAgent-Solaris-xxx-1.xxx.xxx.zip 
   "https://xxx/xxx/api/v1/deployment/installer/agent/solaris/paas/latest?Api-Token=xxx&arch=x86"

It can also be set permanently by creating the file ~/.wgetrc with the following content:

secureprotocol = tlsv1_2

Create a folder on your local system for OneAgent (for example, /opt/dynatrace/oneagent) and unzip the zip-archive into the folder.

Note
In contrast to other platforms, root access isn't required for installation of OneAgent on Solaris. OneAgent can be installed in any directory.

  • As all monitored applications need to be able to read the library, ensure that the permissions allow this.
  • Be sure to reference the folder correctly in the subsequent steps of your deployment.

Unified monitoring of your applications

On Solaris Dynatrace only supports Java and Apache HTTP Server applications and as such you need to decide which applications to monitor. This is very easy though.

You can do this just for a single application, or shell wide.

Monitoring a single application

To monitor a single 64bit application you can simply execute your command and prepend it with the unified injection script.

/opt/dynatrace/oneagent/dynatrace-agent64.sh java -jar myapp.jar

If your application is 32bit simply change the line to

/opt/dynatrace/oneagent/dynatrace-agent32.sh java -jar myapp.jar

Alternatively you can just source the scipts prior to starting your application, which is useful for Apache HTTP Server

export DT_HOME=/opt/dynatrace/oneagent
. $DT_HOME/dynatrace-agent64.sh 
. $DT_HOME/dynatrace-agent32.sh 
apachectl -k start

You can omit either the 32bit or 64bit depending on your environment, but it is necessary to define the DT_HOME variable in this case. It must point to the OneAgent installation folder.

Monitoring every Java and Apache HTTP service in your execution context

You can setup OneAgent to monitor every application in your current application context. To do this add this in your script or .profile. You should not do this system wide nor should you do this for login users.

export DT_HOME=/opt/dynatrace/oneagent
. $DT_HOME/dynatrace-agent64.sh 
. $DT_HOME/dynatrace-agent32.sh 

You can omit either the 32bit or 64bit depending on your environment, but it is necessary to define the DT_HOME variable in this case. It must point to the OneAgent installation folder.

Troubleshooting

Could not find required opcodes in caller trying to resolve main

You may encounter the following error message when you start your Java application:

severe  [hooking   ] Could not find required opcodes in caller trying to resolve main

This happens if you use one of the unified monitoring scripts dynatrace-agentXX.sh but additionally have OneAgent referenced in JAVA_OPTS.

  • Ensure that dynatrace-java-env.sh isn't called anywhere in your shell when you use the dynatrace-agentXX.sh script. dynatrace-java-env.sh is deprecated and should only be used as a fallback.

  • Check for and remove the following parameter from your Java command line or startup scripts (specific directory may vary):

    -agentpath:/opt/dynatrace/oneagent/agent/lib64/liboneagentloader.so

Following this, the error message should go away.

LD_PRELOAD_64: parameter not set

You may encounter an error like this when you use dynatrace-agentXX.sh in a shell script.

Info: using DT_HOME: /opt/dynatrace/oneagent
.profile[33] LD_PRELOAD_64: parameter not set

This happens if use set -u to treat unset variables and parameters as errors. dynatrace-agentXX.sh does export variables which, though they may not yet exist in your script, are nevertheless needed and key to proper function. To overcome this, call set +u ahead of dynatrace-agentXX.sh in your script.

# avoid error
set +u
export DT_HOME=/opt/dynatrace/oneagent
. $DT_HOME/dynatrace-agent64.sh

OneAgent versions older than v1.137 and fallback

If your OneAgent is older than v1.137, or if you have problems with the unified monitoring approach, you can inject OneAgent manually.

Update Dynatrace OneAgent on Solaris (x86 and SPARC)

To update an installed OneAgent instance on Solaris

Redo all steps of the the initial installation but install the Dynatrace OneAgent into a new directory

Stop all monitored processes.

Rename the current Dynatrace OneAgent installation directory (for example, /opt/dynatrace/oneagent-old) using the following command: mv /opt/dynatrace/oneagent /opt/dynatrace/oneagent-old. This folder can be deleted following the Dynatrace OneAgent update.

Rename the updated Dynatrace OneAgent folder to point to the original installation directory (for example, /opt/dynatrace/oneagent) using the following command: mv /opt/dynatrace/oneagent-update /opt/dynatrace/oneagent

Restart all processes that are to be monitored.