Host metrics are fundamental performance indicators collected directly from a system's operating system. These metrics provide granular visibility into the physical or virtual server's resource utilization and health status. Every host system in your environment - whether physical machines, virtual machines (VMs), cloud instances, or containerized nodes collects these metrics directly from its local operating system. The OpenTelemetry hostmetrics receiver collects metrics on CPU, memory, disk, network, paging, swap, and system performance.
For more information about the metrics collected by the hostmetrics receiver, see documentation here.
Step 1: Setup OpenTelemetry Collector on Your VM
To collect host metrics from virtual machines (VMs), setup the OpenTelemetry (OTel) collector on each VM and configure the hostmetrics receiver. In this step, you will create a config.yaml which enables the hostmetrics receiver.
Step 2: Configure Host Metrics Collection
The configuration file that you created in the first step enables the hostmetrics receiver. Make sure hostmetrics is added to the receivers and pipelines sections in your configuration file by checking if the below codeblocks are in your config.yaml file.
Receiver
receivers:
...
hostmetrics:
collection_interval: 60s
scrapers:
cpu: {}
disk: {}
load: {}
filesystem: {}
memory: {}
network: {}
paging: {}
process:
mute_process_name_error: true
mute_process_exe_error: true
mute_process_io_error: true
processes: {}
...
Pipelines
service:
pipelines:
...
metrics/internal:
receivers: [prometheus, hostmetrics]
processors: [resourcedetection, batch]
exporters: [otlp]
...
For a self-hosted setup, configure the hostmetrics receiver as shown below. Replace <endpoint> with the endpoint of your SigNoz collector.
receivers:
hostmetrics:
collection_interval: 60s # Frequency of metrics collection.
scrapers:
cpu: {}
load: {}
memory: {}
disk: {}
filesystem: {}
network: {}
processors:
resourcedetection:
detectors: [env, system]
system:
hostname_sources: [os]
resource/env:
attributes:
- key: deployment.environment
value: staging
action: upsert
extensions:
health_check:
zpages:
exporters:
otlp:
endpoint: "<endpoint>" # Your SigNoz collector endpoint.
tls:
insecure: true
service:
telemetry:
metrics:
address: 0.0.0.0:8888
extensions: [health_check, zpages]
pipelines:
metrics/hostmetrics:
receivers: [hostmetrics]
processors: [resourcedetection, resource/env]
exporters: [otlp]
Step 1: Deploy the SigNoz k8s-infra Helm Chart
To collect host metrics from your Kubernetes nodes, use the SigNoz k8s-infra Helm chart. This chart deploys an agent on every node to gather and forward system metrics.
Step 2: Customize Host Metrics Collection
Host metrics collection is enabled by default and can be customized via the hostMetrics preset. Adjust the collection interval and enable specific scrapers as needed:
hostMetrics:
collectionInterval: 60s # Sets metric collection frequency.
scrapers:
cpu:
metrics:
system.cpu.logical.count:
enabled: true # Collect logical CPU count.
system.cpu.physical.count:
enabled: true # Collect physical CPU count.
Output
Once your setup is done, you should see your Hostname in the Hosts tab of Infrastructure Monitoring section in SigNoz.

How Collection Works
Toggle to know how hostmetrics collection works
The hostmetrics receiver collects system metrics by interacting with the underlying data sources provided by each operating system. These data sources expose low-level system statistics, which are collected and processed by the receiver.
Below is a table explaining the different data sources and the collection method for different operating systems:
| OS | Data Sources | Collection Method |
|---|---|---|
| Linux | /proc filesystem, sysfs | Kernel-exported statistics |
| Windows | PDH Counters, WMI | Performance Monitor |
| macOS | Mach APIs, sysctl | System framework calls |
- Data Sources: The specific system interfaces or files where metrics are exposed.
- Collection Method: The mechanism or API used to access the data sources and collect metrics.