Telemetry Data Requirements for Infrastructure Monitoring

SigNoz Cloud - This page applies to SigNoz Cloud editions.
Self-Host - This page applies to self-hosted SigNoz editions.

Overview

The Infrastructure Monitoring depends on a set of resource attributes and metric types. When those attributes are missing or mis-typed, SigNoz cannot link list views (Hosts, Pods, Nodes, Deployments, etc.) with their details and queries fail silently. Use this guide to verify the required attributes, understand data source dependencies, and identify platform-specific gaps.

Prerequisites

  • Host and Kubernetes workloads must export metrics to SigNoz through an OpenTelemetry (OTel) Collector or a supported agent.
  • For Kubernetes, you need both cluster-level metrics (from the OTel k8s_cluster receiver) and per-node kubelet metrics (from the OTel kubeletstats receiver). Missing either source breaks entity resolution.

Mandatory attributes and required metrics

Hosts

  • Required attributes: host.name (unique per host). Recommended: host.id as a reliable fallback when hostnames collide (cloned VMs, ephemeral EC2 instances).
  • Required metrics (hostmetrics receiver):
    • system.cpu.time (with state attribute for non-idle / idle / wait)
    • system.memory.usage (with state for used / total)
    • system.filesystem.usage (with state for used / total)
    • system.cpu.load_average.15m
  • A host is reported as ACTIVE if any one of the above arrives within the last 10 minutes.
  • Setup:

Pods

  • Required attributes: k8s.pod.name, k8s.pod.uid, k8s.namespace.name, k8s.cluster.name. The pod UID is required because the Pod Counts by Phase query uses it for deduplication.
  • Required metrics:
    • From kubeletstats: k8s.pod.cpu.usage, k8s.pod.cpu_request_utilization, k8s.pod.cpu_limit_utilization, k8s.pod.memory.working_set, k8s.pod.memory_request_utilization, k8s.pod.memory_limit_utilization
    • From k8s_cluster: k8s.pod.phase
  • Setup:

Containers

  • Required attributes: k8s.container.name, k8s.pod.uid, k8s.pod.name, k8s.namespace.name, k8s.cluster.name. container.image.name and container.image.tag populate the Image:Tag column but aren't required for the row to appear.
  • Required metrics:
    • From kubeletstats: container.cpu.usage, container.memory.working_set, k8s.container.cpu_request_utilization, k8s.container.cpu_limit_utilization, k8s.container.memory_request_utilization, k8s.container.memory_limit_utilization
    • From k8s_cluster: k8s.container.ready, k8s.container.restarts
  • Setup:

Nodes

  • Required attributes: k8s.node.name, k8s.cluster.name.
  • Required metrics:
    • From kubeletstats: k8s.node.cpu.usage, k8s.node.memory.working_set
    • From k8s_cluster: k8s.node.allocatable_cpu and k8s.node.allocatable_memory (both disabled by default, enable via allocatable_types_to_report: [cpu, memory]), k8s.node.condition_ready, k8s.pod.phase (for the Pod Counts by Phase column)
  • Setup:

Namespaces

Clusters

  • Required attributes: k8s.cluster.name.
  • Required metrics:
    • From kubeletstats: k8s.node.cpu.usage, k8s.node.memory.working_set
    • From k8s_cluster: k8s.node.allocatable_cpu and k8s.node.allocatable_memory (both disabled by default, enable via allocatable_types_to_report: [cpu, memory]), k8s.node.condition_ready, k8s.pod.phase
  • Setup:

Deployments

  • Required attributes: k8s.deployment.name, k8s.namespace.name, k8s.cluster.name.
  • Required metrics:
    • From kubeletstats: k8s.pod.cpu.usage, k8s.pod.cpu_request_utilization, k8s.pod.cpu_limit_utilization, k8s.pod.memory.working_set, k8s.pod.memory_request_utilization, k8s.pod.memory_limit_utilization
    • From k8s_cluster: k8s.deployment.available, k8s.deployment.desired, k8s.pod.phase
  • Setup:

StatefulSets

  • Required attributes: k8s.statefulset.name, k8s.namespace.name, k8s.cluster.name.
  • Required metrics:
    • From kubeletstats: k8s.pod.cpu.usage, k8s.pod.cpu_request_utilization, k8s.pod.cpu_limit_utilization, k8s.pod.memory.working_set, k8s.pod.memory_request_utilization, k8s.pod.memory_limit_utilization
    • From k8s_cluster: k8s.statefulset.current_pods, k8s.statefulset.desired_pods, k8s.pod.phase
  • Setup:

DaemonSets

  • Required attributes: k8s.daemonset.name, k8s.namespace.name, k8s.cluster.name.
  • Required metrics:
    • From kubeletstats: k8s.pod.cpu.usage, k8s.pod.cpu_request_utilization, k8s.pod.cpu_limit_utilization, k8s.pod.memory.working_set, k8s.pod.memory_request_utilization, k8s.pod.memory_limit_utilization
    • From k8s_cluster: k8s.daemonset.current_scheduled_nodes, k8s.daemonset.desired_scheduled_nodes, k8s.pod.phase
  • Setup:

Jobs

  • Required attributes: k8s.job.name, k8s.namespace.name, k8s.cluster.name.
  • Required metrics:
    • From kubeletstats: k8s.pod.cpu.usage, k8s.pod.cpu_request_utilization, k8s.pod.cpu_limit_utilization, k8s.pod.memory.working_set, k8s.pod.memory_request_utilization, k8s.pod.memory_limit_utilization
    • From k8s_cluster: k8s.job.active_pods, k8s.job.successful_pods, k8s.job.failed_pods, k8s.job.desired_successful_pods, k8s.pod.phase
  • Setup:

Volumes

  • Required attributes: k8s.persistentvolumeclaim.name, k8s.namespace.name, k8s.cluster.name.
  • Required metrics:
    • From kubeletstats: k8s.volume.capacity, k8s.volume.available, k8s.volume.inodes, k8s.volume.inodes.used, k8s.volume.inodes.free
  • Volume Used is a computed value (capacity − available), not a separate metric.
  • Setup:

Data source dependencies

SigNoz Infrastructure Monitoring uses three OpenTelemetry receivers: the hostmetrics receiver emits system.* metrics from each host; the kubeletstats receiver, deployed on each node, scrapes per-pod, per-node, per-container, and per-volume metrics from the local kubelet; the k8s_cluster receiver, deployed as a singleton, scrapes the Kubernetes API server for workload-controller status, pod phase, node conditions, and allocatable values.

Troubleshooting checklist

  1. Verify required attributes: Use the Metrics Explorer to query k8s.pod.cpu.usage or system.cpu.time and confirm that host.name, [entity].uid, and [entity].name labels exist and are populated.
  2. Confirm Metrics Data Sources: Ensure both cluster-level and kubelet scrape jobs are enabled.
  3. Check if kubelet scraping is allowed on the platform.

Next Steps

Last updated: August 03, 2026

Edit on GitHub

Was this page helpful?

Your response helps us improve this page.