Dash0 acquires Polar Signals
Collect system-level metrics from hosts including CPU, memory, disk, filesystem, network, and process metrics using the OpenTelemetry hostmetrics receiver.
The OpenTelemetry hostmetrics receiver collects detailed system-level metrics from your hosts, providing comprehensive visibility into resource utilization and system performance.
Do I need this receiver in Kubernetes? If you only need Kubernetes-aware metrics (nodes, pods, containers, volumes), the kubeletstats receiver is usually enough. Add hostmetrics only when you also want deep OS-level visibility — such as load averages, paging, per-filesystem stats, inodes, or per-process metrics — that the kubelet does not expose.
The hostmetrics receiver collects:
The OpenTelemetry hostmetrics receiver collects system-level metrics from your hosts. This guide shows you how to configure the receiver in your OpenTelemetry Collector to send metrics to Dash0.
You need an OpenTelemetry Collector running with access to Dash0. We recommend using one of these deployment methods:
Add the hostmetrics receiver to your OpenTelemetry Collector configuration:
This example enables all available scrapers with default settings:
receivers:
hostmetrics:
collection_interval: 60s
scrapers:
cpu:
disk:
filesystem:
load:
memory:
network:
paging:
processes:
process:
processors:
batch:
exporters:
otlp/dash0:
endpoint: ${DASH0_ENDPOINT}
headers:
Authorization: "Bearer ${DASH0_AUTH_TOKEN}"
service:
pipelines:
metrics:
receivers: [hostmetrics]
processors: [batch]
exporters: [otlp/dash0]When running in Kubernetes, additional configuration is needed for complete host metrics collection:
To get utilization ratio metrics (e.g., system.memory.utilization), enable them explicitly:
receivers:
hostmetrics:
root_path: /hostfs
collection_interval: 30s
scrapers:
cpu:
metrics:
system.cpu.utilization:
enabled: true
memory:
metrics:
system.memory.utilization:
enabled: true
filesystem:
metrics:
system.filesystem.utilization:
enabled: trueTo add hostname information to your metrics, use the resource detection processor:
processors:
resourcedetection:
detectors: [env, system]
system:
hostname_sources: ["os"]
service:
pipelines:
metrics:
receivers: [hostmetrics]
processors: [resourcedetection, batch]
exporters: [otlp/dash0]The collector needs specific permissions to access host metrics:
/hostfs with read-only accessSYS_PTRACE, DAC_READ_SEARCH)hostNetwork: true for complete network interface metricsFor a complete working example with all necessary Kubernetes configurations, see the Dash0 hostmetrics example.
You can include or exclude specific metrics:
receivers:
hostmetrics:
scrapers:
cpu:
metrics:
system.cpu.time:
enabled: false # Disable this metric
system.cpu.utilization:
enabled: true # Enable this metricCheck that metrics are being collected by inspecting the logs of your OpenTelemetry Collector.
system. (e.g., system.cpu.utilization, system.memory.usage)Host CPU usage is above threshold
Monitors host system CPU utilization. This alert fires when host CPU usage exceeds the threshold:
(1 - {otel_metric_name="system.cpu.utilization", cpu_mode="idle"}) * 100 > $__thresholdHost disk I/O usage is high
Monitors host disk I/O rate. This alert fires when disk I/O rate exceeds the threshold:
rate({otel_metric_name="system.disk.io"}[5m]) > $__thresholdHost filesystem inodes usage is above threshold
Monitors host filesystem inodes utilization. This alert fires when inodes usage exceeds the threshold:
(sum({otel_metric_name="system.filesystem.inodes.usage", state="used"}) / sum({otel_metric_name="system.filesystem.inodes.usage"})) * 100 > $__thresholdHost filesystem usage is above threshold
Monitors host filesystem utilization. This alert fires when host filesystem usage exceeds the threshold:
{otel_metric_name="system.filesystem.utilization"} * 100 > $__thresholdHost load average is high
{otel_metric_name="system.cpu.load_average.1m"} > $__thresholdHost memory usage is above threshold
Monitors host system memory utilization. This alert fires when host memory usage exceeds the threshold:
(1 - {otel_metric_name="system.memory.utilization", system_memory_state="free"}) * 100 > $__thresholdHost network is dropping packets
Network packets are being dropped.
rate({otel_metric_name="system.network.dropped"}[5m]) > $__thresholdHost network errors are high
High network error rate detected.
rate({otel_metric_name="system.network.errors"}[5m]) > $__thresholdHost network I/O usage is high
Monitors host network I/O rate. This alert fires when network I/O rate exceeds the threshold:
rate({otel_metric_name="system.network.io"}[5m]) > $__thresholdHost is using swap memory
System is using swap memory, indicating physical memory pressure.
sum({otel_metric_name="system.memory.usage", system_memory_state="used"}) by (k8s_node_name) > 0