OpenTelemetry

Learn more about the OpenTelemetry Plugin. Use it to enable the ingestion, collection and export of telemetry signals (logs and metrics) for your Greenhouse cluster.

The main terminologies used in this document can be found in core-concepts.

Overview

OpenTelemetry is an observability framework and toolkit for creating and managing telemetry data such as metrics, logs and traces. Unlike other observability tools, OpenTelemetry is vendor and tool agnostic, meaning it can be used with a variety of observability backends, including open source tools such as OpenSearch and Prometheus.

The focus of the plugin is to provide easy-to-use configurations for common use cases of receiving, processing and exporting telemetry data in Kubernetes. The storage and visualization of the same is intentionally left to other tools.

Components included in this Plugin:

Architecture

TBD: Architecture picture

Note

It is the intention to add more configuration over time and contributions of your very own configuration is highly appreciated. If you discover bugs or want to add functionality to the plugin, feel free to create a pull request.

Quick Start

This guide provides a quick and straightforward way to use OpenTelemetry as a Greenhouse Plugin on your Kubernetes cluster.

Prerequisites

  • A running and Greenhouse-onboarded Kubernetes cluster. If you don’t have one, follow the Cluster onboarding guide.
  • For logs, a OpenSearch instance to store. If you don’t have one, reach out to your observability team to get access to one.
  • For metrics, a Prometheus instance to store. If you don’t have one, install a kube-monitoring Plugin first.

Step 1:

You can install the OpenTelemetry package in your cluster by installing it with Helm manually or let the Greenhouse platform lifecycle do it for you automatically. For the latter, you can either:

  1. Go to Greenhouse dashboard and select the OpenTelemetry plugin from the catalog. Specify the cluster and required option values.
  2. Create and specify a Plugin resource in your Greenhouse central cluster according to the examples.

Step 2:

The package will deploy the OpenTelemetry Operator which works as a manager for the collectors and auto-instrumentation of the workload. By default, the package will include a configuration for collecting metrics and logs. The log-collector is currently processing data from the preconfigured receivers:

  • Files via the Filelog Receiver
  • Kubernetes Events from the Kubernetes API server
  • Journald events from systemd journal
  • its own metrics

You can disable the collection of logs by setting open_telemetry.LogCollector.enabled to false. The same is true for disabling metrics: open_telemetry.MetricsCollector.enabled to false.

Based on the backend selection the telemetry data will be exporter to the backend.

Step 3:

Greenhouse regularly performs integration tests that are bundled with OpenTelemetry. These provide feedback on whether all the necessary resources are installed and continuously up and running. You will find messages about this in the plugin status and also in the Greenhouse dashboard.

Configuration

NameDescriptionTyperequired
openTelemetry.logsCollector.enabledActivates the standard configuration for logsboolfalse
openTelemetry.metricsCollector.enabledActivates the standard configuration for metricsboolfalse
openTelemetry.openSearchLogs.usernameUsername for OpenSearch endpointsecretfalse
openTelemetry.openSearchLogs.passwordPassword for OpenSearch endpointsecretfalse
openTelemetry.openSearchLogs.endpointEndpoint URL for OpenSearchsecretfalse
openTelemetry.regionRegion label for loggingstringfalse
openTelemetry.clusterCluster label for loggingstringfalse
openTelemetry.prometheus.additionalLabelsLabel selector for Prometheus resources to be picked-up by the operatormapfalse
prometheusRules.additionalRuleLabelsAdditional labels for PrometheusRule alertsmapfalse
openTelemetry.prometheus.serviceMonitor.enabledActivates the service-monitoring for the Logs Collectorboolfalse
openTelemetry.prometheus.podMonitor.enabledActivates the pod-monitoring for the Logs Collectorboolfalse
openTelemetry-operator.admissionWebhooks.certManager.enabledActivate to use the CertManager for generating self-signed certificatesbooltrue
opentelemetry-operator.admissionWebhooks.autoGenerateCert.enabledActivate to use Helm to create self-signed certificatesboolfalse
opentelemetry-operator.admissionWebhooks.autoGenerateCert.recreateActivate to recreate the cert after a defined period (certPeriodDays default is 365)boolfalse
opentelemetry-operator.kubeRBACProxy.enabledActivate to enable Kube-RBAC-Proxy for OpenTelemetryboolfalse
opentelemetry-operator.manager.prometheusRule.defaultRules.enabledActivate to enable default rules for monitoring the OpenTelemetry Managerboolfalse
opentelemetry-operator.manager.prometheusRule.enabledActivate to enable rules for monitoring the OpenTelemetry Managerboolfalse

Examples

TBD