OpenTelemetry pipeline

Overview

The SUSE Observability Agent ships with OpenTelemetry Collector based components that supplement the existing agent components. They cover push-based application telemetry, Prometheus/OpenMetrics scraping, and Kubernetes Custom Resource topology collection without requiring a separately managed collector.

The OTel support in the agent is split into independently toggleable components:

  • Telemetry gateway (otel.telemetryGateway) — receives metrics and traces pushed over OTLP from application-embedded OpenTelemetry SDKs and forwards them to SUSE Observability. Point your SDKs at the suse-observability-agent-otel-telemetry-gateway service in the agent’s namespace on port 4317 (gRPC) or 4318 (HTTP).

  • Prometheus / OpenMetrics scraping (otel.prometheusScraping) — discovers ServiceMonitor and PodMonitor Custom Resources, scrapes the targets they describe, and ships the resulting metrics over OTLP. This track is metrics-only; use it for workloads that expose a Prometheus / OpenMetrics endpoint but are not instrumented with an OTel SDK. See Scraping OpenMetrics with ServiceMonitor and PodMonitor for the full how-to.

  • K8s resource collector (otel.k8sResourceCollector) — watches Custom Resource Definitions (CRDs), selected Custom Resource instances, and optional additional Kubernetes resources, then forwards topology logs to SUSE Observability. See K8s resource collector for the full configuration guide.

Enable OTel pipeline

The OTel pipeline is disabled by default. To turn it on, set the master switch in your agent Helm values:

otel:
  enabled: true
  prometheusScraping:
    monitorCrds:
      # Leave at the default, false, if the ServiceMonitor and PodMonitor CRDs
      # are already managed by another chart (for example kube-prometheus-stack) or
      # if you want to install them manually.
      enabled: true

This will also enable the Prometheus / OpenMetrics scraping and K8s resource collector components.

Enabling/disabling components

You can enable or disable individual sub-pipelines. Each components has its own enabled toggle:

otel:
  enabled: true
  telemetryGateway:
    enabled: true     # accept OTLP push from SDKs
  prometheusScraping:
    enabled: false    # stop scraping ServiceMonitor / PodMonitor targets
  k8sResourceCollector:
    enabled: false    # stop collecting CRD/CR topology

Resource impact

When enabled, the OTel support can add up to four workloads, depending on which components are turned on:

  • A telemetry gateway OpenTelemetry Collector (when otel.telemetryGateway.enabled=true) that terminates the OTLP push receiver and forwards metrics and traces to SUSE Observability.

  • A scraper OpenTelemetry Collector (when otel.prometheusScraping.enabled=true) that scrapes the targets selected by the Target Allocator.

  • A Target Allocator (when otel.prometheusScraping.enabled=true) that watches ServiceMonitor / PodMonitor resources and distributes scrape targets across the scraper collectors.

  • A k8s resource collector OpenTelemetry Collector (when otel.k8sResourceCollector.enabled=true) that discovers CRDs and selected Custom Resources.

All workloads have conservative CPU and memory requests / limits that can be tuned in the agent Helm values under otel.telemetryGateway, otel.prometheusScraping.collector, otel.prometheusScraping.targetAllocator, and otel.k8sResourceCollector. Refer to the agent Helm chart values.yaml for the full set of knobs.