DataPower Monitoring Extension

Use Case

The IBM® WebSphere® DataPower® SOA Appliance (hereafter called DataPower) is a purpose-built hardware platform designed to simplify, secure, and accelerate XML, Web services, and Enterprise Service Bus deployments.

Please refer to the screeshot link in the Metrics section for the list of reported metrics

This extension works only with the standalone machine agent.


  1. The DataPower XML Management Interface must be enabled. The DataPower Monitor uses the "/service/mgmt/current" SOAP Endpoint to collect the metrics. Please refer to the IBM Redbook WebSphere DataPower SOA Appliance: The XML Management Interface Section 1.3, 1.4 and 1.5 to enable it.
  2. Make sure that the user has permissions to invoke the API. See troubleshooting section #4 for more details
  3. Start the Machine Agent before installing the extension and make sure that it is reporting the data fine.


  1. Download and Unzip the attachment to $MACHINE_AGENT_DIR/monitors
  2. Edit the file $MACHINE_AGENT_DIR/monitors/DataPowerMonitor/config.yml. Yaml is very strict with the syntax, please make sure that you validate your YML here


    1. Metric Prefix
      metricPrefix:  "Custom Metrics|DataPower"
      metricPrefix:  "Server|Component:$TIER_NAME|Custom Metrics|DataPower"
    2. Server Details
        - uri: http://localhost:5550/service/mgmt/current
          displayName: server1
          username: user
          password: welcome
            - default
            - domain1
          useBulkApi: true
        - uri: https://someotherhost:5550/service/mgmt/current
          displayName: server2
          username: user
          passwordEncrypted: C043Fag+LKEZM0AQTWPy2g==
            - fin_domain.*
            - .*security.*
          useBulkApi: true

      If passwordEncrypted is used, make sure to update the encryptionKey in config.yml

    3. Domains You have to set the domains from which you need the data from. You can choose between the properties domains or domainsRegex. If you dont know the domain name use default as shown.
        - default
      domainsRegex property can be used to set a regex to match the domains.
        - fin_domain.*
        - .*security.*
    4. Bulk Data Fetching useBulkApi: true There is a legacy API to get the data in bulk. This minimizes the number of round trips to DP server.
    5. Proxy Support
        uri: http://localhost:9090
        username: proxyyuser
        password: proxypassword

Password Encryption Support

To avoid setting the clear text password in the config.yml, please follow the process to encrypt the password and set the encrypted password and the key in the config.yml

  1. Download the util jar to encrypt the password from here
  2. Encrypt password from the commandline
    java -cp "appd-exts-commons-1.1.2.jar" com.appdynamics.extensions.crypto.Encryptor myKey myPassword
  3. These values should be used in the passwordEncrypted and encryptionKey fields in config.yml



  1. Verify Machine Agent Data: Please start the Machine Agent without the extension and make sure that it reports data. Verify that the machine agent status is UP and it is reporting Hardware Metrics
  2. config.yml: Validate the file here
  3. Special chars in config If you have special chars(like in passwords) in config.yml, make sure to wrap it in double quotes ""
  4. DataPower SOAP API: Please update the user:password and datapower:5550 with correct values. Invoke the URL from curl (or wget) and make sure that it is returning data. If it is not, then contact your DataPower Admin with these details
    curl -u user:password -d '<SOAP-ENV:Envelope xmlns:SOAP-ENV=""><SOAP-ENV:Header/><SOAP-ENV:Body xmlns:dp=""><dp:request domain="default"><dp:get-status class="HTTPMeanTransactionTime"/></dp:request></SOAP-ENV:Body></SOAP-ENV:Envelope>' https://datapower:5550/service/mgmt/current
  5. Enable Statistics Enable Statistics should be set to enabled in the DataPower Admin screen.
  6. CPU Issue The issue is the default xml implementation which is bundled with the jdk is trying to read the factory class name from the jar file on every usage. This results in reading all the jar files in the classpath, which shoots up the CPU. Please use the following system properties resolve those. This should be added to machine agenst startup before the -jar argument
  7. Metric Limit: Please start the machine agent with the argument -Dappdynamics.agent.maxMetrics=5000 if there is a metric limit reached error in the logs. If you dont see the expected metrics, this could be the cause.
  8. Check Logs: There could be some obvious errors in the machine agent logs. Please take a look.
  9. Collect Debug Logs: Edit the file, <MachineAgent>/conf/logging/log4j.xml and update the level of the appender com.appdynamics to debug Let it run for 5-10 minutes and attach the logs to a support ticket



Workbench is a feature that lets you preview the metrics before registering it with the controller. This is useful if you want to fine tune the configurations. Workbench is embedded into the extension jar.

To use the workbench
  1. Follow all the installation steps
  2. Start the workbench with the command
    java -jar /path/to/MachineAgent/monitors/DataPowerMonitor/datapower-monitoring-extension.jar
    This starts an http server at http://host:9090/. This can be accessed from the browser.
  3. If the server is not accessible from outside/browser, you can use the following end points to see the list of registered metrics and errors.
    #Get the stats
    curl http://localhost:9090/api/stats
    #Get the registered metrics
    curl http://localhost:9090/api/metric-paths
  4. You can make the changes to config.yml and validate it from the browser or the API
  5. Once the configuration is complete, you can kill the workbench and start the Machine Agent



The metrics will be reported under the tree Application Infrastructure Performance|$TIER|Custom Metrics|DataPower

Please take a look at this screenshot of the Metric Browser to see the list of reported metrics by DataPower Extension.



Always feel free to fork and contribute any changes directly via GitHub.



For any questions or feature request, please contact AppDynamics Help.



Machine Agent Compatibility4.0+
Last Update3/29/16



  • 1.0.0: Initial Release
  • 1.1.0: Added support to filter by domains
  • 1.1.2: Support for Encryption
  • 1.2.0: Support for domains and domains-regex
  • 1.3.2: Support for multiple DP servers and TLS support
  • 1.3.4: Workbench Support
  • 1.3.5: Http client builder upgrade