Skip to content

Proposal: Add new node-level system daemon metrics k8s.node.system_container.* #3531

@PlateauGao

Description

@PlateauGao

Area(s)

area:k8s

Propose new conventions

Description

I would like to propose a new set of semantic conventions to capture node-level system daemon metrics (e.g., kubelet, runtime, pods) exposed by the Kubelet Summary API via Summary.Node.SystemContainers.

Currently, these metrics represent cgroup-level resource trackers on the node but are different from standard application containers because they are not associated with any k8s Pod.

Following the discussion in opentelemetry-collector-contrib#46703, the consensus is to introduce a dedicated namespace (k8s.node.system_container.*) and a self-describing attribute (k8s.node.system_container.name) to cleanly separate these contexts.

Why current k8s.container.* namespace is not suitable

Using the existing k8s.container.* namespace for system containers is problematic because it:

  1. Violates Pod Assumptions: It mixes node-level daemon metrics with application container metrics under the same metric name.
  2. Breaks Downstream Queries: Users assume that k8s.container.* metrics always belong to a pod and will have standard pod-level fields (e.g., k8s.pod.name, k8s.namespace.name), while system containers do not have these fields.

Therefore, creating a new k8s.node.system_container.* namespace with a specific k8s.node.system_container.name attribute ensures we cleanly separate application container metrics from node-level daemon metrics.

Proposed Attribute

Key Stability Requirement Level Value Type Description Example Values
k8s.node.system_container.name Development Required string The name of the system container running on the K8s Node. kubelet; runtime; pods; misc

Proposed Metrics

Description: System container level metrics captured under the namespace k8s.node.system_container.

Metric: k8s.node.system_container.cpu.usage

Name Instrument Type Unit (UCUM) Description Stability Entity Associations
k8s.node.system_container.cpu.usage Gauge {cpu} Node's system container CPU usage, measured in cpus. Development [k8s.node]

Attributes:

  • k8s.node.system_container.name (Required)

Metric: k8s.node.system_container.cpu.time

Name Instrument Type Unit (UCUM) Description Stability Entity Associations
k8s.node.system_container.cpu.time Counter s Node's system container CPU time. Development [k8s.node]

Attributes:

  • k8s.node.system_container.name (Required)

Metric: k8s.node.system_container.memory.working_set

Name Instrument Type Unit (UCUM) Description Stability Entity Associations
k8s.node.system_container.memory.working_set Gauge By The amount of working set memory. Development [k8s.node]

Attributes:

  • k8s.node.system_container.name (Required)

Tip

React with 👍 to help prioritize this issue. Please use comments to provide useful context, avoiding +1 or me too, to help us triage it. Learn more here.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Status

    Done

    Status

    Accepted

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions