Setup AppDynamics integration

Introduction

Akamas leverages the CSV telemetry provider to integrate a variety of data sources, such as AppDynamics.

All integrations based on this provider consist of two phases:

  1. Metric extraction from AppDynamics

  2. Metric import via CSV provider

The first phase is composed of a set of scripts launched by a workflow task that interacts with the AppDynamics API and saves the metrics of interest for the experiment in a CSV file with a proper format.

The second phase is executed by the CSV telemetry provider, which imports the metrics from the CSV file.

Prerequisites

To set up the integration, you need:

  • A host (or a container) that can be accessed via SSH from Akamas to run the extraction scripts and host the generated CSV file.

  • The host must have the following packages installed:

  • The host must be able to connect to AppDynamics APIs

  • A token to authenticate to your AppDynamics account and extract the metrics

Script setup

The script required to set up this integration is not currently publicly available. To obtain them, please contact [email protected].

You can deploy the scripts once and then re-use them for multiple studies as all the required configurations can be provided as arguments which can be changed directly in the akamas workflow yaml or from the UI.

To deploy the scripts, extract the archive to a location of your choice on the host. The files must have the following organisation:

── get_metrics.py   
── utils/
    │   mv_utils.py
    │   mv_config.py

You can verify that the script can be executed correctly by running the following command.

python3 get_metrics.py -f <filename> -c <component> -a <application> -t <tier> -n <node> -st <startTime> [-et <endtime>] [-u <user>] [-p <password>]

The script accepts the following parameters:

  • Filename [-f, --filename]: [Required] name that must have the generated output file (specify also the extension .csv)

  • Component [-c, --component]: [Required] name of the Akamas component we want to associate the metrics with

  • Application [-a, --application]: [Required] name of the AppDynamics application for which we want to retrieve the metrics

  • Tier [-t, --tier]: [Required] name of the AppDynamics tier for which we want to retrieve the metrics

  • Node [-n, --node]: [Required] name of the AppDynamics node for which we want to retrieve the metrics

  • StartTime [-st, --startTime]: [Required] time for which we want to start to retrieve the data

  • EndTime [-et, --endTime]: [Optional] time for which we want to start to retrieve the data (Default value = now)

  • User [-u, --user]: [Optional] username to connect to the environment (Default value -> value taken from mv_config file)

  • Password [-p, --password]: [Optional] password to connect to the environment (Default value -> value taken from mv_config file)

Supported Metrics

Here you can find a subset of the supported metrics. Metrics from AppDynamics are mapped to metrics from the Akamas optimisation pack. In general, all metrics of AppDynamics can be imported in Akamas if inserted in the config file

Infrastructure and runtime

jvmRuntimePlatform

AppDynamics Metric
Akamas Component Type
Akamas Metric

Application Infrastructure Performance|{tier}|Individual Nodes|{node}|JVM|Memory|Heap|Max Available (MB)

java-openjdk-XX

jvm_heap_size

Application Infrastructure Performance|{tier}|Individual Nodes|{node}|JVM|Memory|Heap|Current Usage (MB)

java-openjdk-XX

jvm_heap_used

Application Infrastructure Performance|{tier}|Individual Nodes|{node}|JVM|Memory|Heap|Used %

java-openjdk-XX

jvm_heap_util

Application Infrastructure Performance|{tier}|Individual Nodes|{node}|JVM|Garbage Collection|GC Time Spent Per Min (ms)

java-openjdk-XX

jvm_gc_time

Application Infrastructure Performance|{tier}|Individual Nodes|{node}|JVM|Threads|Current No. of Threads

java-openjdk-XX

jvm_threads_current

Application Infrastructure Performance|{tier}|Individual Nodes|{node}|JVM|Process CPU Usage %

java-openjdk-XX

cpu_util

Application Infrastructure Performance|{tier}|Individual Nodes|{node}|Hardware Resources|Memory|Used (MB)

java-openjdk-XX

mem_used

Linux

AppDynamics Metric
Akamas Component Type
Akamas Metric

Application Infrastructure Performance|{tier}|Individual Nodes|{node}|Hardware Resources|Network|Outgoing KB

Ubuntu XX.XX

network_out_bytes_details

Application Infrastructure Performance|{tier}|Individual Nodes|{node}|Hardware Resources|Network|Incoming KB

Ubuntu XX.XX

network_in_bytes_details

Application Infrastructure Performance|{tier}|Individual Nodes|{node}|Hardware Resources|Disks|KB read/sec

Ubuntu XX.XX

disk_read_bytes

Application Infrastructure Performance|{tier}|Individual Nodes|{node}|Hardware Resources|Disks|KB written/sec

Ubuntu XX.XX

disk_write_bytes

Application Infrastructure Performance|{tier}|Individual Nodes|{node}|Hardware Resources|Memory|Used %

Ubuntu XX.XX

mem_util

Application Infrastructure Performance|{tier}|Individual Nodes|{node}|Hardware Resources|Memory|Total (MB)

Ubuntu XX.XX

mem_total

Service

AppDynamics Metric
Akamas Component Type
Akamas Metric

Overall Application Performance|Calls per Minute

Web Application

transactions_throughput

Overall Application Performance|Errors per Minute

Web Application

transactions_error_throughput

Overall Application Performance|Average Response Time (ms)

Web Application

transactions_response_time

Last updated

Was this helpful?