This page provides a complete list of configurations for the appdynamics-cloud-k8s-monitoring subchart. For global settings, see Configure Cisco AppDynamics Kubernetes Collectors.

appdynamics-cloud-k8s-monitoring Configuration

You can include these configuration options under the appdynamics-cloud-k8s-monitoring key in the collectors-values.yaml file:

To reinstall or upgrade the collectors, see Upgrade or Uninstall Kubernetes and App Service Monitoring.

Install Switches Configuration

You can include the following configurations under the install key:

ParameterDescriptionRequiredDefaultReinstall Required

clustermon

Set this option to True if you are installing cluster monitoring.OptionaltrueNo
defaultInfraCollectorsSet this option to True if you are installing server and container monitoring.OptionaltrueNo
logCollectorSet this option to True if you are installing log collector monitoringOptionalfalseNo

Agent Management Configuration

You can include the following configurations under the agentManagementEnabled key:

ParameterDescriptionRequiredDefaultReinstall Required
clustermon

By default this value is set to true. This displays the cluster collector details in Agent Management page (Cisco Cloud Observability>Tools>Agent Management).

Optional

true

No
defaultInfraCollectorsBy default this value is set to true. This displays the Infrastructure collector details in Agent Management page (Cisco Cloud Observability>Tools>Agent Management).Optional

true

No
logCollectorBy default this value is set to true. This displays the log collector details in Agent Management page (Cisco Cloud Observability>Tools>Agent Management).Optional

true 

No

Role-Based Access Control (RBAC) Configuration

ParameterDescriptionRequiredDefaultReinstall Required

clustermonServiceAccount

The name of the service account to create for the Cluster Collector.Optional

appdynamics-clustermon

Yes

inframonServiceAccount

The name of the service account to create for the Infrastructure Collector.Optional

appdynamics-inframon

Yes

logCollectorServiceAccount

The name of the service account to create for the Log Collector.

Optional

appdynamics-log-collector

Yes

Collectors Configuration

ParameterDescriptionRequiredDefaultReinstall Required
Cluster Collector (include these configuration options under the clustermonConfig key)
logLevelThe log level of the collector.OptionalinfoNo
logFilesMaxSizeMbThe maximum size of one log file (in MB).Optional10No
logFilesNumBackupsThe maximum number of log files created before overwriting the oldest one.Optional4No
os

The operating system of the nodes on which Cluster Collector will be installed.

This can be either linux or windows.

Optional linuxNo

printToStdout

Whether Kubernetes® logs will report logs.OptionaltrueNo
filters

The filters that you can use for monitoring. You can include these filters:

  • namespace: The namespaces to be monitored.
  • entity: The entities that are excluded from monitoring.
  • label: The labels that are excluded from reporting.
  • annotation: The annotations that are excluded from reporting.
  • scopedFilter: The additional filter based on the scope of the entity.

When you filter namespaces using includeRegex and excludeRegex, cluster collector monitors the namespaces that matches both the filter conditions.
For example, to monitor all namespaces that start with kube except kube-system, you can specify the following in the filters.namespace section:

filters:
  namespace:
    includeRegex: "kube.*"
    excludeRegex: "kube-system"
CODE

To specify entity filters with a scope, use scopedFilters. Each scopedFilter can include the following parameters:

  • scope: You can apply filters on the entities based on the following scopes:
    • namespaceRegex: The filter will be applied only on entities in the namespaces that match this regex.
    • entityTypes: The filter will be applied only on entities that match this value. The applicable values are configmap, cronjob, daemonset, deployment, horizontalpodautoscaler, job, replicaset, replicationcontroller, secret, and statefulset.
  • entityFilter: You can use excludeRegex or excludeLabels to exclude the specific entities along with their child entities.
    For more information about using the configuration, see Example of Using the Configuration Options.
Optional
filters:
  namespace:
    includeRegex: ".*"
    excludeRegex: ""

  entity:
    excludeRegex: "kube-root-ca.crt|openshift-service-ca.crt"
    excludeLabels:

  label:
    excludeRegex: ""
 
  annotation:
    excludeRegex: ""
  
  scopedFilters: []

  
YML


No
ingressControllers

Configuration override for ingress controller labels and metrics port.

Optional
ingressControllers:
  nginx: 
    port: 10254
    labels: 
	  app.kubernetes.io/component: controller
	  app.kubernetes.io/instance: ingress-nginx
	  app.kubernetes.io/name: ingress-nginx
YML
No
events

The events that require collection. You can exclude the required events based on the severity (INFO, WARNING, SEVERE) and Kubernetes event reason.

You can create a custom event group classified as severe events. This classifies the events as severe based on the list of event reasons that you specify in the severeGroupByReason field.

Optional
events:
  enabled: true
  severityToExclude: []
  reasonToExclude: []
  severeGroupByReason: []
YML



No
configurations

This allows you to enable or disable monitoring Configurations (ConfigMap, Secret) 

By default this is enabled.

Optional
configurations:
  enabled: true
CODE
No
autoscalersThis allows you to enable or disable monitoring the auto scalers (HPA) 
By default this is enabled.
Optional
autoscalers:
  hpaVpaEnabled: true 
CODE

 

No
labelsThis allows you to enable or disable labels collection 
By default this is enabled.
Optional
labels:   
  enabled: true 
CODE

 

No
Infrastructure Collector (include these configuration options under the infraManagerConfig key)

logLevel

The log level of Infrastructure Collector.OptionalinfoNo

logFilesMaxSizeMb

The maximum size of one log file (in MB).Optional10No

logFilesNumBackups

The maximum number of log files created before overwriting the oldest one.Optional4No

printToStdout

Determines whether logs report through Kubernetes logs.OptionaltrueYes
Server Collector Configuration (include these configuration options under the servermonConfig key)
os

The operating system of the nodes on which the Server Collector will be installed.

This can be any of the following:

  •  [linux]
  • [windows] 
  • [linux, windows]
Optional[linux]No
exporterPortThe port used to start Node Exporter.Optional9100No

logLevel

The log level of the Server Collector.OptionalinfoNo

logFilesMaxSizeMb

The maximum size of one log file (in MB).Optional10No

logFilesNumBackups

The maximum number of log files created before overwriting the oldest one.Optional4No
env

To override the parameters mentioned in this table for a specific operating system. For example, if you want to set different logLevel for linux and Windows include the following:

env:
  linux:
    logLevel: info
  windows:
    logLevel: debug
CODE
Optional{ }No
Container Collector Configuration (include these configuration options under the containermonConfig key)
os

The operating system of the nodes on which the Container Collector will be installed.

This can be any of the following:

  •  [linux]
  • [windows] 
  • [linux, windows]
Optional[linux]No

logLevel

The log level of the Container Collector.
OptionalinfoNo

logFilesMaxSizeMb

The maximum size of one log file (in MB).Optional10No

logFilesNumBackups

The maximum number of log files created before overwriting the oldest one.Optional4No
env

To override the parameters mentioned in this table for a specific operating system. For example, if you want to set different logLevel for linux and Windows include the following:

env:
  linux:
    logLevel: info
  windows:
    logLevel: debug
CODE
Optional{ }No

To include the Log Collector configuration options, see Log Collector Settings.

Supported Kubernetes Configuration Options

Kubernetes supports the following parameters which are configurable through the collectors-values.yaml file:

Cluster Collector Pod Configuration 

You can include the following configuration options under the clustermonPod key in collectors-values.yaml:

Parameter

DescriptionRequiredDefaultReinstall Required
affinityAffinity for the pod.Optional{ }No
annotationsAnnotations for the pod.Optional{ }No
imageThe Cluster Collector image address in format: <registryUrl>/<registryAccount>/<project>:<tag>Optional

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

No
imagePullPolicyImage pull policy for the Cluster Collector pod.OptionalAlwaysNo
imagePullSecretsImage pull secrets for the pod.Optional[ ]No
labelsLabels for the pod.Optional{ }Yes
nodeSelectorNode selector for the pod.Optional
  • For Linux:
    kubernetes.io/os: linux
  • For Windows:
    kubernetes.io/os: windows
No
priorityClassNameThe name of the pod priority class, which is used in the pod specification to set the priority.OptionalNANo
resources

Resources you assign to the pod.

The default resource values are based on the deployment profiles described in Performance and Scaling for Kubernetes Collectors and Operators. For information on performance and scaling, review that page. 

Optional
limits:
  cpu: 1000m
  memory: 1000Mi
requests:
  cpu: 500m
  memory: 750Mi
YML
No
securityContextSecurity Context for the pod.Optional{ }No
tolerationsTolerations for the pod.Optional[ ]No

Windows Exporter Pod Configuration

Parameter

DescriptionRequiredDefault
affinityAffinity for the pod.Optional{ }No
annotationsAnnotations for the pod.Optional{ }No
imageThe Windows Exporter image address in format: <registryUrl>/<registryAccount>/<project>:<tag>Optionalghcr.io/prometheus-community/windows-exporter:0.23.1No
imagePullPolicyImage pull policy for the Windows Exporter pod.OptionalAlwaysNo
imagePullSecretsImage pull secrets for the pod.Optional[ ]No
labelsLabels for the pod.Optional{ }Yes
nodeSelectorNode selector for the pod.Optional
  • For Linux:
    kubernetes.io/os: linux
  • For Windows:
    kubernetes.io/os: windows
No
priorityClassNameThe name of the pod priority class, which is used in the pod specification to set the priority.OptionalNANo
resources

Resources you assign to the pod.

Optional
limits:
  cpu: 200m
  memory: 200Mi
requests:
  cpu: 100m
  memory: 100Mi
YML



No
securityContextSecurity Context for the pod.Optional{ }No
tolerationsTolerations for the pod.Optional[ ]No

Infrastructure Collector Pod Configuration 

You can include the following configuration options under the inframonPod key in collectors-values.yaml:

ParameterDescriptionRequiredDefaultReinstall Required
affinityAffinity for the pod.Optional{ }No
annotationsAnnotations for the pod.Optional{ }No
env

To override the parameters mentioned in this table for a specific operating system. For example, if you want to set different imagePullPolicy for linux and Windows include the following:

env:
  linux:
    imagePullPolicy: IfNotPresent
  windows:
    imagePullPolicy: Never
CODE
Optional


{ }

No
imageInfrastructure Collector image address in format: <registryUrl>/<registryAccount>/<project>:<tag>Optional

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

No
imagePullPolicyImage pull policy for the Infrastructure Collector pod.OptionalAlwaysNo
imagePullSecretsImage pull secrets for the pod.Optional[ ]No
labelsLabels for the pod.Optional{ }Yes
nodeSelectorNode selector for the pod.Optional
  • For Linux:
    kubernetes.io/os: linux
  • For Windows:
    kubernetes.io/os: windows
No
priorityClassNameThe name of the pod priority class, which is used in the pod specification to set the priority.OptionalNANo
resources

Resources you assign to the pod.

The default resource values are based on the deployment profiles described in Performance and Scaling for Kubernetes Collectors and Operators. For information on performance and scaling, review that page. 

Optional

For Linux:

limits:
  cpu: 350m
  memory: 100Mi
requests:
  cpu: 200m
  memory: 64Mi
YML

For Windows:

limits:
  cpu: 350m
  memory: 300Mi
requests:
  cpu: 200m
  memory: 150Mi
YML
No
securityContextSecurity Context for the pod.Optional{ }No
tolerations

Tolerations for the pod.

If you have used taints on any of the nodes in the cluster, ensure to add this configuration to monitor the nodes. For more information see Monitor Tainted Nodes

Optional[ ]No

Log Collector Pod Configuration

You can include the following configuration options under the logCollectorPod key in collectors-values.yaml:

ParameterDescriptionRequiredDefaultReinstall Required
annotationsAnnotations for the pod.Optional{ }No
affinityAffinity for the pod.Optional{ }No
env

To override the parameters mentioned in this table for a specific operating system. For example, if you want to set different imagePullPolicy for linux and Windows include the following:

env:
  linux:
    imagePullPolicy: IfNotPresent
  windows:
    imagePullPolicy: Never
CODE
Optional{ }No
imageLog Collector image address in format: <registryUrl>/<registryAccount>/<project>:<tag>Optional

appdynamics/appdynamics-cloud-log-collector-agent:24.4.0-1163


No
imagePullPolicyImage pull policy for the Log Collector pod.OptionalAlwaysNo
imagePullSecretsImage pull secrets for the pod.Optional[ ]No
labelsLabels for the pod.Optional{ }Yes
nodeSelectorNode selector for the pod.Optional
  • For Linux:
    kubernetes.io/os: linux
  • For Windows:
    kubernetes.io/os: windows
No
priorityClassNameThe name of the pod priority class, which is used in the pod specification to set the priority.OptionalNANo
resourcesResources you assign to the pod.Optional
limits:
  cpu: 400m
  memory: 300Mi
requests:
  cpu: 200m
  memory: 150Mi
YML
No
securityContextSecurity Context for the pod.Optional{ }No
tolerations

Tolerations for the pod.

If you have used taints on any of the nodes in the cluster, ensure to add this configuration to monitor the nodes. For more information see Monitor the Tainted Nodes

Optional[ ]No

Example of Using the Configuration Options

The following example outlines the use of all the configuration options the collectors chart provides:

global:
  clusterName: sampleCluster

appdynamics-cloud-k8s-monitoring:
  install:
    clustermon: true
    defaultInfraCollectors: true
    logCollector: false

  # RBAC config
  clustermonServiceAccount: appdynamics-clustermon
  inframonServiceAccount: appdynamics-inframon
  logCollectorServiceAccount: appdynamics-log-collector

  #Clustermon Configs
  clustermonConfig:
    logLevel: info
    logFilesMaxSizeMb: 10
    logFilesNumBackups: 4
    printToStdout: "true"

    filters:
      namespace:
        includeRegex: "dev.*"
        excludeRegex: "secure.*"
      entity:
        excludeRegex: "kube-root-ca.crt|openshift-service-ca.crt|counter.*"
        excludeLabels:
          - selector:
              version: v1
              env: prod
          - selector:
              version: v2
              env: dev
      label:
        excludeRegex: "pass.*|web.*"
      annotation:
        excludeRegex: "pass.*|web.*"
      scopedFilters:
        - scope:                                                
            namespaceRegex: ""                       
            entityTypes: [""]                            
        entityFilter:
          excludeRegex: ""                                  
        - scope:
            namespaceRegex: ""
            entityTypes: [""]
        entityFilter:
          excludeLabels:
          - owner: "helm" 

    ingressControllers:
      nginx:
        port: 10254
        labels:
          app.kubernetes.io/component: controller
          app.kubernetes.io/instance: ingress-nginx
          app.kubernetes.io/name: ingress-nginx

    events:
      enabled: true
      severityToExclude: [Normal]
      reasonToExclude: [BackOff, Started]
      severeGroupByReason: [Failed, Evicted]

  #Infrastructure Collector Configs
  infraManagerConfig:
    logLevel: info
    logFilesMaxSizeMb: 10
    logFilesNumBackups: 4
    printToStdout: "true"

  #Servermon Configs
  servermonConfig:
    logLevel: info
    logFilesMaxSizeMb: 10
    logFilesNumBackups: 4
    exporterPort: 9100
    
 #Containermon Configs
  containermonConfig:
    logLevel: info
    logFilesMaxSizeMb: 10
    logFilesNumBackups: 4
 
  #Log Collector Configs
  logCollectorConfig:    
    container:
      conditions:
        - condition:
            operator: equals
            key: kubernetes.container.name
            value: log-generator-logback
          messageParser:
            logback:
              enabled: true
              pattern: "%d{yyyy-MM-dd'T'HH:mm:ss.nnnnnnnnn} %p %C{1.} [%t] %m%n"
          multiLinePattern: '^[[:space:]]+(at|\.{3})[[:space:]]+\b|^Caused by:'
      monitoring:
        enabled: false

  #Deployment specific configs
  clustermonPod:
    image: appdynamics/appdynamics-cloud-k8s-monitoring:24.7.0-2057
    imagePullPolicy: IfNotPresent
    resources:
      limits:
        cpu: 200m
        memory: 128Mi
      requests:
        cpu: 100m
        memory: 64Mi
    labels:
      key1: "value1"
    annotations:
      key2: "value2"
    tolerations:
      - key: "key3"
        operator: "Exists"
        effect: "NoSchedule"
    nodeSelector:
      disktype: ssd
    imagePullSecrets:
      - name: aws-ecr-secret
    affinity:
      nodeAffinity:
        requiredDuringSchedulingIgnoredDuringExecution:
          nodeSelectorTerms:
            - matchExpressions:
                - key: key4
                  operator: In
                  values:
                    - value3
                    - value4
    securityContext:
      fsGroupChangePolicy: "OnRootMismatch"

  #Daemonset specific configs
  inframonPod:
    image: appdynamics/appdynamics-cloud-k8s-monitoring:24.7.0-2057         
    imagePullPolicy: IfNotPresent
    resources:
      limits:
        cpu: 200m
        memory: 128Mi
      requests:
        cpu: 100m
        memory: 64Mi
    labels:
      key1: "value1"
    annotations:
      key2: "value2"
    tolerations:
      - key: "key3"
        operator: "Exists"
        effect: "NoSchedule"
    nodeSelector:
      disktype: ssd
    imagePullSecrets:
      - name: aws-ecr-secret
    affinity:
      nodeAffinity:
        requiredDuringSchedulingIgnoredDuringExecution:
          nodeSelectorTerms:
            - matchExpressions:
                - key: key4
                  operator: In
                  values:
                    - value3
                    - value4
    securityContext:
      fsGroupChangePolicy: "OnRootMismatch"

  #Daemonset specific configs
  logCollectorPod:
    image: appdynamics/appdynamics-cloud-log-collector-agent:24.4.0-1163   
    imagePullPolicy: IfNotPresent
    resources:
      limits:
        cpu: 200m
        memory: 128Mi
      requests:
        cpu: 100m
        memory: 64Mi
    labels:
      key1: "value1"
    annotations:
      key2: "value2"
    tolerations:
      - key: "key3"
        operator: "Exists"
        effect: "NoSchedule"
    nodeSelector:
      disktype: ssd
    imagePullSecrets:
      - name: aws-ecr-secret
    affinity:
      nodeAffinity:
        requiredDuringSchedulingIgnoredDuringExecution:
          nodeSelectorTerms:
            - matchExpressions:
                - key: key4
                  operator: In
                  values:
                    - value3
                    - value4
      securityContext:
        fsGroupChangePolicy: "OnRootMismatch"
YML


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