Skip to main content

OpenTelemetry

Randoli Observability is OpenTelemetry-Native and aims to provide an out-of-the-box experience to get you going quickly.

The Randoli Agent Helm Chart installs & configures the following in your cluster

  • OpenTelemetry operator
  • Randoli Collector for OpenTelemetry
    • Pipeline configured for Metrics
    • Pipeline configured for Traces
    • TargtAllocator enabled for scraping metrics via Prometheus Custom Resources (ServiceMonitors & Pod Monitors)

You can configure your own OpenTelemetry pipelines and combine the Randoli Collector within your Observability Pipelines allowing you to take full control of your observability data.

note

Combined with auto-instrumentation support provided by the OpenTelemetry operator, you can expect to get an out-of-the-box experienment for Traces and RED Metrics - Rate (Throughput), Errors, Duration (Latency).

If you have already configured support for Prometheus to scrape your metrics we can leverage those configurations via Prometheus CRs or by configuring Target Allocators with scrape configs.

How to Auto-Instrument your Applications

The following section outlines how to auto-instrument applications by language. This is the fastest and simplest way to start collecting telemetry data with minimal setup.

If you prefer more control, you can manually configure your application to send observability data to the Randoli OpenTelemetry Collector. Refer to this section for details.

Many frameworks—such as Spring Boot—offer built-in support for OpenTelemetry. This allows you to enrich traces and metrics with custom spans, adjust sampling rates, and exclude specific endpoints.

To enable auto-instrumentation with the OpenTelemetry Operator, add the appropriate annotations to your Kubernetes deployments.

By default, the service name is set to the deployment name. We recommend explicitly setting a custom service name with the following annotation:

metadata:
annotations:
instrumentation.opentelemetry.io/service-name: "<your-service-name>"

Ex If your order-service deployment is named as "order-service-deployment", set the service-name to "order-service" for a more user friendly name.

Each language requires a language-specific annotation as shown below.

Java
metadata:
annotations:
instrumentation.opentelemetry.io/inject-java: "randoli-agents/otel-instrumentation"
Node.js
metadata:
annotations:
instrumentation.opentelemetry.io/inject-nodejs: "randoli-agents/otel-instrumentation"
Python
metadata:
annotations:
instrumentation.opentelemetry.io/inject-python: "randoli-agents/otel-instrumentation"
.NET
metadata:
annotations:
instrumentation.opentelemetry.io/inject-dotnet: "randoli-agents/otel-instrumentation"
Golang
metadata:
annotations:
instrumentation.opentelemetry.io/inject-go: "randoli-agents/otel-instrumentation"
Ruby
metadata:
annotations:
instrumentation.opentelemetry.io/inject-ruby: "randoli-agents/otel-instrumentation"
C++

C++ auto-instrumentation is not supported via the OpenTelemetry Operator.

Use the OpenTelemetry C++ SDK for manual instrumentation.

Rust

Rust auto-instrumentation is not supported via the OpenTelemetry Operator.

Use the OpenTelemetry Rust SDK for manual instrumentation.

How to push Telemetry data to Randoli Collector (without Auto-Instrumentation)

In some cases, you may want to explicitly control how your application sends telemetry data to the Randoli OpenTelemetry Collector—either directly or through an intermediate observability pipeline.

If the Randoli Agent is installed in the randoli-agents namespace, you can use the following cluster-local endpoints for direct ingestion.

Note: Depending on your Kubernetes network configuration, you may need to define NetworkPolicies to allow cross-namespace communication from your application pods.

How to push Telemetry data to Randoli Collector from outside the cluster

Please open a support ticket and our team will review your requirements and advice on the best strategy.

I already have Open Telemetry Operator installed in my cluster?

Unless you are using custom preprocessing, we strongly recommend uninstalling your existing OpenTelemetry Operator and allowing the Randoli Helm Chart to install and manage it. Our installation uses a streamlined, pre-configured collector image that is optimized for the Randoli platform—providing an out-of-the-box experience with minimal setup.

If you prefer to use your own OpenTelemetry Operator, you can disable our default installation via the Helm chart. In that case, you must ensure your instrumentation is configured to:

  • Reference the randoli-agents namespace where our instrumentation setup resides, or
  • Customize your instrumentation to send traces and metrics directly to the appropriate Randoli OpenTelemetry Collector endpoints.

For further guidance, please reach out to us via the Customer Support Portal.