Type to search.

Kubelet stats receiver

Serverless Observability

Elastic Cloud Serverless projects are autoscaled environments, fully managed by Elastic and available on Elastic Cloud.

Availability

  • Generally available

    This functionality is generally available and ready for production usage.

Stack

The Elastic Stack includes Elastic's core products such as Elasticsearch, Kibana, Logstash, and Beats.

Availability

  • Generally available

    This functionality is generally available and ready for production usage.

Unless stated otherwise on the page, this functionality is available when your Elastic Stack is deployed on Elastic Cloud Hosted, Elastic Cloud Enterprise, Elastic Cloud on Kubernetes, and self-managed environments.

This documentation corresponds to the latest patch available for each minor version. If you're not using the latest patch, check the release notes for changes.

The Kubelet stats receiver collects Kubernetes node, pod, container, and volume metrics directly from the Kubelet API. It is enabled by default in several Elastic Observability Kubernetes pipelines and is a core component of Elastic Agent.

This receiver queries the Kubelet's /stats/summary endpoint and converts the retrieved usage statistics into OpenTelemetry metrics. When configured, it automatically surfaces pre-built dashboards in Elastic Observability for visualizing node CPU and memory usage, pod throttling, container metrics, and network/filesystem usage.

For full contrib details, refer to the OpenTelemetry kubeletstats receiver documentation.

Use the Kubelet stats receiver when you need:

  • CPU, memory, network, and filesystem metrics for Kubernetes nodes.

  • Fine-grained container CPU/memory usage for workloads running on each node.

  • Filesystem and ephemeral storage usage for pods and containers.

  • To combine node- and pod-level metrics with logs and traces to troubleshoot performance issues, resource saturation, and pod eviction behavior.

The following example shows a minimal Kubelet stats receiver configuration in an Elastic Agent pipeline.

YAML
receivers:
  kubeletstats:
    auth_type: serviceAccount
    collection_interval: 30s
    endpoint: "${KUBELET_ENDPOINT}"
    insecure_skip_verify: true
    metric_groups:
      - node
      - pod
      - container
      - volume

processors:
  batch: {}

exporters:
  otlp:
    endpoint: ${OTEL_EXPORTER_OTLP_ENDPOINT}

service:
  pipelines:
    metrics:
      receivers: [kubeletstats]
      processors: [batch]
      exporters: [otlp]
  1. for example: https://$NODE_IP:10250
  2. or configure proper TLS

The following configuration parameters determine how the Kubelet stats receiver interacts with the Kubelet API and which metric groups are collected:

Setting Description
auth_type Authentication mechanism for talking to the Kubelet. Typically serviceAccount when the Collector runs as a DaemonSet.
endpoint The Kubelet’s secure API endpoint, usually https://<node-ip>:10250.
collection_interval How frequently the receiver scrapes Kubelet metrics.
metric_groups Controls which metric groups to collect (node, pod, container, volume).
insecure_skip_verify Whether to skip TLS certificate verification. For production, configure proper TLS if possible.

For all available settings, refer to the contrib configuration documentation.

In Elastic Agent, the Kubelet stats receiver is typically used when:

  • The Collector is deployed as a DaemonSet, scraping each node’s Kubelet locally.
  • You want per-node and per-pod usage metrics without installing additional agents.
  • The kubernetes or system metrics pipelines need pod-level resource context.

Elastic Agent applies no custom modifications to the contrib receiver (its behavior is identical to contrib). It is pre-included and validated as supported within the Elastic Agent distribution.

When you run Elastic Agent as a DaemonSet, you can enable the Kubelet stats receiver with a minimal configuration like this:

YAML
receivers:
  kubeletstats:
    auth_type: serviceAccount
    metric_groups: [node, pod, container]

This configuration collects:

  • Node CPU and memory usage
  • Pod throttling
  • Container memory working set
  • Network and filesystem usage per node, pod, and container

Consider the following when deploying the Kubelet stats receiver:

  • RBAC and TLS must be configured properly. When running as a DaemonSet, the service account usually has the needed permissions.

  • Very low collection_interval values can increase Kubelet load.

  • Metrics for ephemeral containers may not always appear depending on underlying Kubernetes version behavior.

  • The receiver scrapes only the local node’s Kubelet when running as a DaemonSet. For centralized scraping, you must expose each node’s Kubelet securely (not recommended).