Skip to content

OpenTelemetry

OpenTelemetry is an industry standard for collecting telemetry data from your applications. It provides a set of APIs, libraries, agents, and instrumentation to capture distributed traces and metrics from your applications.

FLOW platform uses the Kubernetes OpenTelemetry Operator to deploy the OpenTelemetry Collector and the OpenTelemetry Instrumentation.

OpenTelemetry Instrumentation is automatically deployed to your namespace. It offers two options to configure the OpenTelemetry Instrumentation:

The OpenTelemetry Collector is responsible for receiving, processing, and exporting telemetry data. It can receive data from multiple sources, process it, and export it to multiple destinations. FLOW provides a managed OpenTelemetry Collector that is automatically deployed on the platform.

FLOW provides two types of collectors:

We offer two Instrumentation configurations:

  • http-protobuf
  • grpc

They inject the SDK and/or environment variables into your application, to send telemetry data to the OpenTelemetry Collector either via the http-protobuf protocol or the gRPC protocol. Depending on the support in the SDK, you can choose the appropriate instrumentation.

Instrumentation with the OpenTelemetry SDK

Section titled “Instrumentation with the OpenTelemetry SDK”

When instrumenting with the SDK, you need to know which SDK to use. This depends on the programming language of your application. The OpenTelemetry SDK is available for the following languages:

  • java
  • nodejs
  • python
  • dotnet
  • go

Add annotation instrumentation.opentelemetry.io/inject-[name-of-sdk]: [name-of-instrumentation] to your pod template.

If your applications is already instrumented with the OpenTelemetry SDK, you can inject the OpenTelemetry environment variables only.

In order to recognize the service in the OpenTelemetry Collector, you need to set the service name as an environment variable in your application. We recommend you append the logical service name with the name of the namespace.