hostmetricsreceiver

package module
v0.71.0 Latest Latest
Warning

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

Go to latest
Published: Feb 8, 2023 License: Apache-2.0 Imports: 21 Imported by: 18

README

Host Metrics Receiver

Status
Stability beta
Supported pipeline types metrics
Distributions core, contrib

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

Getting Started

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

hostmetrics:
  collection_interval: <duration> # default = 1m
  root_path: <string>
  scrapers:
    <scraper1>:
    <scraper2>:
    ...

The available scrapers are:

Scraper Supported OSs Description
cpu All except Mac[1] CPU utilization metrics
disk All except Mac[1] 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
paging All Paging/Swap space utilization and I/O metrics
processes Linux Process count metrics
process Linux & Windows Per process CPU, Memory, and Disk I/O metrics
Notes

[1] Not supported on Mac when compiled without cgo which is the default.

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>
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_name_error: <true|false>
  scrape_process_delay: <time>

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 hostmetrics receivers with different collection_interval values. For example:

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

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

service:
  pipelines:
    metrics:
      receivers: [hostmetrics, hostmetrics/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 hostmetrics 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:
  hostmetrics:
    root_path: /hostfs

Resource attributes

Currently, the hostmetrics 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 resourcedetection 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>"

Deprecations

Transition to process memory metric names aligned with OpenTelemetry specification

The Host Metrics receiver has been emitting the following process memory metrics:

This is in conflict with the OpenTelemetry specification, which defines process.memory.usage and process.memory.virtual as the names for these metrics.

To align the emitted metric names with the OpenTelemetry specification, the following process will be followed to phase out the old metrics:

  • Until and including v0.63.0, only the old metrics process.memory.physical_usage and process.memory.virtual_usage are emitted. You can use the Metrics Transform processor to rename them.
  • Between v0.64.0 and v0.68.0, the new metrics are introduced as optional (disabled by default) and the old metrics are marked as deprecated. Only the old metrics are emitted by default.
  • Between v0.69.0 and v0.71.0, the new metrics are enabled and the old metrics are disabled by default.
  • In v0.72.0 and up, the old metrics are removed.

To change the enabled state for the specific metrics, use the standard configuration options that are available for all metrics.

Here's an example configuration to disable the old metrics and enable the new metrics:

receivers:
  hostmetrics:
    scrapers:
      process:
        metrics:
          process.memory.physical_usage:
            enabled: false
          process.memory.virtual_usage:
            enabled: false
          process.memory.usage:
            enabled: true
          process.memory.virtual:
            enabled: true

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.ScraperControllerSettings `mapstructure:",squash"`
	Scrapers                                map[string]internal.Config `mapstructure:"-"`
	// RootPath is the host's root directory (linux only).
	RootPath string `mapstructure:"root_path"`
}

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
perfcounters
Package perfcounters is a thin wrapper around https://godoc.org/github.com/leoluk/perflib_exporter/perflib that provides functions to scrape raw performance counter data, without calculating rates or formatting them, from the registry.
Package perfcounters is a thin wrapper around https://godoc.org/github.com/leoluk/perflib_exporter/perflib that provides functions to scrape raw performance counter data, without calculating rates or formatting them, from the registry.

Jump to

Keyboard shortcuts

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