The Atatus Kubernetes Agent automatically discovers all namespaces and workloads upon installation. This guide outlines the various configuration options available to help you manage data collection, filter logs, and control pod scheduling across your cluster.

All configurations must be added to your atatus_values.yml file.

Configuration Options

Use the parameters below to customize the agent's behavior:

Option Description
license_key Your Atatus Infrastructure license key.
logs_enabled Set to true to enable log monitoring.
cluster_name A descriptive name to identify your Kubernetes cluster in the Atatus dashboard.
log_level The internal logging level for the Atatus agent (info, debug, warning, error).
container_include Allowlist of containers to monitor (both logs and metrics).
container_exclude Denylist of containers to exclude from monitoring (both logs and metrics).
container_include_metrics Allowlist of containers to collect metrics from.
container_exclude_metrics Denylist of containers to exclude from metric collection.
container_include_logs Allowlist of containers to collect logs from.
container_exclude_logs Denylist of containers to exclude from log collection.
container_include_log_lines Include specific log lines that match the provided regular expressions.
container_exclude_log_lines Exclude specific log lines that match the provided regular expressions.
daemonset Configures parameters for the agent's DaemonSet deployment.
tolerations Kubernetes tolerations allowing pods to be scheduled on nodes with matching taints.

General Configuration Example

Here is a comprehensive example demonstrating how to construct your atatus_values.yaml file:

copy
icon/buttons/copy
# atatus_values.yaml
atatus:
  license_key: "lic_infra_*************"
  logs_enabled: true
  cluster_name: "my-production-cluster"
  log_level: "info"

  # Include/Exclude by namespace
  container_include: kube:preprod kube:staging
  container_exclude: kube:prod

  # Include/Exclude metrics by container name
  container_include_metrics: name:my-app
  container_exclude_metrics: name:sidecar-proxy

  # Include/Exclude logs by image
  container_include_logs: image:my-app-image
  container_exclude_logs: image:fluentd

  # Log line filtering
  container_include_log_lines:
    - '(?i)error'
  container_exclude_log_lines:
    - '(?i)healthcheck'

daemonset:
  enabled: true
  tolerations:
    - operator: "Exists"

Filter Prefixes

Each include/exclude option accepts a value with a prefix that determines the filter type:

Prefix Matches By Example
kube: Kubernetes namespace kube:production
name: Container name name:my-app
image: Container image image:nginx

Container Include & Exclude Filtering

Use these options to include or exclude containers from both log and metric collection. You can filter by namespace, container name, or image.

copy
icon/buttons/copy
container_include: kube:preprod kube:staging
container_exclude: kube:prod
copy
icon/buttons/copy
container_include: name:my-app
container_exclude: name:sidecar-proxy
copy
icon/buttons/copy
container_include: image:nginx
container_exclude: image:fluentd

Container Metrics Filtering

Use these options to include or exclude containers from metric collection only. Log collection remains unaffected.

copy
icon/buttons/copy
container_include_metrics: name:my-app
container_exclude_metrics: name:sidecar-proxy
copy
icon/buttons/copy
container_include_metrics: kube:production
container_exclude_metrics: kube:testing

Container Logs Filtering

Use these options to include or exclude containers from log collection only. Metric collection remains unaffected.

copy
icon/buttons/copy
container_include_logs: name:my-app
container_exclude_logs: name:log-router
copy
icon/buttons/copy
container_include_logs: image:my-app-image
container_exclude_logs: image:fluentd

Log Line Filtering

You can reduce log volume by filtering container logs at the agent level. Use regular expressions to include or exclude specific log patterns.

  • To include log lines that match the regular expression (?i)error:

copy
icon/buttons/copy

  container_include_log_lines:
    - '(?i)error'
  • To exclude log lines that match the regular expression (?i)healthcheck:

copy
icon/buttons/copy

  container_exclude_log_lines:
    - '(?i)healthcheck'

Scheduling the Agent on Tainted Nodes

Kubernetes uses taints to restrict which pods can run on specific nodes (e.g., GPU or system nodes). To allow the Atatus Infrastructure Agent to run on tainted nodes, configure tolerations under the daemonset section in your atatus_values.yaml file.

To run the agent on every active node across your cluster, configure a wildcard toleration using the Exists operator:

copy
icon/buttons/copy
daemonset:
  enabled: true
  tolerations:
    - operator: "Exists"

Target Specific Node Pools

If you prefer to explicitly target specialized node pools instead of bypassing all taints, define selective tolerations.

copy
icon/buttons/copy
daemonset:
  enabled: true
  tolerations:
    # System node pools
    - key: "CriticalAddonsOnly"
      operator: "Exists"

    # GPU nodes
    - key: "sku"
      operator: "Equal"
      value: "gpu"
      effect: "NoSchedule"

    # Spot or preemptible nodes
    - key: "node.kubernetes.io/instance-type"
      operator: "Equal"
      value: "spot"
      effect: "NoSchedule"

    # Windows nodes (if applicable)
    - key: "node.kubernetes.io/os"
      operator: "Equal"
      value: "windows"
      effect: "NoSchedule"