# 🔺eBPF Observability with beyla + qryn

[![Grafana Beyla Logo](https://grafana.com/media/docs/grafana-cloud/beyla/beyla-logo.png align="left")](https://grafana.com/docs/beyla/latest/)

**Grafana Beyla** is a new vendor agnostic, **eBPF**\-based, **OpenTelemetry/Prometheus** application auto-instrumentation tool, which lets you easily get started with Application Observability. Within Beyla eBPF is used to automatically inspect application executables and the OS networking layer, allowing us to capture essential application observability events for HTTP/S and gRPC services.

From captured eBPF events, Beyla produces **Opentelemetry** trace spans and **Rate-Errors-Duration (RED)** metrics, without any modifications to your application code or configuration and of course - *compatible with qryn for ingestion and usage.*

### Using Beyla

**Beyla** supports a wide range of programming languages *(Go, Java, .NET, NodeJS, Python, Ruby, Rust, etc.) and can be used in parallel with other existing signals.*

To get started, refer to the [auto-instrumentation QuickStart](https://grafana.com/docs/beyla/latest/quickstart/) in Grafana Beyla.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1712651744606/c595223d-7380-4da0-b60e-e6d25ddaae72.png align="center")

### Sending data from Beyla to qryn

**Beyla** was designed for **Grafana LGTM** which means its <mark>drop-in compatible with </mark> **<mark>qryn</mark>** when it comes to shipping traces, metrics and even logs using native API formats, thanks to the *polyglot all-in-one API approach* implemented by the qryn stack.

And since qryn supports direct ingestion of OTEL traces, configuring **Beyla** with the qryn **OTEL** endpoint in Docker is as easy as it gets! Just remember to configure the process **PID, BEYLA\_OPEN\_PORT** & **BEYLA\_SERVICE\_NAME** parameters *to match your target application process* (or docker container) before running:

```bash
docker run --rm --pid="container:clickhouse-server" 
-e BEYLA_OPEN_PORT=8123-e BEYLA_SERVICE_NAME="clickhouse" 
-e OTEL_EXPORTER_OTLP_PROTOCOL="http/protobuf" 
-e OTEL_EXPORTER_OTLP_ENDPOINT="http://qryn:3100"  
--privileged grafana/beyla:latest
```

*<mark>That's all it takes! We're ready to launch our Beyla instance and validate!</mark>*

A few seconds later your process tracing will be visible in **qryn/tempo** by searching for the **BEYLA\_SERVICE\_NAME** configured in the previous step:

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1712583192041/d18820e5-36ed-4051-872d-bc9e166165e2.png align="center")

That's just the beginning of the journey and there's so much more to discover and use when it comes to **eBPF** and **qryn** combined. Post your comments and feedback!

[![](https://cdn.hashnode.com/res/hashnode/image/upload/v1720637662372/d2cab846-ce62-40c6-9993-2b3af26a0118.png align="center")](https://github.com/metrico/qryn)
