The ABAP agent is customized using the SAP transaction code /DVD/APPD_CUST.

Connect to the AppDynamics Controller

To connect to your AppDynamics Controller:

  1. Enter your AppDynamics host name and port number.

    Note: 'Custom SSL file' filed is relevant only when On-Premises controller is used and SSL communication with it is needed. The field is pre-populated during steps of local automatic HTTP SDK installation, but needs to be manually set during remote manual HTTP SDK installation - see Install Custom Certificate for Remote HTTP SDK.

  2. If your HTTP connection needs a proxy, enter a proxy host name and port number, optionally user and password if your proxy requires authentication:

    The HTTP proxy is used only for connections to the AppDynamics Controller and event service. Communication with the HTTP SDK is direct.
  3. (Optional) When SSL connection to the controller (or event service) is used, the ABAP Agent is unable to directly reach the controller without an SSL identity. 

    Direct connection is used in these cases: 

      • Check controller connection status from SAP GUI
      • Pass analytics event data to the Event Service 
      • Upload of dashboards directly to the controller

    To setup the SSL connection:

    1. Open the controller URL in a web browser and download all public certificates

    2. Import the certificate to SAP

    3. Select the STRUST SSL identity where your certificate is uploaded in the STRUST SSL identity field under Additional SSL settings

  4. (Optional) Enter OAuth Client and OAuth Secret. See Creating API Clients. When OAuth settings are maintained, ABAP Agent will be able to use advanced controller APIs. The following features require OAuth settings:

    • Custom analytics schema deletion - It requires the Analytics Administrator role.
    • Health rule replication- It requires the Administrator role.

Configure SDK Settings

To configure the SDK settings:

  1. On SDK settings, enter an application name.
    The application name should correspond to the application on the Controller. 
  2. Enter a tier name.
    The default tier name is SAP system ID.
  3. For local HTTP SDK execution, enter a port number that is used by the HTTP SDK instance on every application server of the SAP system.
  4. For remote HTTP SDK execution (through SDK Manager), enter the SDK manager host name and port. 
    Enter a unique HTTP SDK port for each application server under Node settings pane. See also SDK Manager.
  5. (Optional) Enable SSL for communication between ABAP Agent and SDK Manager.

    SSL overhead

    Carry out the following setup if you need to enable secure connection between SAP system, SDK Manager and remote HTTP SDK instances running on Linux Gateway system. This does not apply to HTTP SDK installed locally on a SAP application server.

    Enabling SSL for SDK manager increases overhead for intercepted HTTP sessions that create business transaction. Leave this feature disabled when SSL security on this level is not necessary.

    1. Add certificates to SDK Manager
    2. Check the Use SSL checkbox under SDK settings
    3. Select the STRUST SSL identity where your certificates are uploaded in the SSL identity field

Configure Connection to Other AppDynamics Agents

The ABAP Agent can connect to other AppDynamics Agents and endpoints to provide more visibility into the SAP system. Set up the following connections to enable the additional functionalities:

Configure Incident Log

The incident log is used to temporarily deactivate instrumentation (soft deactivation) on an application server where ABAP Agent is not able to connect to the corresponding HTTP SDK instance. Incident log settings can be accessed from the toolbar using the Incident log button.

Behavior of Incident log can be adjusted with the following settings:

  • Deactivation threshold - how many connection attempts need to fail before Incident log deactivates ABAP Agent integration on a particular application server
  • Evaluation timeframe - connection attempt failures are recorded with a timestamp of the incident. List of incidents for deactivation threshold evaluation is selected based on timestamp that is not older than the current timestamp minus evaluation timeframe (seconds)
  • Reactivation wait - Incident log waits this many seconds before ABAP Agent integration is automatically restored. This also resets the list of incidents that occurred before the deactivation.

With the default settings, when ABAP Agent fails to connect to HTTP SDK instance on a specific application server, Incident log records this as a new incident, selects list of incidents of this application server not older than 5 minutes (600 seconds). If 10 or more incidents are selected, Incident log deactivates ABAP Agent integration on this application server for 1 minute (60 seconds). Once ABAP Agent attempts to connect to HTTP SDK after reactivation wait time, Incident log automatically reactivates ABAP Agent integration on this application server.

Incident log settings can be adjusted to achieve more integration up time (increase deactivation threshold and decrease evaluation timeframe), or to lessen the impact of the integration on the end-users when some connection fails (decrease deactivation threshold and increase reactivation wait time).

Activate or Deactivate Integration

Customize the ABAP agent and ensure that the HTTP SDK instances are running before activating AppDynamics integrations. 

You need to be in edit mode to activate or deactivate the AppDynamics module. Click Activate integration or Deactivate integration button respectively from AppDynamics Settings.

When ABAP Agent integration is activated, ABAP Agent schedules background jobs under the SAP user that activates the integration. The following jobs are scheduled:

  • APPD_STAD_COL - STAD collector job is scheduled when an active GUI Transaction match rule exists. This job reconstructs STAD data into GUI Transaction Business Transactions. See Monitor SAP Dialog Transactions.
  • APPD_HOUSEKEEP_COL - Daily ABAP Agent housekeeping job.
  • APPD_AGENT_REGENERATE - (as of version 22.11.0) job that executes when an event of SAP instance starts. It automatically starts HTTP SDK on the corresponding application server if it was shut down due to the restart of the host.

As of version 22.5.0, Expert Settings can be used to set a specific SAP user to execute these background jobs and to change the period of the housekeeping job.

Troubleshooting

Connection Problems

  • Connection Refused (NIECONN_REFUSED)

    • Often happens with remote HTTP SDK, but can also be applied to other agents (machine agent, analytics agent)

    • Make sure that communication between ABAP Agent on SAP system and remote HTTP SDK on another host is not blocked. Most common causes:

      • Outgoing HTTP request firewall policy on SAP system

      • Incoming HTTP request firewall policy on remote HTTP SDK host

      • Ports on remote HTTP SDK host are not open - this includes SDK Manager port (default 7999) and also ports for each application server of SAP system set up in transaction /DVD/APPD_CUST

      • Ports are being occupied on remote HTTP SDK host by another applications - Command to check if port is not already in use is:

        • Linux - "netstat -tulpn | grep <port_number>" - if there is record with action "LISTEN" port is already in use

        • Windows - "netstat -ano | Select-String <port_number>" - if there is record with action "LISTENING" port is already in use

      • Also, make sure you can actually telnet from the local host to the remote host you are trying to reach. On the OS level, try using the command “telnet <host> <port>” to see if the host can be reached

    • If you made changes to the setup in ABAP Agent (application name, changed port numbers) SDK Manager and all HTTP SDK instances need to be stopped on the remote HTTP SDK host and SDK Manager needs to be started again with "-c" parameter as per documentation.

  • SSL Error

    • Happens when SSL communication is used, but missing/incorrect certificate is in place.

    • Error may happen for respective APIs or agents:

      • SAAS Controller

        • Using a web browser, navigate to your SaaS controller URL (for example, https://company.saas.appdynamics.com/)

        • Download the certificate using this guide

        • Add the downloaded certificate to STRUST identity you are using in transaction /DVD/APPD_CUST following this guide. If STRUST identity in transaction /DVD/APPD_CUST is not filled out, DFAULT STRUST identity is used.

      • Event Service

        • Using a web browser, navigate to your analytics API controller URL (for example, https://analytics.api.appdynamics.com/)

        • Download the certificate using this guide

        • Add the downloaded certificate to STRUST identity you are using in transaction /DVD/APPD_CUST following this guide. If STRUST identity in transaction /DVD/APPD_CUST is not filled out, DFAULT STRUST identity is used.

      • On-Prem Controller

        • When SSL communication is used between HTTP SDK and on-premise controller

        • Follow this guide

      • Remote HTTP SDK

        • When SSL communication between ABAP Agent and Remote HTTP SDK is used

        • Follow step 5 of this guide

  • Event Service

    • Connection Failed - Access Forbidden

      • API key generated for event service does not have sufficient rights

      • Navigate to Controller > Analytics > Configuration > API keys

      • Locate the key you are using in transaction /DVD/APPD_CUST

      • Click Edit, expand all nodes, and tick all checkboxes

  • Machine Agent

    • Machine Agent is running but ABAP Agent can’t reach it

      • Make sure that the machine agent was started with enabled HTTP listener

      • Make sure you are using the correct port in /DVD/APPD_CUST transaction (default 8293)

    • Machine Agent is not correlated on the controller with HTTP SDK

      • Unique Host ID value in machine agent configuration must be the same as one HTTP SDK uses. This is done automatically, but sometimes mismatch occurs and needs to be handled manually. You can change the unique host id following this guide. After changing the unique host ID, do not forget to restart the machine agent for the change to take effect.

  • Analytics Agent

    • Analytics Agent is running but ABAP Agent does not detect it

      • Make sure host and port and set correctly and Transaction analytics is enabled in transaction /DVD/APPD_CUST

      • Make sure the host where the analytics agent is running is reachable from HTTP SDK host

      • HTTP SDK needs to be restarted after setting up analytics agent / transaction analytics settings

Configuration Problems

  • General Problems

    • Background jobs running too long

      • Make sure you are not using too generic GUI match rules. If you have a large production system, and your match rules are set up to match any GUI transaction, or if you are using automatically generated match rules, background jobs may run too long until they time out. This is because it is processing a large amount of GUI transactions as business transactions which can cause large performance overhead for the ABAP Agent jobs. Use more specified match rules and only monitor relevant transactions.

    • STAD Collector is inactive despite integration being activated

      • STAD collector is inactive as long as there are no GUI Transaction or Background job match rules defined. As soon as you define any GUI Transaction or Background job match rule (transaction /DVD/APPD_INSTR or /DVD/APPD_STATUS → Settings) background job APPD_STAD_COL that collects transactions from STAD and translate them to business transactions will be started and STAD collector will be activated.

  • Business Transactions

    • Not all defined transactions can be seen on the controller

      • If some of your transactions can’t be seen on the controller, make sure you have not reached the BT limit. The default limit is 50 BTs per node and total of 200 BTs per application. More on limits can be read here. If you have a large system, it is not recommended to use generated match rules or transaction splitting, instead define more detailed criteria according to this guide.

    • Where do time details from GUI BT snapshot come from

      • All GUI transaction snapshots have time details that are extracted directly from STAD. There is SAP note that describes each time information that can be found in SAP Note 8963.