πŸ¦— Odigos + qryn = zero instrumentation

πŸ¦— Odigos + qryn = zero instrumentation

Effortless K8s Observability with Odigos and qryn

Lorenzo Mangani's photo
Lorenzo Mangani
Β·Dec 19, 2022Β·

3 min read

Play this article

Detect and Fix Production Issues Faster with Odigos & qryn

Odigos is designed to automatically instruments get distributed traces, metrics and logs for any Kubernetes application in minutes, without any code changes.

Odigos detects the programming language of your applications and applies automatic instrumentation using well-known, battle-tested open source observability technologies such as OpenTelemetry and eBPF.


In this tutorial we are going to use Odigos for getting automatic observability of a microservices application written in Go, Java, Python, .NET and Node.

Odigos v0.1.36+ natively supports qryn as destination for traces, logs and metrics.

πŸ“š This guide is adapted from the odigos documentation examples


To follow the guide, you need the following:

  • A Kubernetes cluster.

  • Helm CLI for installing helm charts.

  • A qryn or deployment.

Creating the Kubernetes cluster

Create a new local Kubernetes cluster, by running the following command:

kind create cluster

Deploying the target application

For this tutorial, we are going to install a fork of microservices-demo. We use a modified version without any instrumentation code to demonstrate how Odigos automatically collects observability data from the application.

Deploy the demo application using the following command:

kubectl apply -f

Before proceeding, make sure that all the application pods are running.

Installing Odigos

The easiest way to install Odigos is to use the official helm chart:

helm repo add odigos
helm install my-odigos odigos/odigos --namespace odigos-system --create-namespace

After all the pods in the odigos-system namespace are running, open the Odigos UI by running the following command and navigate to [localhost:3000]

kubectl port-forward svc/odigos-ui 3000:3000 -n odigos-system

Choosing where to send the data

You should now see the following page:


After Odigos detected all the applications in the cluster, choose the opt out option for application instrumentation. opt in mode is recommended when you want to have greater control over which applications are instrumented.

On the next page, select qryn as the destination for the data:

Fill in the following information using your relevant qryn details:

  • Tempo URL:

  • Prometheus URL:

  • Loki URL:

Generating data

That’s it! Odigos will automatically do the following:

  • Instrument all the applications in the cluster:

  • Runtime languages will be instrumented using OpenTelemetry.

  • Compiled languages will be instrumented using eBPF.

  • Deploy and configure a collector to send the data to qryn.

Now all that is left is to generate some traffic in the application.

Execute the following command to port forward into the application UI:

kubectl port-forward svc/frontend 1234:80 -n default

Navigate to [localhost:1234] and perform fake some purchases.

Exploring the collected data

Within minutes, you should see distributed traces appear in qryn. You now have all the data needed to understand how your application is behaving, without having to do any additional work. Using this configuration any new application deployed to this Kubernetes cluster will automatically be instrumented and sent to qryn.



Delete the Kubernetes cluster by running the following command:

kind delete cluster


Odigos is pretty amazing at generating distributed traces, metrics and logs for any K8s application in minutes, and qryn supports it as transparently as it should.

Kudos to team keyval for this fantastic project.

Have fun instrumenting your real Applications, and please share your comments!

πŸŒ₯ qryn cloud

Try this example and many more from the comfort of your screen using qryn cloud

Did you find this article valuable?

Support qryn by becoming a sponsor. Any amount is appreciated!

Learn more about Hashnode Sponsors
Share this