4.4.0 - March 23, 2026
4.4.0 - March 23, 2026
Ephemeral Storage metrics
Ephemeral Storage metrics
- Enables support for ephemeral storage analysis and recommendations
Node Group Detection
Node Group Detection
- Kubernetes labels
- OpenShift machine sets
- Node roles
4.3.0 - November 28, 2025
4.3.0 - November 28, 2025
Google Managed Prometheus (GMP) Support
Google Managed Prometheus (GMP) Support
- GKE Autopilot Compatibility—GMP is now fully supported, enabling data collection from GKE Autopilot clusters where traditional Prometheus deployments are not possible.
- Managed Service Integration—Leverages Google’s managed Prometheus service for seamless data collection without requiring in-cluster Prometheus installations.
Enhanced Job Configuration
Enhanced Job Configuration
- backoffLimit Support—The data collector now supports configuring
backoffLimitfor both Job and CronJob resources, providing better control over retry behavior when data collection encounters transient failures.
4.2.2 - June 16, 2025
4.2.2 - June 16, 2025
Added GPU Metrics
Added GPU Metrics
-
The following GPUÂ metrics are now collected for Containers:
- GPU Utilization in GPUs - Average Container*
- GPU Utilization in Percent - Average Container*
- GPU Memory Utilization in MB - Average Container*
- GPU Memory Utilization (%) - Average Container*
- GPU Power Usage (W) - Average Container*
- GPU Utilization in GPUs - Busiest Container
- GPU Utilization in Percent - Busiest Container
- GPU Memory Utilization in MB - Busiest Container
- GPU Memory Utilization (%) - Busiest Container
- GPU Power Usage (W) - Busiest Container
-
The following GPUÂ metrics are now collected for nodes:
Only those metrics indicated with an asterisk(*) are displayed in the current Kubex user interface. The remaining metrics will be covered in a future release.- GPU Utilization( GPUs)
- GPU Utilization(%)*
- GPU Memory Utilization (MB)
- GPU Memory Utilization (%)*
- GPU Power Usage (W)*
- GPU Requests (GPU)
- GPU Limit (GPU)
Updated Helm Charts
Updated Helm Charts
- All-In-One Kubex Collection Stack has been updated to version 0.9.8;
- The chart containing only the data forwarder has been updated to version 4.0.6.
- The metrics that are retained in Prometheus are now limited to only the metrics that Kubex requested. This change reduces the resources consumed by Prometheus, in large clusters.
- Both the pod security context and container security context are now set for all of the AIO chart components, including the Kubex data forwarder, Prometheus, Node exporter etc. This includes using the runtime default seccomp profile, running as a non-root user, no privileges for escalation, mounting the root file system as read-only, etc.
- A sizing option for Prometheus resources, has been added. The size is based on the cluster size.
- The Prometheus subchart has been updated to the latest version.
- The Prometheus scrape configuration has been updated to use the k8s endpointslice. The endpoints that the data forwarder was using were deprecated in the K8s v1.33 API and will be removed in a future release. Endpointslice has been available since K8s v1.21.
- Installation instructions for offline (or air-gapped) mode are now provided.
upgrade command.4.2.1 - May 29, 2025
4.2.1 - May 29, 2025
4.2.0 - May 15, 2025
4.2.0 - May 15, 2025
Collection of NVIDIA GPU Metrics
Collection of NVIDIA GPU Metrics
- NVIDIA-device-plugin—This plugin allows containers to access the NVIDIA GPUs. It must be installed on all your Kubernetes clusters to allocate NVIDIA GPU resources to workloads and to provide the GPUÂ data.
- dcgm-exporter—This Prometheus exporter exposes GPU metrics from the Data Center GPU Manager (DCGM). It is required to collect GPU data such as, utilization, memory usage, and power usage from NVIDIA GPUs, The dcgm-exporter can be deployed as a DaemonSet, where each node with an NVIDIA GPU runs a pod that exposes these metrics in a format that Prometheus can scrape and the Kubex data forwarder then collects.
- AKS
- EKS
- GKE
HPA Updates
HPA Updates
Updated Kubex Collection Stack
Updated Kubex Collection Stack
- image: densify/container-optimization-data-forwarder:4
- imagePullPolicy: Always
4.1.3 - April 1, 2025
4.1.3 - April 1, 2025
4.1.2 - March 17, 2025
4.1.2 - March 17, 2025
Collection of New Metrics
Collection of New Metrics
- Horizontal Pod Autoscaler (HPA) target metrics—Three new attributes have been added.
- hpa_target_metric_name
- hpa_target_metric_type
- hpa_target_metric_value
- Node taints—The configuration attribute and new metrics will be collected:
- Added the multi-value attribute, “Node Taints†(attr_NodeTaints)
- QoS class—The configuration attribute and new metrics will be collected.
- Added the attribute, Quality of Service Class†(attr_QOSClass)
- Node Working Set Memory Metrics—Working set memory is a process (or container) metric, rather than a node metric. It has been added to align with what is already shown in the AKS console. Kubex provides the following additional node memory metrics:
- working set memory (in bytes)
- working set memory utilization (percent)
- memory utilization (percent) (based on memory_bytes metric)
- memory actual utilization (percent) (based on memory_actual_workload metric)
- total node memory (in bytes) (configuration attribute)
Updated Node Identification
Updated Node Identification
provider_id has been introduced as a third identification component. Currently, nodes are identified using cluster_name and node_name.The provider_id is optional and will be used only if required. In Kubernetes clusters without aprovider_id, node identification will continue to rely on cluster_name and node_name, ensuring that node IDs remain unchanged.Specifically, for EKS and OKE clusters, existing node IDs will change and as a result, node history will be lost since these nodes will receive new IDs.Updated Configuration Setting
Updated Configuration Setting
node_group_list has been updated to add label_karpenter_sh_nodepool. When enabled, Karpenter NodeGroups are discovered and created in Kubex.4.1.1 - November 27, 2024
4.1.1 - November 27, 2024
4.1.0 - September 19, 2024
4.1.0 - September 19, 2024
New Container Metrics
New Container Metrics
- max_cpu_throttling_percent—The Linux kernel allocates “CPU periods” (default = 100 milliseconds) to both processes and containers. The percentage is the number of throttled periods out of the total number of 100-ms periods. This value is a percentage of periods that were throttled vs those that were requested. This provides a more accurate indication of resource limitations. For example if the pod was throttled for 8 seconds out of the 5 minutes, this would be 2.7%, but if the CPU was not actually requested for the full 5 minutes, then the 2.7% is not an accurate representation of the state of the container. If the pod was throttled for 8 seconds, and it’s request was less that than the 300 seconds the throttled percentage is higher.
- avg_cpu_throttling_percent—Indicates the average percentage of the number of 100-ms periods that a container is throttled in terms of CPU usage. The average and maximum values are collected since the container is likely aggregated. Metrics are aggregated at the highest level of the pod owner. For a deployment of one pod in one container the average and maximum will be the same. If it is a deployment of 10 pods then the average and maximum will not be the same.
- sum_cpu_throttling_seconds—Aggregates the total time during which throttling has been applied.
- Container Events—These are not metrics that are collected at 5-minute intervals, but are individual events and the time that the event occurred or was detected. In this version of the data forwarder “process exit” is now collected. The exit code and whether or not this is the main process (i.e. PIDÂ #1 using a true/false flag) of the container is collected and stored. In this version process exit will be false only when PIDÂ #1 exits with code 137 which corresponds to an OOM kill. In all other cases, process exit will be true.
- CPUÂ Limit—The defined CPUÂ allocation limit for the container.
- Memory Limit—The defined memory allocation limit for the container.
- CPUÂ Request—The defined CPU allocation requested for the container.
- Memory Request—The defined memory allocation requested for the container.
Node-Level Metrics
Node-Level Metrics
- CPUÂ Limit—The defined CPUÂ allocation limit for the node.
- Memory Limit—The defined memory allocation limit for the node.
- CPUÂ Request—The defined CPU allocation requested for the node.
- Memory Request—The defined memory allocation requested for the node.
- Pod Count—The number of pods running on the selected node.
- oom_kill_events—The number of kill events that happened on the node in a 5-minute interval;
- cpu_throttling_events—The number of CPUÂ throttling events that happened on the node in a 5-minute interval;
- cpu_reservation_percent—The percentage of the node’s total CPU resources that are reserved or guaranteed for workloads, containers, or virtual machines.
- memory_reservation_percent—The percentage of the node’s total memory resources that are reserved or guaranteed for workloads, containers, or virtual machines.
- provider_ID—The provider_id is available as a Prometheus label of kube_node_info metric which is extracted to its own column in the k8s_node_v0 postgres table. The relevant node data is then used to facilitate link the Kubernetes node to a cloud instance. This linking will be done in postgres, as will the determination of the relationship between cloud instance and ASGs or VMÂ Scale Sets.
- k8s_version—The Kubernetes version of the node is collected and stored in the attribute, k8s_node. This value is collected for each node and for the cluster. This is currently informational only and is not used not used in the analysis.
Cluster-Level Metrics
Cluster-Level Metrics
Linking Containers to Node Groups
Linking Containers to Node Groups
4.0.0 - May 28, 2024
4.0.0 - May 28, 2024
- image: densify/container-optimization-data-forwarder:4
- imagePullPolicy: Always
Supported Third Party Observability Platforms
Supported Third Party Observability Platforms
- HTTP basic authentication—Supported by Prometheus and is required by some commercial observability platforms, i.e. Grafana Cloud;
- Bearer token—Required by OpenShift Monitoring and some commercial observability platforms, i.e. Azure Monitor;
- AWS SigV4—Required by Amazon Managed Service for Prometheus.
- AWS Managed Prometheus data ingestion requires Prometheus v2.26.0 or higher.
- Starting with version 16.0, the Prometheus chart requires Helm 3.7 or higher, to install successfully.
- Amazon Managed Service for Prometheus (AMP)—Refer to the AWS website for details on AMP. Kubex requires a specially configured role. See Container Data Collection Using Amazon Managed Prometheus for configuration examples.
- Azure Monitor Managed Service for Prometheus (AzMP)—Refer to the Azure website for details. Kubex automates the process of acquiring and get and refreshing security tokens. See Container Data Collection Using Azure Managed Service for Prometheus for a configuration example.
- Grafana Cloud—See Container Data Collection using Basic Authentication for a configuration example.
External Cluster Support
External Cluster Support
Multiple Kubernetes Clusters Support
Multiple Kubernetes Clusters Support
Added Memory Options for Container Data Collection
Added Memory Options for Container Data Collection
Other Features
Other Features
- HTTP retries have been added to the calls to the Prometheus API. This handles observability platform rate limiting.
- The data forwarder now handles the relabel configs of Node Exporter.
- Outdated Node Exporter metrics have been addressed.
- Utilizes improved Horizontal Pod Autoscaler metrics (autoscaling v2).
- The data forwarder has been upgraded to Go 1.22,
- Updated examples for both single and multiple cluster configurations are provided in the new Github repository.
End of Support Notice - Container Data Forwarder 3.x.x
End of Support Notice - Container Data Forwarder 3.x.x

