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.yaml
andcollectors-values.yaml
files. - From the
operators-values.yaml
file, copy the snippet that includesappdynamics-smartagent
. These values are used to deploy theappdynamics-operators
Helm chart. - Keep this page open. You'll need to reference the
collectors-values.yaml
file in a later step.
- Add the operator values to your own
operator-values.yaml
file:- Create your own
operators-values.yaml
file on the machine connected to the Kubernetes cluster you want to monitor. Paste the copied snippet for
appdynamics-smartagent
under the global key into youroperators-values.yaml
file.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.yaml
file, copy the snippet that includesappdynamics-otel-collector
. These values are used to deploy theappdynamics-collectors
Helm chart.Installing the
appdynamics-collectors
Helm chart will add additional pods to your cluster. If you are using Prometheus® exporters such askube-state-metrics
andkube-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 theappdynamics
namespace. Add the followingmetric_relabel_configs
to each Prometheus scrape job:metric_relabel_configs: - source_labels: [namespace] separator: ; regex: (appdynamics) replacement: $1 action: drop
CODE
- Add the collector values to your own
collectors-values.yaml
file:- Create your own
collectors-values.yaml
file on the machine connected to the required Kubernetes cluster. Paste the copied snippet for
appdynamics-otel-collector
under the global key into thecollectors-values.yaml
file. 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: false
YML
- Create your own
Create the Splunk AppDynamics
namespace
where the Cisco AppDynamics Distribution of OpenTelemetry Collector will be installed:kubectl create namespace appdynamics
BASHFor 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-manager
and 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.yaml
BASHTo 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 --wait
BASH- 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.yaml
CODETo configure proxy settings for the Cisco AppDynamics Distribution of OpenTelemetry Collector, see Configure Proxy Settings.
- You must specify the
global.clusterId
parameter 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
appdynamics
namespace using the following command:kubectl get all -n appdynamics
CODECheck 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 20h
CODE
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®.