Resources

Monitor and Receive Host Metrics with OpenTelemetry

July 17, 2024 by OpenObserve Team
Host Metrics Receiver

Introduction to Host Metrics Monitoring with OpenTelemetry

Imagine peeking under the hood of your car's engine while it's running. That's what host metrics monitoring is like for your computer system!

Introduction to Host Metrics Monitoring with OpenTelemetry

Image Credit

Host metrics monitoring is a crucial aspect of ensuring the health and performance of systems. OpenTelemetry is a powerful tool that provides a comprehensive framework for collecting and processing telemetry data, including host metrics. In this article, we will explore the capabilities of OpenTelemetry for host metrics monitoring, the importance of monitoring host metrics, and the role of the OpenTelemetry Collector in gathering telemetry data.

Get started for FREE with OpenObserve.

Overview of Host Metrics Monitoring Capabilities in OpenTelemetry

OpenTelemetry provides a robust set of features for collecting and processing host metrics. The OpenTelemetry Collector is an agent that gathers telemetry data from various sources, including hosts and sends it to a central location for analysis. The Collector supports multiple protocols and formats, making it a versatile tool for integrating with various systems.

Importance of Monitoring Host Metrics for System Health and Performance

Monitoring host metrics is essential for ensuring the health and performance of systems. Host metrics provide valuable insights into system resource utilization, disk space, memory usage, and network activity. By monitoring these metrics, system administrators can identify potential issues before they become critical and take proactive measures to prevent downtime.

Role of OpenTelemetry Collector as an Agent for Gathering Telemetry Data

The OpenTelemetry Collector plays a crucial role in gathering telemetry data from hosts. It acts as an agent that collects data from various sources, including hosts, and sends it to a central location for analysis. The Collector supports multiple protocols and formats, making it a versatile tool for integrating with various systems.

In the next section, you will learn the basics of starting with OpenTelemetry.

Getting Started with OpenTelemetry for Host Metrics

To start with OpenTelemetry for host metrics, you must install the OpenTelemetry Collector on your hosts. Here are the prerequisites for installing the Collector:

  • Operating System: The Collector supports various operating systems, including Linux and Windows.
  • Network Connectivity: The Collector requires network connectivity to send telemetry data to a central location.
  • Configuration File: The Collector requires a configuration file that specifies the metrics to collect and the destination for the data.

In the next section, you will understand the steps required to deploy and configure the OpenTelemetry Collector.

Get started for FREE with OpenObserve.

Step-by-Step Guide for Deploying and Configuring OpenTelemetry Collector

Here is a step-by-step guide for deploying and configuring the OpenTelemetry Collector:

Install the Collector

To install the OpenTelemetry Collector, you can use your operating system's package manager or download the binary. The language used is bash.

Using Package Manager (For Linux and macOS)

Install using apt (Ubuntu-based systems):

sudo apt-get install opentelemetry-collector

Install using yum (RHEL-based systems):

sudo yum install opentelemetry-collector

Install using pip (Python-based systems):

pip install opentelemetry-collector

Configure the Collector

To configure the Collector, create a configuration file that specifies the metrics to collect and the destination for the data.

Example Configuration File

Here is an example configuration file for the OpenTelemetry Collector:

yaml

Configuration file for OpenTelemetry Collector

  • Receiver configuration

receivers:

  - type: hostmetrics
    hostmetrics:
      # Metrics to collect
      metrics:
        - cpu
        - memory
        - disk
        - network
  • Exporter configuration

exporters:

  - type: console
    console:
      # Output format
      format: json
  • Collector configuration

collector:

# Service name

  service_name: "mycollector"

# Service version

  service_version: "1.0.0"

Start the Collector

To start the Collector service, use the following command:

Using Service Manager (For Linux and macOS)

  • Start using systemd (Ubuntu-based systems):
    sudo systemctl start opentelemetry-collector
  • Start using systemctl (RHEL-based systems):
    sudo systemctl start opentelemetry-collector

Default Metrics Collected by the Host Metrics Receiver

The Host Metrics Receiver collects a range of default metrics, including:

  • CPU Utilization: The percentage of CPU utilization.
  • Memory Usage: The amount of memory used by the system.
  • Disk Space: The amount of free disk space available.
  • Network Activity: The amount of network activity.

In the next section you will learn about requirements and codes to configure host metrics receivers.

Configuring Host Metrics Receiver

Here are some configuration options for the Host Metrics Receiver:

  • Mounting the Host File System: You can mount the host file system to collect metrics from specific directories.
  • Configuring Scrapers: You can configure scrapers to collect specific metrics, such as CPU utilization or memory usage.
  • Collection Interval: You can specify the collection interval for the metrics.

Example Configuration File

Here is an example configuration file that combines these options:

yaml

# Configuration file for OpenTelemetry Collector

# Receiver configuration

receivers:
  - type: hostmetrics
    hostmetrics:
      # Mount the host file system
      mount:
        - path: /path/to/directory
          type: directory
      # Metrics to collect
      metrics:
        - cpu
        - memory
        - disk
        - network
      # Collection interval
      interval: 10s

Running the Collector

To run the Collector with this configuration, use the following command:

bash

opentelemetry-collector --config /path/to/config.yaml

This command starts the Collector with the specified configuration file.

The next section deals with scraper configurations.

Get started for FREE with OpenObserve

Scraper Configurations

Here are some scraper configurations for the Host Metrics Receiver:

  • Disk Scraper: The Disk Scraper collects metrics related to disk space and usage.
  • File System Scraper: The File System Scraper collects metrics related to file system usage and disk space.
  • Network Scraper: The Network Scraper collects metrics related to network activity.
  • Process Scraper: The Process Scraper collects metrics related to process usage and memory usage.

Here is an example configuration that combines the Disk, File System, Network, and Process scrapers for the Host Metrics Receiver:

yaml
receivers:
  hostmetrics:
    collection_interval: 10s
    scrapers:
      # Disk I/O metrics
      disk:
        include:
          devices: 
            - sda
            - sdb
        exclude:
          devices:
            - loop0
            - loop1
      # File System utilization metrics  
      filesystem:
        include_fs_types:
          match_type: strict
          fs_types:
            - ext4
            - xfs
        exclude_mount_points:
          match_type: regexp
          mount_points:
            - ^/snap/.*$
            - ^/var/lib/docker/.*$
      # Network interface I/O metrics & TCP connection metrics
      network:
        include:
          interfaces:
            - eth0
            - eth1
        exclude:
          interfaces:
            - lo
      # Per process CPU, Memory, and Disk I/O metrics
      processes:
        include:
          names:
            - ^node$
            - ^java$
        exclude:
          names:
            - ^kube-proxy$
            - ^fluentd$

This configuration:

  • Sets the collection interval to 10 seconds
  • Includes disk metrics for devices sda and sdb, excluding loop0 and loop1
  • Includes file system metrics for ext4 and xfs file systems, excluding mount points matching /snap/.\* and /var/lib/docker/.\*
  • Includes network metrics for interfaces eth0 and eth1, excluding lo
  • Includes process metrics for processes named node and java, excluding kube-proxy and fluentd
  • The include and exclude options allow you to specify which devices, file systems, interfaces, and processes to collect metrics for. This provides flexibility to focus on the most relevant metrics for your environment.

In the next section you will check some advanced configuration opens

Advanced Configuration

Here are some advanced configuration options for the Host Metrics Receiver:

Handling Unusual File Systems: You can configure the Collector to handle unusual file systems, such as network file systems.

Collecting Per-Process Metrics: You can configure the Collector to collect per-process metrics, such as CPU utilization and memory usage.

Resource Detection Processor: The Resource Detection Processor sets resource attributes for the metrics.

Get started for FREE with OpenObserve

Example Configuration File

Here is an example configuration file that combines these advanced configuration options:

yaml
receivers:
  hostmetrics:
    collection_interval: 10s
    scrapers:
      filesystem:
        include_fs_types:
          match_type: strict
          fs_types:
            - nfs
            - cifs
        exclude_mount_points:
          match_type: regexp
          mount_points:
            - ^/mnt/.*$
      processes:
        include:
          names:
            - ^node$
            - ^java$
        exclude:
          names:
            - ^kube-proxy$
            - ^fluentd$
        metrics:
          - cpu
          - memory
        resource_detection:
          - cpu:
              - name: cpu
              - value: 2
          - memory:
              - name: memory
              - value: 4

This configuration:

  • Handles unusual file systems like NFS and CIFS
  • Collects per-process metrics for processes named node and java, excluding kube-proxy and fluentd
  • Sets resource attributes for CPU and memory metrics

The next section provides details on metrics and exporting.

Metrics Detail

Here are some details about the metrics collected by the Host Metrics Receiver:

  • CPU Metrics: The Collector collects CPU metrics, including CPU utilization and CPU usage.
  • Memory Metrics: The Collector collects memory metrics, including memory usage and memory usage percentage.
  • Disk Metrics: The Collector collects disk metrics, including disk space and disk usage.
  • Network Metrics: The Collector collects network metrics, including network activity and network usage.

Example Configuration File

Here is an example configuration file that combines these metrics and exporting options:

yaml
receivers:
  hostmetrics:
    collection_interval: 10s
    scrapers:
      cpu:
        include:
          devices: 
            - cpu0
            - cpu1
        exclude:
          devices:
            - cpu2
            - cpu3
      memory:
        include:
          devices: 
            - mem0
            - mem1
        exclude:
          devices:
            - mem2
            - mem3
      disk:
        include:
          devices: 
            - disk0
            - disk1
        exclude:
          devices:
            - disk2
            - disk3
      network:
        include:
          interfaces: 
            - eth0
            - eth1
        exclude:
          interfaces:
            - lo
    exporters:
      - type: file
        file:
          path: /path/to/metrics.log
          format: json

This configuration:

  • Collects CPU metrics for devices cpu0 and cpu1, excluding cpu2 and cpu3
  • Collects memory metrics for devices mem0 and mem1, excluding mem2 and mem3
  • Collects disk metrics for devices disk0 and disk1, excluding disk2 and disk3
  • Collects network metrics for interfaces eth0 and eth1, excluding lo
  • Exports the collected metrics to a file at /path/to/metrics.log in JSON format

The next section deals with some exporters that support the OpenTelemetry Collector.

Exporters for Collected Metrics

The Collector supports various exporters for sending the collected metrics to different destinations. Here are some exporters supported by the Collector:

  • OpenObserve is a popular open-source platform for all your OpenTelemetry data solutions
  • Uptrace is a popular exporter for OpenTelemetry data.
  • Google Cloud Operations is a cloud-based exporter for OpenTelemetry data.
  • Splunk Observability Cloud is a cloud-based exporter for OpenTelemetry data.

Get started for FREE with OpenObserve

In the next section, you will learn about the steps you can take for troubleshooting issues.

Troubleshooting and Support

Here are some troubleshooting steps for common issues with the Host Metrics Receiver:

Common Issues

Network Connectivity Problems

  • Check the network connectivity between the Collector and the host system.
  • Ensure that the Collector has the necessary permissions to access the host system.
  • Verify that the Collector is configured to use the correct network interface.

Configuration Errors

  • Review the Collector configuration file for any errors or inconsistencies.
  • Ensure that the Collector is configured to collect the correct metrics and scrape the correct sources.
  • Verify that the Collector is configured to use the correct pipeline and exporter.

Documentation

  • Refer to the OpenTelemetry Collector documentation for detailed information on configuration and troubleshooting.
  • Consult the OpenObserve Observability Cloud documentation for specific information on the Host Metrics Receiver.

OpenTelemetry - OpenObserve Documentation

Community Support

  • Join the OpenTelemetry community for support and discussion.
  • Post questions and issues on the OpenTelemetry GitHub page.

OpenObserve - GitHub

Troubleshooting Tools:

  • Use the Collector's built-in debugging tools to troubleshoot issues.
  • Use the curl command to query the Collector for raw data and verify that metrics are being collected correctly.

Support Bundles:

  • Use the support bundle script to capture and analyze the Collector's configuration and logs.
  • Refer to the Observability Cloud documentation for information on creating and using support bundles.

OpenTelemetry - OpenObserve Documentation

APM Integration:

  • Ensure that the Collector is configured to send metrics to the APM service.
  • Verify that the Collector is configured to use the correct pipeline and exporter for APM integration.

Example Configuration File

Here is an example configuration file that may help:

yaml
receivers:
  hostmetrics:
    collection_interval: 10s
    scrapers:
      cpu:
        include:
          devices: 
            - cpu0
            - cpu1
        exclude:
          devices:
            - cpu2
            - cpu3
      memory:
        include:
          devices: 
            - mem0
            - mem1
        exclude:
          devices:
            - mem2
            - mem3
      disk:
        include:
          devices: 
            - disk0
            - disk1
        exclude:
          devices:
            - disk2
            - disk3
      network:
        include:
          interfaces: 
            - eth0
            - eth1
        exclude:
          interfaces:
            - lo
    processors:
      - type: resourcedetection
        detectors: [env, system]
      - type: batch
    exporters:
      - type: otlp
        endpoint: "http://localhost:55678"
    pipelines:
      - type: metrics
        receivers: [hostmetrics]
        processors: [resourcedetection, batch]
        exporters: [otlp]

This configuration:

  • Collects CPU, memory, disk, and network metrics from the host system.
  • Uses the resourcedetection processor to detect and set resource attributes.
  • Uses the batch processor to aggregate and transform metrics.
  • Exports metrics to the OpenTelemetry protocol (OTLP) endpoint.
  • Uses the metrics pipeline to process and export metrics.

What are the benefits of using OpenObserve for host metrics monitoring

OpenObserve can help in monitoring and receiving host metrics with OpenTelemetry by providing a comprehensive platform for collecting, processing, and analyzing telemetry data from various sources.

Here are some ways OpenObserve can assist:

  • Host Metrics Collection: OpenObserve can collect host metrics such as CPU, RAM, disk, and network metrics from the host system, providing valuable insights into the performance and health of the system.
  • Resource Detection: OpenObserve can automatically detect and set resource attributes for telemetry data, such as application name, version, environment, host name, and more, helping to identify the source of the data.
  • Data Processing: OpenObserve can process and transform telemetry data, aggregating, filtering, and enriching it as it flows through the system, making it easier to analyze and visualize.
  • Exporting Metrics: OpenObserve can export metrics to various destinations, such as Google Cloud Operations, Splunk Observability Cloud, or other monitoring platforms, allowing for seamless integration with existing monitoring tools.
  • Container Host Metrics: OpenObserve can collect metrics from containerized environments, such as Docker, by mounting the host filesystem and configuring the root_path in the OpenTelemetry Collector configuration.
  • Security and Authentication: OpenObserve can handle authentication and authorization for accessing telemetry data, ensuring secure and controlled access to sensitive information.
  • Support and Troubleshooting: OpenObserve provides extensive documentation, community support, and troubleshooting tools to help resolve any issues that may arise during the monitoring and receiving of host metrics.

Get started for FREE with OpenObserve

Conclusion

In conclusion, OpenTelemetry provides a comprehensive framework for collecting and processing host metrics. The OpenTelemetry Collector is a powerful tool that gathers telemetry data from various sources, including hosts, and sends it to a central location for analysis. By following the steps outlined in this article, you can effectively monitor and receive host metrics with OpenTelemetry.

Also, by leveraging OpenObserve, you can streamline your monitoring and receiving of host metrics with OpenTelemetry, gaining valuable insights into your system's performance and health.

Further Web Resources

How to Monitor Host Metrics with OpenTelemetry

Telemetry - OpenObserve Documentation

OpenTelemetry Host Metrics receiver

Host Metrics Receiver

Receive any custom metric with the OpenTelemetry Collector

YouTube Resources

How to Get Started with OpenTelemetry

Getting Started with OpenTelemetry in .NET
OpenObserve Introduction

How to Create Custom metrics with OpenTelemetry

Configuring Your OpenTelemetry Collector

Author:

authorImage

The OpenObserve Team comprises dedicated professionals committed to revolutionizing system observability through their innovative platform, OpenObserve. Dedicated to streamlining data observation and system monitoring, offering high performance and cost-effective solutions for diverse use cases.

OpenObserve Inc. © 2024