SigNoz Cloud - This page is relevant for SigNoz Cloud editions.
Self-Host - This page is relevant for self-hosted SigNoz editions.

Collect Host Metrics with OpenTelemetry

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.

The OpenTelemetry hostmetrics receiver collects metrics on CPU, memory, disk, network, paging, and system performance.

Prerequisites

Step 1: Install OpenTelemetry Collector

Follow the OpenTelemetry Collector Installation Guide to install OpenTelemetry Collector.

Step 2: Configure the Collector

Configure the Hostmetrics Receiver

Open your OpenTelemetry Collector configuration file which is typically located at /etc/otelcol-contrib/config.yaml.

Add the hostmetrics receiver which scrapes metrics from the host system, add it to the receivers section:

config.yaml
receivers:
  hostmetrics:
    collection_interval: 60s
    scrapers:
      cpu: {}
      disk: {}
      load: {}
      filesystem: {}
      memory: {}
      network: {}
      nfs: {} # Linux only
      paging: {}
      process:
        mute_process_name_error: true
        mute_process_exe_error: true
        mute_process_io_error: true
      processes: {}
      system: {}

Configure the Processors

Add resourcedetection processor to the processors section to enrich metrics with resource attributes:

config.yaml
processors:
  batch:
  resourcedetection:
    detectors: [env, system]
Info

The resourcedetection processor automatically adds resource attributes like hostname and OS information to your metrics.

Configure the Exporters

Add otlp exporter with SigNoz endpoint and ingestion key to the exporters section:

config.yaml
exporters:
  otlp:
    endpoint: 'ingest.<region>.signoz.cloud:443'
    tls:
      insecure: false
    headers:
      'signoz-ingestion-key': '<your-ingestion-key>'

Replace the following:

Configure the Service

Enable hostmetrics receiver, resourcedetection and batch processors in the service section:

config.yaml
service:
  pipelines:
    metrics:
      receivers: [hostmetrics]
      processors: [resourcedetection, batch]
      exporters: [otlp]
View Complete Configuration

Here is how the complete config.yaml file should look:

config.yaml
receivers:
  hostmetrics:
    collection_interval: 60s
    scrapers:
      cpu: {}
      disk: {}
      load: {}
      filesystem: {}
      memory: {}
      network: {}
      nfs: {} # Linux only
      paging: {}
      process:
        mute_process_name_error: true
        mute_process_exe_error: true
        mute_process_io_error: true
      processes: {}
      system: {}

processors:
  batch:
  resourcedetection:
    detectors: [env, system]

exporters:
  otlp:
    endpoint: "ingest.<region>.signoz.cloud:443"
    tls:
      insecure: false
    headers:
      "signoz-ingestion-key": "<your-ingestion-key>"

service:
  pipelines:
    metrics:
      receivers: [hostmetrics]
      processors: [resourcedetection, batch]
      exporters: [otlp]

Step 3: Run the Collector

After saving the configuration, restart the collector service to apply changes.

If you are using systemd to manage the collector service:

sudo systemctl restart otelcol-contrib
sudo systemctl status otelcol-contrib

Advanced Configuration

Configure Different Frequencies

You can configure different collection intervals for different metrics by defining multiple hostmetrics receivers. This is useful if you want frequently changing metrics (like CPU/Memory) to be collected more often than stable ones (like Filesystem).

config.yaml
receivers:
  # Receiver for high-frequency metrics (e.g., every 10s)
  hostmetrics/fast:
    collection_interval: 10s
    scrapers:
      cpu: {}
      memory: {}

  # Receiver for low-frequency metrics (e.g., every 1m)
  hostmetrics/slow:
    collection_interval: 60s
    scrapers:
      filesystem: {}
      disk: {}
      network: {}

service:
  pipelines:
    metrics:
      receivers: [hostmetrics/fast, hostmetrics/slow]
      # ... other processors and exporters

Verification

Once configured, verify that metrics are flowing to SigNoz.

  1. Go to the Infrastructure Monitoring section in SigNoz (Hosts tab).
  2. You should see your host listed with metrics like CPU and Memory usage.
List of Hosts in SigNoz Infrastructure Tab
List of Hosts in SigNoz Infrastructure Tab
Detailed View of a Host
Detailed View of a Host

Troubleshooting

No metrics appearing in SigNoz

Symptoms: Host not visible in Infrastructure Monitoring > Hosts tab.

Resolution:

  1. Check collector logs for errors.

    Linux (Systemd):

    journalctl -u otelcol-contrib -f
    

    Docker:

    docker logs otelcol-hostmetrics -f
    

    Windows (PowerShell):

    Get-Content "C:\Program Files\OpenTelemetry Collector\otelcol.log" -Wait
    
  2. Verify the hostmetrics receiver is enabled in your config.

  3. Ensure the collector can reach the SigNoz endpoint (port 443 for Cloud, 4317 for Self-Hosted).

Connection Refused

Symptoms: Logs show connection refused errors.

Resolution:

  • Ensure the OTLP endpoint is reachable.
  • Verify the correct port is being used.
  • Check firewall settings.

Invalid Key (Cloud)

Symptoms: HTTP 401 Unauthorized errors in logs.

Resolution:

  • Double-check your ingestion key in config.yaml.
  • Ensure it matches the key in SigNoz (Settings > Ingestion Settings).

Next Steps

Get Help

If you need help with the steps in this topic, please reach out to us on SigNoz Community Slack.

If you are a SigNoz Cloud user, please use in product chat support located at the bottom right corner of your SigNoz instance or contact us at cloud-support@signoz.io.

Last updated: January 18, 2026

Edit on GitHub

Was this page helpful?