Configuring AppDynamics integrations

To collect CPU, memory, disk, network metrics, and events from AppDynamics, install the AppDynamics integration.

Gathering data

The AppDynamics integration uses a remote-only sensor that connects to a AppDynamics instance and collects the following information:
  • Events

  • Metrics (measurable values of the performance of monitored entities)

    • For hosts: CPU, memory, disk, network
    • For processes: CPU, memory
  • Monitored entities (hosts, processes)

Verifying prerequisites

You need to generate an API client and copy the client name and client secret for later configurations. For more information, see API Clients external icon.

Installing

  1. Verify the public GA image path of the integration for AppDynamics (for example: cp.icr.io/cp/cp4waiops/ibm-mm-cdc-conn:4.3-latest). Run the podman images command.
  2. Log in as a root user on a Linux® host machine that has network access to AppDynamics. The AppDynamics integration pulls information from AppDynamics by using a remote TCP connection.
  3. To log in before you download the public image of integration for AppDynamics, run the podman login <cdc-mm ga-image-path> command.
    podman login cp.icr.io/cp/cp4waiops/ibm-mm-cdc-conn:4.3-latest
    For more information about the username and password to use, see step 5 in the Preparing your cluster topic.
  4. Create a directory to store the integration-related configuration file and bash script.
    mkdir -p /root/cdc
    cd /root/cdc
  5. To define connection information to the Metric Manager API, create a Metric Manager backend configuration file with the name: com.instana.cdc.metricmanager.sender.MetricManagerBackend-1.cfg.
    # Metric Manager configuration file
    # Metric Manager's URL
    host=http://<metricManagerHost>.ibm.com
    
    # Metric Manager's port
    port=18080
    
    # Metric Manager's username for REST API
    username=system
    
    # Metric Manager's password for REST API 
    # password has been mask ****
    password=**********
    
    # Metric Manager's tenant id
    tenant_id=APM
  6. Create the configuration-.yaml sensor configuration file. Define the AppDynamics endpoint, API key, and the metric entities information as in the following example configuration-appdynamics.yaml file for a AppDynamics sensor.
    com.instana.plugin.appdynamics:
      enabled: true
      account_name: 'ibmlimited'
      client_name: minsi
      client_secret: <client_secret>
      endpoint: https://ibmlimited.saas.appdynamics.com
      poll_rate: 300
      target_zone: appdynamics
      metrics:
        enabled: true
        entities:
          Database Monitoring:
            metrics:
              - Databases|admin2|KPI|*
              - Databases|mysql-admin| Server Statistic|*
          products-ecommerce:
            metrics:
              - Application Infrastructure Performance|VMApp1|Individual
                Nodes|*|Agent|App|Availability
          server & infrastructure monitoring:
            metrics:
              - Application Infrastructure Performance|Root|Individual
                Nodes|AppDCentos1.xyz.com|Hardware Resources|CPU|%Busy
  7. Create a bash script with execution permission, as in the following example bash script for a AppDynamics sensor.
    podman run \
      -itd \
      --name instana-agent-metric-manager-ga \
      --volume /var/run:/var/run \
      --volume /run:/run \
      --volume /dev:/dev:ro \
      --volume /sys:/sys:ro \
      --volume /var/log:/var/log \
      --volume <cdc-root-path>/configuration-appdynamics.yaml:/opt/instana/agent/etc/instana/configuration-appdynamics.yaml \
      --mount type=bind,source=<cdc-root-path>/com.instana.cdc.metricmanager.sender.MetricManagerBackend-1.cfg,target=/opt/instana/agent/etc/instana/com.instana.cdc.metricmanager.sender.MetricManagerBackend-1.cfg \
      --privileged \
      --net=host \
      --pid=host \
      --env INSTANA_PRODUCT_NAME="metric-manager" \
      --env AGENT_MAX_MEM=6G \
      <IBM-CDC-Public-GA-Image-Path>/ibm-mm-cdc-conn:4.5-latest
  8. If you want to use vault, complete the following steps:
    1. Add the app secret information to the vault server.
    2. Mount the vault PEM file in the image.
    3. Run the bootstrap script to start the docker image.
    4. Run the docker ps command to check the container ID and access to the container by the docker exec -ti <container_id> bash command.
    5. In the container, add the vault IP address into the /etc/hosts file.
      9.x.x.159 Vault
    6. Check the connection to the vault server.
      ping vault
      Note: If ping isn't available, run the dnf install iputils -y command.
    7. Go to the path where the AppDynamics configuration YAML file is located.
    8. Edit the configuration.yaml to add the vault configuration.
      com.instana.configuration.integration.vault:
        connection_url: 'https://Vault:8200' # Mapping through hosts file since PEM ca cert does not contain hostname
        token: '<vault_token>'
        path_to_pem_file: '/root/agentdev/agent-installer/instana-agent/etc/instana/vault-ca.pem'
        secret_refresh_rate: 24
        kv_version: 2
    9. Modify the sensor configuration to use the vault type in the configuration-appdynamics.yaml file.
      com.instana.plugin.appdynamics:
        enabled: true
        account_name: 'ibmlimited'
        client_name: minsi
        client_secret: 
          configuration_from:
            type: vault
            secret_key:
              path: cem/appdynamics
              client_secret: client_secret
        endpoint: https://ibmlimited.saas.appdynamics.com
        poll_rate: 300
        target_zone: appdynamics
        metrics:
          enabled: true
          entities:
            Database Monitoring:
              metrics:
                - Databases|admin2|KPI|*
                - Databases|mysql-admin| Server Statistic|*
            products-ecommerce:
              metrics:
                - Application Infrastructure Performance|VMApp1|Individual
                  Nodes|*|Agent|App|Availability
            server & infrastructure monitoring:
              metrics:
                - Application Infrastructure Performance|Root|Individual
                  Nodes|AppDCentos1.xyz.com|Hardware Resources|CPU|%Busy
    10. Restart the integration and check whether the AppDynamics sensor can connect and receive metrics.
  9. Run the bash script to set up and configure the instance for the integration.
Note: If you don't want to monitor everything in your AppDynamics integration, or if you have many management zones, you can specify the zones that you do want to monitor. Specify the zones to be monitored in your configuration file. If you have many zones, you might encounter an Out of Memory error when the integration reports on every one of your AppDynamics zones. You can set the zones when you configure your integration by adding values to the zone field of your configuration. For more information about zones, or if you want to make other changes to the default configuration, see the Configuring section. For example, if you monitor approximately 200 hosts, you might not need to specify zones in your configuration. Conversely, if you monitor 5000 hosts that are grouped into hundreds of management zones, it's likely worthwhile to narrow them down.
The AppDynamics integration is installed and set up on the Linux host.

Verifying the installation

  1. Verify whether the integration instance is up and running.
    $ podman ps
    CONTAINER ID   IMAGE                                                                                                                                 COMMAND                  CREATED        STATUS        PORTS     NAMES
    3c75a6d23ca8   cp.icr.io/cp/cp4waiops/ibm-mm-cdc-conn:4.3-latest   "/usr/local/bin/tini…"   2 weeks ago  Up 2 weeks ago             instana-agent-metric-manager-ga     
  2. Check the logs to confirm that AppDynamics metrics are forwarded to Metric Manager.
    $ podman logs -f <container_id>
    Example logs, which show that the metrics are forwarded:
    2023-10-05T12:12:09.543+00:00 | INFO  | tana-agent-scheduler-thread-13-2 | icManagerBackend | cdc-metricmanager-sender - 1.0.0 | MetricManager : MetricManagerConfig{Host=http://test.ibm.com, Port=18080, Username=system 
    2023-10-05T12:12:09.544+00:00 | INFO  | tana-agent-scheduler-thread-13-2 | icManagerBackend | cdc-metricmanager-sender - 1.0.0 | MetricManager : metricManagerURL : http://test.ibm.com:18080/metrics/api/1.0/metrics
    2023-10-05T12:12:10.026+00:00 | INFO  | tana-agent-scheduler-thread-13-2 | icManagerBackend | cdc-metricmanager-sender - 1.0.0 | Successfully sent payload to Metric Manager
    2023-10-05T12:12:10.026+00:00 | WARN  | tana-agent-scheduler-thread-13-2 | SensorTicker     | com.instana.agent - 1.1.697 | Sending metrics with 1260411 chars took 255815 ms

Configuring

You can edit the configuration-.yaml file to further configure your AppDynamics integration.
  1. Go to your configuration-.yaml file on the Linux host machine where you installed your AppDynamics integration.
  2. Open the file with your preferred text editor and find the AppDynamics section. By default, it looks like the following example but the optional fields are empty.
    # Appdynamics
    # com.instana.plugin.appdynamics:
    enabled: true                                                 # true, by default
    endpoint: 'https://<client-instance>.saas.appdynamics.com'    # e.g., https://ibmlimited.saas.appdynamics.com
    account_name: name specified for the Appdynamics account
    client_name: myclientname
    client_secret: myclientsecret
    metrics:                                         # Required
      enabled: true
      entities:
        ...
  3. Edit the values that you want to change, and save the file. The following table lists the variables that can be configured for AppDynamics.
    Variable Description Type Default value Required or optional
    enabled Set to true or false to enable or disable the integration. Boolean true Optional
    endpoint The endpoint name of your AppDynamics instance, for example: https://<client-instance>.saas.appdynamics.com String N/A Required
    account_name The name that is specified for the Appdynamics account. String N/A Required
    client_name The client name of AppDynamics API client. String N/A Required
    client_secret The client secret of AppDynamics API client. String N/A Required
    poll_rate The number of seconds between queries. The poll rate might need to be adjusted to account for any rate limits imposed by your endpoint. Number 30 Optional
    target_zone The name of the zone in the infrastructure map in which your monitored hosts appear. String N/A Optional
    metrics: enabled Set to true or false to enable or disable the metrics integration. Boolean true Optional
    metrics: entities A list of entities for metric integration. String N/A Required