Download PDF
Download page Kubernetes.
Kubernetes
This page describes how to use Helm charts to install the Cisco AppDynamics Distribution of OpenTelemetry Collector separately in a Kubernetes® cluster to monitor the health and performance of your Kubernetes infrastructure.
Splunk AppDynamics also provides a bundle that includes the Cisco AppDynamics Distribution of OpenTelemetry Collector as well as the full stack of components needed for Kubernetes and App Service Monitoring. To install the bundle, see Install Kubernetes and App Service Monitoring.
These are the high-level steps:
- Ensure that you meet the requirements in:
- Install the Cisco AppDynamics Distribution of OpenTelemetry Collector Using Helm Charts
- Validate the Installation
Before You Begin
Before you begin, ensure that you meet the following requirements:
- Your account is set up on Cisco Cloud Observability. See Account Administration.
- You are connected to the cluster that you want to monitor.
- You have administrator privileges on the monitored cluster to run Helm chart commands.
Hardware Requirements
The default hardware settings are:
| Component | CPU | Memory | Per cluster or node |
|---|---|---|---|
Cisco AppDynamics Distribution of OpenTelemetry Collector* | 200m | 1024MiB | Per node (Kubernetes DaemonSet) |
Splunk AppDynamics Operator | 200m | 128MiB | Per cluster (Kubernetes Deployment) |
OpenTelemetry Operator for Kubernetes** | 600m | 256MiB | Per cluster (Kubernetes Deployment) |
*For throughput-specific details, see Performance and Scaling for the Cisco AppDynamics Distribution of OpenTelemetry Collector.
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:
- Helm >= 3.8.0
Sufficient licenses. See License Management.
- OpenTelemetry Agent versions that are supported by Cisco Cloud Observability.
Access to Dockerhub to pull the Splunk AppDynamics Operator and Collector images for the Kubernetes and App Service Monitoring:
| Name | URL |
|---|---|
Cisco AppDynamics Distribution of OpenTelemetry Collector |
|
Splunk AppDynamics Operator | appdynamics/appdynamics-cloud-operator:24.2.0-1303 |
| kube-rbac-proxy | gcr.io/kubebuilder/kube-rbac-proxy:v0.13.1 |
| OpenTelemetry Operator for Kubernetes | ghcr.io/open-telemetry/opentelemetry-operator/opentelemetry-operator:v0.89.0 |
ghcr.io/open-telemetry/opentelemetry-operator/target-allocator:0.89.0 |
Cluster Support
| Linux Cluster | Windows and Linux Cluster |
|---|---|
|
|
Splunk 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, Splunk AppDynamics Helm charts and Collectors attach the k8s.cluster.id attribute to data from Splunk 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.
Install the Cisco AppDynamics Distribution of OpenTelemetry Collector Using Helm Charts
Obtain the name of your cluster:
- Log into the Cisco Cloud Observability UI.
- On the Observe page, click your cluster.
- In the Properties panel, copy the name of your cluster and save it to a text file.
- Obtain the values for the operator installation:
- Log into the Cisco Cloud Observability UI.
- Use the left-hand navigation panel to navigate to Configure > Kubernetes and APM.
- Under CONFIGURE DATA COLLECTORS, enter your credential set name and Kubernetes cluster name.
- Click Generate configuration file. This step generates the
operators-values.yamlandcollectors-values.yamlfiles. - From the
operators-values.yamlfile, copy the snippet that includesappdynamics-smartagent. These values are used to deploy theappdynamics-operatorsHelm chart. - Keep this page open. You'll need to reference the
collectors-values.yamlfile in a later step.
- Add the operator values to your own
operator-values.yamlfile:- Create your own
operators-values.yamlfile on the machine connected to the Kubernetes cluster you want to monitor. Paste the copied snippet for
appdynamics-smartagentunder the global key into youroperators-values.yamlfile.operators-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
- Create your own
Obtain the values for the collector installation:
Return to the Cisco Cloud Observability UI.
From the
collectors-values.yamlfile, copy the snippet that includesappdynamics-otel-collector. These values are used to deploy theappdynamics-collectorsHelm chart.Installing the
appdynamics-collectorsHelm chart will add additional pods to your cluster. If you are using Prometheus® exporters such askube-state-metricsandkube-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 theappdynamicsnamespace. Add the followingmetric_relabel_configsto each Prometheus scrape job:metric_relabel_configs: - source_labels: [namespace] separator: ; regex: (appdynamics) replacement: $1 action: dropCODE
- Add the collector values to your own
collectors-values.yamlfile:- Create your own
collectors-values.yamlfile on the machine connected to the required Kubernetes cluster. Paste the copied snippet for
appdynamics-otel-collectorunder the global key into thecollectors-values.yamlfile. Add the following configurations to disable the other collectors in the package.collectors-values.yaml
global: clusterName: <cluster-name> appdynamics-otel-collector: clientId: <client-ID> clientSecret: <client-secret> endpoint: <endpoint> tokenUrl: <token-url> appdynamics-cloud-k8s-monitoring: install: clustermon: false defaultInfraCollectors: false logCollector: false appdynamics-cloud-db-collector: install: dbCollector: false dbMonitoringConfigs: false appdynamics-security-collector: enabled: falseYML
- Create your own
Create the Splunk AppDynamics
namespacewhere the Cisco AppDynamics Distribution of OpenTelemetry Collector will be installed:kubectl create namespace appdynamicsBASHFor Kubernetes, the webhook requires a TLS certificate for the API server to communicate with the webhook component of OpenTelemetry Operator in the Splunk AppDynamics Operators Helm chart. The API server must then be configured for the OpenTelemetry Operator. The simplest option is to install
cert-managerand allow it to generate a self-signed certificate automatically:kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.8.0/cert-manager.yamlBASHTo manually generate a certificate, see Provision a TLS Certificate for the OpenTelemetry Operator.
Add the helm repo:
helm repo add appdynamics-cloud-helmcharts https://appdynamics.jfrog.io/artifactory/appdynamics-cloud-helmcharts/BASHInstall the Splunk AppDynamics Operators using using
operators-values.yaml:helm install appdynamics-operators appdynamics-cloud-helmcharts/appdynamics-operators -n appdynamics -f operators-values.yaml --waitBASH- To manually generate a certificate, see Provision a TLS Certificate for the OpenTelemetry Operator.
- To configure proxy settings for the Orchestration Client, see Configure Proxy Settings.
Install the Cisco AppDynamics Distribution of OpenTelemetry Collector using
collectors-values.yaml.helm install appdynamics-collectors appdynamics-cloud-helmcharts/appdynamics-collectors -n appdynamics -f collectors-values.yamlCODETo configure proxy settings for the Cisco AppDynamics Distribution of OpenTelemetry Collector, see Configure Proxy Settings.
- You must specify the
global.clusterIdparameter if the Helm lookup function is not supported, such as when using Argo CD™,helm template, andhelm install --dry-run. See Configure Cisco AppDynamics Kubernetes Collectors.
Validate the Installation
Check the Kubernetes pods in the
appdynamicsnamespace using the following command:kubectl get all -n appdynamicsCODECheck the output of the command to confirm if the installation was successfully completed. The following sample output shows a successful installation that enabled both Prometheus and the FileLog receiver:
NAME READY STATUS RESTARTS AGE pod/appd-cols-ds-appdynamics-otel-collector-collector-dqdkn 1/1 Running 0 5h13m pod/appd-cols-ds-appdynamics-otel-collector-collector-gzlj8 1/1 Running 0 5h13m pod/appd-cols-ss-appdynamics-otel-collector-collector-0 1/1 Running 0 5h13m pod/appd-cols-ss-appdynamics-otel-collector-collector-1 1/1 Running 0 5h13m pod/appd-cols-ss-appdynamics-otel-collector-collector-2 1/1 Running 0 5h13m pod/appd-cols-ss-appdynamics-otel-collector-collector-3 1/1 Running 0 5h13m pod/appd-cols-ss-appdynamics-otel-collector-targetallocator-f7hbshd 1/1 Running 0 20h pod/appdynamics-operators-appdynamics-cloud-operator-5986888779k2lh 2/2 Running 0 41d pod/appdynamics-operators-appdynamics-smartagent-6d84df96b6-96nbc 1/1 Running 0 41d pod/appdynamics-operators-opentelemetry-operator-56f7994dd6-lfrzd 2/2 Running 0 41d NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/appd-cols-ds-appdynamics-otel-collector-collector ClusterIP 10.96.185.11 <none> 4317/TCP,4318/TCP,14317/TCP,14318/TCP 20h service/appd-cols-ds-appdynamics-otel-collector-collector-headless ClusterIP None <none> 4317/TCP,4318/TCP,14317/TCP,14318/TCP 20h service/appd-cols-ds-appdynamics-otel-collector-collector-monitoring ClusterIP 10.96.151.120 <none> 8888/TCP 20h service/appd-cols-ss-appdynamics-otel-collector-collector ClusterIP 10.96.52.33 <none> 4317/TCP,4318/TCP,14317/TCP,14318/TCP 20h service/appd-cols-ss-appdynamics-otel-collector-collector-headless ClusterIP None <none> 4317/TCP,4318/TCP,14317/TCP,14318/TCP 20h service/appd-cols-ss-appdynamics-otel-collector-collector-monitoring ClusterIP 10.96.162.102 <none> 8888/TCP 20h service/appd-cols-ss-appdynamics-otel-collector-targetallocator ClusterIP 10.96.234.140 <none> 80/TCP 20h service/appdynamics-cloud-operator-metrics-service ClusterIP 10.96.36.55 <none> 8443/TCP 41d service/appdynamics-operators-opentelemetry-operator ClusterIP 10.96.233.189 <none> 8443/TCP,8080/TCP 41d service/appdynamics-operators-opentelemetry-operator-webhook ClusterIP 10.96.20.173 <none> 443/TCP 41d service/appdynamics-otel-collector-service ClusterIP 10.96.143.99 <none> 4318/TCP,4317/TCP,14317/TCP 20h service/appdynamics-otel-collector-service-ds ClusterIP 10.96.16.16 <none> 4318/TCP,4317/TCP,14317/TCP 20h service/appdynamics-otel-collector-service-ss ClusterIP 10.96.206.253 <none> 4318/TCP,4317/TCP,14317/TCP 20h NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE daemonset.apps/appd-cols-ds-appdynamics-otel-collector-collector 2 2 2 2 2 kubernetes.io/os=linux 20h NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/appd-cols-ss-appdynamics-otel-collector-targetallocator 1/1 1 1 20h deployment.apps/appdynamics-operators-appdynamics-cloud-operator 1/1 1 1 41d deployment.apps/appdynamics-operators-appdynamics-smartagent 1/1 1 1 41d deployment.apps/appdynamics-operators-opentelemetry-operator 1/1 1 1 41d NAME DESIRED CURRENT READY AGE replicaset.apps/appd-cols-ss-appdynamics-otel-collector-targetallocator-f78b9c54c 1 1 1 20h replicaset.apps/appdynamics-operators-appdynamics-cloud-operator-598688877b 1 1 1 41d replicaset.apps/appdynamics-operators-appdynamics-smartagent-6d84df96b6 1 1 1 41d replicaset.apps/appdynamics-operators-opentelemetry-operator-56f7994dd6 1 1 1 41d NAME READY AGE statefulset.apps/appd-cols-ss-appdynamics-otel-collector-collector 4/4 20hCODE
Next Steps
- Once the Cisco AppDynamics Distribution of OpenTelemetry Collector is deployed, it receives data from various data sources and forwards the data with annotations, performance optimizations, and authentications to the Cisco Cloud Observability backend. It then populates the Observe page with entity-centric pages (ECPs) for the respective data sources. You can now monitor the health and performance of your Kubernetes environment, including infrastructure, databases, and application services running in the environment.
- To configure applications instrumented with OpenTelemetry™ to send trace data to Cisco Cloud Observability, see Monitor Applications in Kubernetes.
This document contains references to third-party documentation. Splunk AppDynamics does not own any rights and assumes no responsibility for the accuracy or completeness of such third-party documentation.
OpenTelemetry™ and Kubernetes® (as applicable) are trademarks of The Linux Foundation®.