hostmetricsreceiver

package module
v0.154.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 9, 2026 License: Apache-2.0 Imports: 32 Imported by: 24

README

Host Metrics Receiver

The Host Metrics receiver generates metrics about the host system scraped from various sources and host entity event as log. This is intended to be used when the collector is deployed as an agent.

Status
Stability development: logs
beta: metrics
Distributions core, contrib, k8s
Issues Open issues Closed issues
Code coverage codecov
Code Owners @dmitryax, @braydonk, @rogercoll

Getting Started

The collection interval, root path, the categories of metrics, and individual metrics to be scraped can be configured:

host_metrics:
  collection_interval: <duration> # default = 1m
  initial_delay: <duration> # default = 1s
  root_path: <string>
  scrapers:
    <scraper1>:
      metrics:
        <metric1>:
          enabled: true
        <metric2>:
          enabled: false
        ...
    <scraper2>:
    ...

Note: While scrapers may support multiple operating systems, individual metrics within a scraper may have different OS support. Refer to each scraper's documentation for metric-level OS compatibility.

The available scrapers are:

Scraper Supported OSs Description
cpu All CPU utilization metrics
disk All Disk I/O metrics
load All CPU load metrics
filesystem All File System utilization metrics
memory All Memory utilization metrics
network All Network interface I/O metrics & TCP connection metrics
nfs Linux NFS server and client metrics
paging All Paging/Swap space utilization and I/O metrics
processes Linux, Mac, FreeBSD, OpenBSD Process count metrics
process Linux, Windows, Mac, FreeBSD Per process CPU, Memory, and Disk I/O metrics
system Linux, Windows, Mac Miscellaneous system metrics
Notes

Several scrapers support additional configuration:

Disk
disk:
  <include|exclude>:
    devices: [ <device name>, ... ]
    match_type: <strict|regexp>
File System
filesystem:
  <include_devices|exclude_devices>:
    devices: [ <device name>, ... ]
    match_type: <strict|regexp>
  <include_fs_types|exclude_fs_types>:
    fs_types: [ <filesystem type>, ... ]
    match_type: <strict|regexp>
  <include_mount_points|exclude_mount_points>:
    mount_points: [ <mount point>, ... ]
    match_type: <strict|regexp>
  include_virtual_filesystems: <false|true>
Load

cpu_average specifies whether to divide the average load by the reported number of logical CPUs (default: false).

load:
  cpu_average: <false|true>
Network
network:
  <include|exclude>:
    interfaces: [ <interface name>, ... ]
    match_type: <strict|regexp>
Process
process:
  <include|exclude>:
    names: [ <process name>, ... ]
    match_type: <strict|regexp>
  mute_process_all_errors: <true|false>
  mute_process_name_error: <true|false>
  mute_process_exe_error: <true|false>
  mute_process_io_error: <true|false>
  mute_process_user_error: <true|false>
  mute_process_cgroup_error: <true|false>
  scrape_process_delay: <time>

The following settings are optional:

  • mute_process_all_errors (default: false): mute all the errors encountered when trying to read metrics of a process. When this flag is enabled, there is no need to activate any other error suppression flags.
  • mute_process_name_error (default: false): mute the error encountered when trying to read a process name the collector does not have permission to read. This flag is ignored when mute_process_all_errors is set to true as all errors are muted.
  • mute_process_io_error (default: false): mute the error encountered when trying to read IO metrics of a process the collector does not have permission to read. This flag is ignored when mute_process_all_errors is set to true as all errors are muted.
  • mute_process_cgroup_error (default: false): mute the error encountered when trying to read the cgroup of a process the collector does not have permission to read. This flag is ignored when mute_process_all_errors is set to true as all errors are muted.
  • mute_process_exe_error (default: false): mute the error encountered when trying to read the executable path of a process the collector does not have permission to read (Linux only). This flag is ignored when mute_process_all_errors is set to true as all errors are muted.
  • mute_process_user_error (default: false): mute the error encountered when trying to read a uid which doesn't exist on the system, eg. is owned by a user that only exists in a container. This flag is ignored when mute_process_all_errors is set to true as all errors are muted.

Advanced Configuration

Filtering

If you are only interested in a subset of metrics from a particular source, it is recommended you use this receiver with the Filter Processor.

Different Frequencies

If you would like to scrape some metrics at a different frequency than others, you can configure multiple host_metrics receivers with different collection_interval values. For example:

receivers:
  host_metrics:
    collection_interval: 30s
    scrapers:
      cpu:
      memory:

  host_metrics/disk:
    collection_interval: 1m
    scrapers:
      disk:
      filesystem:

service:
  pipelines:
    metrics:
      receivers: [host_metrics, host_metrics/disk]
Collecting host metrics from inside a container (Linux only)

Host metrics are collected from the Linux system directories on the filesystem. You likely want to collect metrics about the host system and not the container. This is achievable by following these steps:

1. Bind mount the host filesystem

The simplest configuration is to mount the entire host filesystem when running the container. e.g. docker run -v /:/hostfs ....

You can also choose which parts of the host filesystem to mount, if you know exactly what you'll need. e.g. docker run -v /proc:/hostfs/proc.

2. Configure root_path

Configure root_path so the host_metrics receiver knows where the root filesystem is. Note: if running multiple instances of the host metrics receiver, they must all have the same root_path.

Example:

receivers:
  host_metrics:
    root_path: /hostfs

Resource attributes

Currently, the host_metrics receiver does not set any Resource attributes on the exported metrics. However, if you want to set Resource attributes, you can provide them via environment variables via the resource_detection processor. For example, you can add the following resource attributes to adhere to Resource Semantic Conventions:

export OTEL_RESOURCE_ATTRIBUTES="service.name=<the name of your service>,service.namespace=<the namespace of your service>,service.instance.id=<uuid of the instance>"

Entity Events

Entity Events as logs are experimental and might eventually be replaced by the result of the OTEP. For now, the host_metrics receiver can send the host entity event as a log records. By default, the host_metrics receiver sends periodic EntityState events every 5 minutes. You can change that by setting metadata_collection_interval. Entity Events as logs are experimental. The result of the OTEP might eventually replace that.

Using a Collector not linked to glibc (Linux-specific)

This is a living section for known adverse behaviours within the host_metrics receiver when using a Collector on Linux that is not linked to glibc (which is always the case when using CGO_ENABLED=0 and can be the case when using CGO_ENABLED=1 under specific circumstances).

Unable to resolve usernames when the system relies on NSS for user and group lookups

When a Collector is not linked to glibc, it can only resolve usernames and group names by directly parsing /etc/passwd and /etc/group. It has no awareness of the Name Service Switch (NSS) subsystem, which libc uses to delegate user and group lookups to pluggable backends including nss-systemd, nss-ldap, sssd, winbind, and more. As a result, any user or group whose record is provided exclusively by an NSS module rather than being present in /etc/passwd or /etc/group will fail to resolve, and the receiver will be unable to determine the username/owner of the given process.

This manifests most often as a failure to set the process.owner resource attribute in the process scraper. One concrete example is if a process is run as a systemd service using the DynamicUser feature. A Collector not linked to glibc will be incapable of resolving the username for the owner of that process because the DynamicUser feature leverages NSS (Name Service Switch) to resolve the username dynamically at user lookup time; a Go binary that uses the pure-Go netgo implementation is not NSS-aware and subsequently fails the user lookup.
See more in the demo repo created by host_metrics codeowner @braydonk.

Documentation

Overview

Package hostmetricsreceiver reads metrics like CPU usage, disk usage, and network usage from the host.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewFactory

func NewFactory() receiver.Factory

NewFactory creates a new factory for host metrics receiver.

Types

type Config

type Config struct {
	scraperhelper.ControllerConfig `mapstructure:",squash"`
	Scrapers                       map[component.Type]component.Config `mapstructure:"-"`
	// RootPath is the host's root directory (linux only).
	RootPath string `mapstructure:"root_path"`

	// Collection interval for metadata.
	// Metadata of the particular entity is collected when the entity changes.
	// In addition metadata of all entities is collected periodically even if no changes happen.
	// Setting the duration to 0 will disable periodic collection (however will not impact
	// metadata collection on changes).
	MetadataCollectionInterval time.Duration `mapstructure:"metadata_collection_interval"`
}

Config defines configuration for HostMetrics receiver.

func (*Config) Unmarshal

func (cfg *Config) Unmarshal(componentParser *confmap.Conf) error

Unmarshal a config.Parser into the config struct.

func (*Config) Validate

func (cfg *Config) Validate() error

Validate checks the receiver configuration is valid

Directories

Path Synopsis
metadata
Package metadata contains the autogenerated telemetry and build information for the receiver/host_metrics component.
Package metadata contains the autogenerated telemetry and build information for the receiver/host_metrics component.
scraper/cpuscraper/internal/metadata
Package metadata contains the autogenerated telemetry and build information for the scraper/cpu component.
Package metadata contains the autogenerated telemetry and build information for the scraper/cpu component.
scraper/diskscraper/internal/metadata
Package metadata contains the autogenerated telemetry and build information for the scraper/disk component.
Package metadata contains the autogenerated telemetry and build information for the scraper/disk component.
scraper/filesystemscraper/internal/metadata
Package metadata contains the autogenerated telemetry and build information for the scraper/filesystem component.
Package metadata contains the autogenerated telemetry and build information for the scraper/filesystem component.
scraper/loadscraper/internal/metadata
Package metadata contains the autogenerated telemetry and build information for the scraper/load component.
Package metadata contains the autogenerated telemetry and build information for the scraper/load component.
scraper/memoryscraper/internal/metadata
Package metadata contains the autogenerated telemetry and build information for the scraper/memory component.
Package metadata contains the autogenerated telemetry and build information for the scraper/memory component.
scraper/networkscraper/internal/metadata
Package metadata contains the autogenerated telemetry and build information for the scraper/network component.
Package metadata contains the autogenerated telemetry and build information for the scraper/network component.
scraper/nfsscraper/internal/metadata
Package metadata contains the autogenerated telemetry and build information for the scraper/nfs component.
Package metadata contains the autogenerated telemetry and build information for the scraper/nfs component.
scraper/pagingscraper/internal/metadata
Package metadata contains the autogenerated telemetry and build information for the scraper/paging component.
Package metadata contains the autogenerated telemetry and build information for the scraper/paging component.
scraper/processesscraper/internal/metadata
Package metadata contains the autogenerated telemetry and build information for the scraper/processes component.
Package metadata contains the autogenerated telemetry and build information for the scraper/processes component.
scraper/processscraper/internal/metadata
Package metadata contains the autogenerated telemetry and build information for the scraper/process component.
Package metadata contains the autogenerated telemetry and build information for the scraper/process component.
scraper/systemscraper/internal/metadata
Package metadata contains the autogenerated telemetry and build information for the scraper/system component.
Package metadata contains the autogenerated telemetry and build information for the scraper/system component.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL