This page describes the resource requirements, compatibility with different Kubernetes®-based software, and the specifications required to install Kubernetes and App Service Monitoring, which includes resources, clusters, namespaces, workloads, pods, persistent volume claims, configurations, and containers.

This document contains references to the cert-manager documentation. Cisco AppDynamics does not own any rights and assumes no responsibility for the accuracy or completeness of such third-party documentation.

Before You Begin

Before installing the Kubernetes and App Service Monitoring solution, ensure that you meet the following requirements:

  • Your account is set up on Cisco Cloud Observability. See Account Administration.
    Ensure that the tenant role is either Config Manager or Tenant Administrator.
  • You are connected to the cluster that you want to monitor.
  • You have administrator privileges on the monitored cluster to run the Helm chart commands.

Hardware Requirements

The default hardware settings are:

ComponentCPUMemorySupported PlatformsPer cluster or node

Cisco AppDynamics Distribution of OpenTelemetry Collector*

200m1024MiB
  • Linux AMD64
  • Linux ARM64
  • Windows 2019
Per node (Kubernetes DaemonSet)

Cisco AppDynamics Operator

200m128MiB
  • Linux AMD64
  • Linux ARM64
Per cluster (Kubernetes Deployment)

Cisco AppDynamics Smart Agent

350m512MiB
  • Linux AMD64
  • Linux ARM64
Per cluster (Kubernetes Deployment)
Cluster Collector1000m1000MiB
  • Linux AMD64
  • Linux ARM64
  • Windows 2019
Per cluster (Kubernetes Deployment)
Infrastructure Collector350m
  • 100MiB (Linux)
  • 300MiB (Windows)
  • Linux AMD64
  • Linux ARM64
  • Windows 2019
Per node (Kubernetes DaemonSet)
Log Collector

10m

150MiB
  • Linux AMD64
  • Linux ARM64
  • Windows 2019
Per node (Kubernetes DaemonSet)
Windows Exporter200m200MiB
  • Windows 2019
Per node (Kubernetes DaemonSet)

OpenTelemetry Operator for Kubernetes**

600m256MiB
  • Linux AMD64
  • Linux ARM64
Per cluster (Kubernetes Deployment)

*For throughput-specific details, see Performance and Scaling for the Cisco AppDynamics Distribution of OpenTelemetry Collector.
**OpenTelemetry Operator manager and Kube RBAC Proxy

Software Requirements

Kubernetes and App Service Monitoring is designed to run in hybrid (Linux and Windows) or Linux-only clusters. Kubernetes and App Service Monitoring requires:

NameURL

Cisco AppDynamics Distribution of OpenTelemetry Collector 

appdynamics/appdynamics-cloud-otel-collector:24.7.0-1639

Cisco AppDynamics Operator

appdynamics/appdynamics-cloud-operator:24.7.0-1475

Cisco AppDynamics Smart Agent 

appdynamics/appdynamics-smartagent:24.4.0-1960
Cluster Collector

appdynamics/appdynamics-cloud-k8s-monitoring:24.7.0-2057

Infrastructure Collector
  • appdynamics/infraagent-cnao:24.4.0-5170-ecs-amd64 (for ECS)
  • appdynamics/appdynamics-cloud-k8s-monitoring:24.7.0-2057 (for Kubernetes and Cloud Infrastructure)
kube-rbac-proxygcr.io/kubebuilder/kube-rbac-proxy:v0.15.0
Log Collectorappdynamics/appdynamics-cloud-log-collector-agent:24.4.0-1163
Windows Exporterghcr.io/prometheus-community/windows-exporter:0.23.1
OpenTelemetry Operator for Kubernetesghcr.io/open-telemetry/opentelemetry-operator/opentelemetry-operator:v0.89.0
ghcr.io/open-telemetry/opentelemetry-operator/target-allocator:0.89.0

Cluster Support

Linux ClusterWindows and Linux Cluster
  • Amazon Elastic Kubernetes Service  <=1.28
  • Azure Kubernetes Service <=1.28
  • Red Hat OpenShift Service on AWS (ROSA) <= 4.13.14
  • Microsoft Azure for OpenShift <= 4.13
  • Self-managed OpenShift Container Platform (OCP) 4.11
  • Rancher Kubernetes Engine (RKE) <= 1.27
  • Rancher Kubernetes Engine Government (RKE2) <= 1.29 
  • Tanzu Kubernetes Grid Integrated Edition (TKGI) <= 1.18
  • Google Kubernetes Engine (GKE) <= 1.28


  • Containerd runtime for Windows nodes
  • Windows 2019 Server for Windows nodes 
  • Amazon Elastic Kubernetes Service  <=1.28

    Ensure that you use separate IAM roles for Linux and Windows node.

  • Azure Kubernetes Service <=1.28
  • Google Kubernetes Engine (GKE) <= 1.28


Cisco AppDynamics and OpenTelemetry Operators can run on Linux nodes only.

The k8s.cluster.id attribute is required to send MELT data for Kubernetes entities. By default, Cisco AppDynamics Helm charts and Collectors attach the k8s.cluster.id attribute to data from Cisco AppDynamics sources. To send data from third-party collectors, you must enrich your data with the k8s.cluster.id attribute. The k8s.cluster.id attribute must have a value equal to the UUID of the kube-system namespace.

In addition, for the Log Collector ensure your environment meets the Log Collector Requirements.

Install Kubernetes and App Service Monitoring Using Helm Charts

Cisco Cloud Observability provides a solution to monitor applications and Infrastructure with correlation. Perform the following steps to install Kubernetes and App Service Monitoring using Helm charts:

  1. Ensure that your environment conforms to the Software Requirements.
  2. From the Cisco Cloud Observability Tenant UI, navigate to Configure > Kubernetes and App Services. Enter your Credential set name and Kubernetes cluster name.
  3. Select the required collectors and operating systems under Enable Additional Configurations to generate the operator and collector values accordingly.
  4. Click Generate configuration file
    You must download the generated file to get inline documentation for all the collector settings in the configuration file in the form of comments. So, you can uncomment the parameters that you require without having to search for those in the documentation. The operator-values.yaml file gets generated along with the collectors-values.yaml file.

    The operator-values.yaml file looks similar to the following snippet:

    operator-values.yaml

    global:
       clusterName: <cluster-name> 
    appdynamics-smartagent:
       solution:
          endpoint: <endpoint>
       oauth:
          clientId: <client-ID>
          clientSecret: <client-secret>
          tokenUrl: <token-url>
          tenantId: <tenant-ID> 
    YML

    Installing the appdynamics-collectors Helm chart will add additional pods to your cluster. If you are using Prometheus® exporters such as kube-state-metrics and kube-eagle, which generate metrics for any added pods, the additional metrics may overwhelm your Prometheus server. To avoid that, you can change your scrapping configuration to drop the metrics from the appdynamics namespace. Add the following metric_relabel_configs to each Prometheus scrape job:

      metric_relabel_configs:
      - source_labels: [namespace]
        separator: ;
        regex: (appdynamics)
        replacement: $1
        action: drop 
    CODE
  5. Create the Cisco AppDynamics namespace where the Kubernetes and App Service Monitoring Solution is installed:

    kubectl create namespace appdynamics
    
    BASH
  6. For Kubernetes, the webhook requires a TLS certificate for the API server to communicate with the webhook component of OpenTelemetry Operator in the Cisco AppDynamics Operators Helm chart. The API server must then be configured for the OpenTelemetry Operator. The simplest option is to install cert-manager and allow it to generate a self-signed certificate automatically:

    kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.14.4/cert-manager.yaml
    BASH

    To manually generate a certificate see Provision a TLS Certificate for the OpenTelemetry Operator.

  7. Add the helm repo:

    helm repo add appdynamics-cloud-helmcharts https://appdynamics.jfrog.io/artifactory/appdynamics-cloud-helmcharts/ 
    BASH
  8. Install the Cisco AppDynamics Operators using operators-values.yaml:

    If you have already installed your own OpenTelemetry Operator, you must disable the one bundled in Cisco AppDynamics Operators. See Disable the OpenTelemetry Operator.

    helm install appdynamics-operators appdynamics-cloud-helmcharts/appdynamics-operators -n appdynamics -f operators-values.yaml --wait
    BASH


  9. Install the Cisco AppDynamics Collectors using collectors-values.yaml.
    Based on your requirement,  you can choose to configure the collectors-values.yaml file, then use the following command to install the collectors.

  10. Validate the installation:

    Check K8s pods in appdynamics namespace using the following command: 

    kubectl get all -n appdynamics
    BASH

    This is a sample output with the validation:

    ME                                                                  READY   STATUS    RESTARTS   AGE
    pod/appdynamics-collectors-appdynamics-clustermon-68756cb9d6-hhjwn    1/1     Running   0          3m17s
    pod/appdynamics-collectors-appdynamics-inframon-fkfh6                 1/1     Running   0          3m17s
    pod/appdynamics-collectors-appdynamics-otel-co-collector-9j6k7        1/1     Running   0          54s
    pod/appdynamics-operators-appdynamics-cloud-operator-669f8f6d4b5b6q   2/2     Running   0          3m42s
    pod/opentelemetry-operator-controller-manager-5cb47c7666-dfplr        2/2     Running   0          3m42s
    pod/appdynamics-operators-appdynamics-smartagent-7888448b58-vz4fm     1/1     Running   0          3m42s
    NAME                                                                      TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                       AGE
    service/appdynamics-cloud-operator-metrics-service                        ClusterIP   10.109.232.54    <none>        8443/TCP                      3m42s
    service/appdynamics-collectors-appdynamics-otel-co-collector              ClusterIP   10.97.70.222     <none>        4318/TCP,4317/TCP,55679/TCP   54s
    service/appdynamics-collectors-appdynamics-otel-co-collector-headless     ClusterIP   None             <none>        4318/TCP,4317/TCP,55679/TCP   54s
    service/appdynamics-collectors-appdynamics-otel-co-collector-monitoring   ClusterIP   10.106.157.16    <none>        8888/TCP                      54s
    service/appdynamics-otel-collector-service                                ClusterIP   10.100.41.15     <none>        4318/TCP,4317/TCP,55679/TCP   3m20s
    service/opentelemetry-operator-controller-manager-metrics-service         ClusterIP   10.102.222.204   <none>        8443/TCP,8080/TCP             3m42s
    service/opentelemetry-operator-webhook-service                            ClusterIP   10.99.26.174     <none>        443/TCP                       3m42s
    NAME                                                                  DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
    daemonset.apps/appdynamics-collectors-appdynamics-inframon            1         1         1       1            1           <none>          3m17s
    daemonset.apps/appdynamics-collectors-appdynamics-otel-co-collector   1         1         1       1            1           <none>          54s
    NAME                                                               READY   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/appdynamics-collectors-appdynamics-clustermon      1/1     1            1           3m17s
    deployment.apps/appdynamics-operators-appdynamics-cloud-operator   1/1     1            1           3m42s
    deployment.apps/opentelemetry-operator-controller-manager          1/1     1            1           3m42s
    deployment.apps/appdynamics-operators-appdynamics-smartagent       1/1     1            1           3m42s
    NAME                                                                          DESIRED   CURRENT   READY   AGE
    replicaset.apps/appdynamics-collectors-appdynamics-clustermon-68756cb9d6      1         1         1       3m17s
    replicaset.apps/appdynamics-operators-appdynamics-cloud-operator-669f8f6d49   1         1         1       3m42s
    replicaset.apps/opentelemetry-operator-controller-manager-5cb47c7666          1         1         1       3m42s
    replicaset.apps/appdynamics-operators-appdynamics-smartagent-7888448b58       1         1         1       3m42s 
    CODE

Next Steps

Monitor Kubernetes Entities

Use the Cisco Cloud Observability UI to Monitor Your Kubernetes Entities.

Application Performance Monitoring

Choose the appropriate workflow from Application Performance Monitoring based on your environment. 

Log Collection

Log Collection is inactive by default. Use the Log Ingestion instructions if you require them.

Event Monitoring 

You can observe the event severity for the entities with the details on Cisco Cloud Observability UI. See Kubernetes Events Collection.

Advanced Install and Configuration

Refer to the following pages for advanced settings for Helm charts and APM auto-instrumentation:

Upgrade or Uninstall Kubernetes Full-Stack Monitoring

OpenTelemetry™ and Kubernetes® (as applicable) are trademarks of The Linux Foundation®.