Setting appropriate resource requests (and limits, when needed) keeps your ActiveGate instances stable and predictable. A stable, healthy ActiveGate ensures continuous gap‑free monitoring data.
This guide details sizing recommendations according to the deployment type, deployment size, and assumed workload.
We recommend to run two sets of ActiveGates for production deployments:
Using two sets of ActiveGates has several advantages:
When traffic increases beyond the capacity of your current ActiveGate deployment, you can scale in two ways:
Scale horizontally: Increase the number of ActiveGate replicas in your DynaKube configuration. This allows the Kubernetes Service to distribute incoming traffic across multiple ActiveGate instances.
Scale vertically: Increase CPU and memory resource requests for your ActiveGate replicas. Use the resource recommendations tables above as a starting point and adjust based on your actual throughput requirements. Adjust the requests first and then, if necessary, adjust the limits. Use CPU limits only if required by policy.
The following sections cover the four main deployment types: Kubernetes Platform Monitoring, OneAgent traffic routing and proxying, OTLP log ingestion, and combined log ingestion and OneAgent traffic routing. Identify your deployment type and apply the corresponding recommendations.
For each deployment type, we've organized recommendations according to the following cluster sizes: small, medium, and large.
| Cluster size | Pods | Nodes |
|---|---|---|
Small | <1,000 | Up to 25 |
Medium | 1,000–5,000 | Up to 100 |
Large | 5,000–20,000 | Up to 500 |
This guide does not cover environments with more than 20,000 pods; as a starting point, use the large cluster size guidance and gradually increase resources until stable gap-free monitoring is established.
Node count is a secondary sizing driver. For clusters beyond 500 nodes, contact Dynatrace Support for tailored recommendations.
This section provides sizing recommendations for the ActiveGate that handles Kubernetes Platform Monitoring, whether alone or in combination with Application Observability and Full-Stack Observability.
| Cluster size | CPU requests | CPU limits | Memory requests | Memory limits |
|---|---|---|---|---|
Small | 200m | 1000m | 6 GiB | 6 GiB |
Medium | 1000m | 2000m | 10 GiB | 10 GiB |
Large | 2000m | 4000m | 12 GiB | 12 GiB |
This section provides sizing recommendations for an ActiveGate that handles OneAgent traffic routing and proxying. If this ActiveGate should also handle log ingest via API, see Combined log ingestion and OneAgent traffic routing.
| Cluster size | CPU requests | CPU limits | Memory requests | Memory limits | Replicas |
|---|---|---|---|---|---|
Small | 250m | 1000m | 2 GiB | 2 GiB | 3 |
Medium | 500m | 2000m | 4 GiB | 4 GiB | 3 |
Large | 1000m | 4000m | 6 GiB | 6 GiB | 6 |
The sizing recommendations are based on representative workload testing:
This section provides sizing recommendations and throughput benchmarks for ActiveGates that handle log ingestion via the OTLP API endpoint.
| Cluster size | CPU requests | CPU limits | Memory requests | Memory limits | OTLP log throughput per replica |
|---|---|---|---|---|---|
Small | 250m | 1000m | 2 GiB | 2 GiB | 350 MB/min |
Medium | 500m | 2000m | 4 GiB | 4 GiB | 650 MB/min |
Large | 1000m | 4000m | 6 GiB | 6 GiB | 1,200 MB/min |
The sizing recommendations are based on representative workload testing:
x86_64).These resource configurations provide headroom for traffic spikes and replica failover during updates.
The sustained throughput values represent performance that meets all quality gates. Peak burst throughput may be higher for short durations.
This section provides sizing recommendations for an ActiveGate that handles both log ingestion and OneAgent traffic routing in a unified deployment. If your ActiveGate does not have any log ingestion via API, see OneAgent traffic routing and proxying.
Determine base configuration: Start with the base ActiveGate configuration for your cluster size from OneAgent traffic routing and proxying.
Calculate additional replicas for OTLP log traffic: Use the per-replica throughput values from OTLP log ingestion to calculate how many additional replicas your deployment needs: additional replicas = ceil(expected log traffic (MB/min) ÷ throughput per replica).
Add these replicas to your base configuration as calculated in step 1.
As an example, if your cluster generates 1,500 MB/min of OTLP log traffic and you're using the medium resource config (650 MB/min per replica): ceil(1,500 ÷ 650) = 3 additional replicas.
If you observe consistent resource exhaustion (CPU usage >80%, memory usage >85%, or frequent GC pauses), consider splitting the workload into separate ActiveGate deployments rather than continuously increasing resources for a single deployment. Separate deployments provide better isolation and independent scaling. For more information, see Deployment recommendations.
This section provides a reference benchmark for ActiveGate throughput when handling Log Agent traffic routing. The throughput values shown represent compressed log data volume and reflect the recommended operating maximum under sustained conditions.
How to use this benchmark:
| CPU requests | CPU limits | Memory resource requests | Memory resource limits | Sustained maximum throughput per replica |
|---|---|---|---|---|
500m | 2000m | 4Gi | 4Gi | 750 MB/min |
Actual throughput may vary depending on your infrastructure, OneAgent version, and workload composition. Monitor your ActiveGate instances and adjust resources based on observed performance.
Monitor your ActiveGate instances to ensure load is distributed appropriately and adjust your scaling strategy based on observed performance and resource utilization patterns.
This section describes how to monitor your ActiveGates and verify they're behaving as expected.
These symptoms indicate exhausted resources and potential data loss:
Gaps in monitoring data: ActiveGate collects different types of data independently (for example, Prometheus metrics, Kubernetes events, entities). If one collection task takes longer than one minute, only that data type experiences a gap for that window. Other collection tasks continue operating normally.
Heavy CPU throttling: Sustained high throttling means insufficient CPU. Heavy throttling can cause gaps. Minor throttling is usually harmless. If the throttling affects the pod serving the monitoring ActiveGate this can cause data gaps.
Out‑of‑memory kills: If the ActiveGate is OOM-killed, data becomes unavailable until it restarts. After a restart, repeated OOM kills are likely to occur.
Dynatrace provides two ready-made dashboards to help you observe your ActiveGate health: ActiveGate diagnostic overview and Kubernetes Monitoring Statistics. To access these, go to
Dashboards > Ready-made and search for the dashboard by name.
Additionally, you can use DQL to query the following platform metrics and build your own dashboards or notebooks.
| Indicator | When to act | Platform metrics for validation | Classic metrics for validation | Detail level |
|---|---|---|---|---|
CPU usage | Utilization consistently exceeds 85%: increase the CPU request. |
|
| ActiveGate pod |
CPU requests | Utilization consistently exceeds 85%: increase the CPU request. |
|
| ActiveGate pod |
CPU throttling | Throttling consistently exceeds 10%: increase the CPU request. Calculate by dividing |
|
| ActiveGate pod |
Memory working set | Usage consistently exceeds 80%: increase the memory requests. |
|
| ActiveGate pod |
Memory requests | Usage consistently exceeds 80%: increase the memory requests. |
|
| ActiveGate pod |
Restart count | After an OOM-based restart, promptly raise the configured memory to prevent recurrence. |
|
| ActiveGate pod |
OOM kills | Any OOM kills: increase memory limits to prevent restart cycles. |
|
| ActiveGate pod |
Processing duration | Pipeline execution consistently exceeds 50–60 seconds: increase the CPU request. Also depends on ingested data volume and other factors. |
|
| ActiveGate ID |
Garbage collection times | Increasing GC times indicate an under-provisioned ActiveGate. |
|
| ActiveGate ID |
Actual required resources increase with:
Dynatrace supports up to 1,000 pod exporters, with each exporter able to provide up to 1,000 metrics. If your environment approaches these limits, you'll need to increase the resources allocated to the ActiveGate to ensure reliable performance.
For high-volume Prometheus scraping, and for new deployments, we recommend the OpenTelemetry Collector.
This section provides an example manifest that includes two DynaKube resources that you can use to configure your ActiveGates.
It follows the deployment recommendation to use two sets of ActiveGates: one for Kubernetes Platform Monitoring, and one for OneAgent traffic routing and telemetry ingest. You can apply one or both manifests according to your deployment.
k8s-monitoring DynaKube resource handles Kubernetes platform monitoring, and is sized for a medium cluster (1,000–5,000 nodes).
It includes an optional (commented-out) configuration for Kubernetes Security Posture Management.agents DynaKube resource handles OneAgent traffic routing, and is sized for a large cluster (5,000–20,000 nodes).
It includes an optional (commented-out) configuration for OTLP log ingest, log monitoring, telemetry ingest, and the OTel Collector.Adjust requests (and limits if required) to fit your environment.
CPU limits are commented out. We recommend defining requests only so the ActiveGate can use additional CPU when available. If limits are required, set them equal to or higher than requests.
apiVersion: dynatrace.com/v1beta5kind: DynaKubemetadata:name: k8s-monitoringnamespace: dynatracespec:apiUrl: https://ENVIRONMENTID.live.dynatrace.com/apitokens: <SECRET NAME># Link to api reference for further information: https://docs.dynatrace.com/docs/ingest-from/setup-on-k8s/reference/dynakube-parametersactiveGate:capabilities:- kubernetes-monitoringresources:requests:cpu: 1000mmemory: 10Gilimits:# cpu: 2000mmemory: 10Gi#kspm:#mappedHostPaths:#- /boot#- /etc#- /proc/sys/kernel#- /sys/fs#- /sys/kernel/security/apparmor#- /usr/lib/systemd/system#- /var/lib#templates:#kspmNodeConfigurationCollector:#imageRef:#repository: public.ecr.aws/dynatrace/dynatrace-k8s-node-config-collector#tag: 1.5.2---apiVersion: dynatrace.com/v1beta5kind: DynaKubemetadata:name: agentsnamespace: dynatrace# Link to api reference for further information: https://docs.dynatrace.com/docs/ingest-from/setup-on-k8s/reference/dynakube-parametersspec:apiUrl: https://ENVIRONMENTID.live.dynatrace.com/apitokens: <SECRET NAME>metadataEnrichment:enabled: trueoneAgent:applicationMonitoring: {}activeGate:capabilities:- routing- debuggingresources:requests:cpu: 1000mmemory: 6Gilimits:# cpu: 4000mmemory: 6Gireplicas: 6#customProperties:#value: |#[otlp_ingest]#otlp_ingest_enabled = true#logMonitoring: {}#telemetryIngest:#protocols:#- jaeger#- otlp#- statsd#- zipkin#serviceName: telemetry-ingesttemplates:#logMonitoring:#imageRef:#repository: public.ecr.aws/dynatrace/dynatrace-logmodule#tag: <>#tolerations:#- effect: NoSchedule# key: node-role.kubernetes.io/master# operator: Exists#- effect: NoSchedule# key: node-role.kubernetes.io/control-plane# operator: Exists#otelCollector:#replicas: 1#imageRef:#repository: public.ecr.aws/dynatrace/dynatrace-otel-collector#tag: <tag>