Beyla
Grafana LabsOfficialPublished by Grafana Labs
- Skill
- Tool integration
- Cloud and DevOps
- Apache-2.0
- Low risk
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
Grafana Beyla is an eBPF-based tool that provides zero-code observability for applications. It automatically captures HTTP, gRPC, and database traffic, emitting OTLP traces and Prometheus metrics. Because it operates at the kernel level, it requires no application restarts, recompilation, or SDK integration, making it ideal for legacy systems or closed-source binaries.
What it does
- Auto-instruments applications using eBPF technology
- Exports telemetry as OTLP traces and Prometheus metrics
- Supports a wide range of languages including Go, Java, Python, and Node.js
- Provides automatic service discovery via port, process name, or Kubernetes metadata
- Includes a routes decorator for cardinality control and trace sampling
- Integrates seamlessly with Grafana Cloud via Alloy
When to use it
- When you need to add observability to a service that cannot be recompiled
- When instrumenting closed-source binaries or legacy applications
- When you need RED metrics and spans without modifying application code
- When deploying cluster-wide observability via a Kubernetes DaemonSet
Advantages
- Zero-code: no SDKs or code changes required
- Non-intrusive: no application restarts needed
- Language agnostic: supports diverse runtimes including .NET, Rust, and PHP
- High visibility: captures HTTP, gRPC, and database query performance
Usage examples
- “How do I instrument a running binary on port 8080 using Docker?”
- Run the Beyla container with --privileged and --pid=host, setting BEYLA_OPEN_PORT to 8080 and pointing the OTLP endpoint to your collector.
- “How can I deploy Beyla across my entire Kubernetes cluster?”
- Use the provided DaemonSet configuration with the necessary RBAC permissions and hostPID enabled to allow eBPF probes to monitor pods.
- “How do I control the cardinality of my HTTP metrics?”
- Configure the routes decorator in the Beyla YAML to define patterns for path matching and set an unmatched strategy like heuristic to clean up metrics.
Install
Download the skill as a ZIP:
https://mp-staging.autogineer.com/agent-skills/grafana/beyla/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip beyla.zip -d .agents/skills
Documentation by Grafana Labs
Grafana Beyla
Zero-code HTTP / gRPC / DB instrumentation via eBPF. Emits OTLP traces + Prometheus metrics.
Prerequisites
Linux kernel 5.8+ with BTF enabled (
ls /sys/kernel/btf/vmlinuxmust exist)Root or
CAP_SYS_ADMIN(orprivileged: truein Kubernetes +hostPID: true)x86_64 or ARM64
An OTLP receiver (Tempo, Alloy, OTel Collector) reachable from Beyla
Common Workflows
1. Instrument a single binary with Docker
# 1. Run Beyla against the app's port (the app must already be running, listening on 8080)
docker run --privileged --pid=host \
-v /sys/kernel/debug:/sys/kernel/debug:ro \
-e BEYLA_OPEN_PORT=8080 \
-e BEYLA_PROMETHEUS_PORT=8999 \
-e OTEL_EXPORTER_OTLP_ENDPOINT=http://otel-collector:4318 \
-p 8999:8999 \
grafana/beyla
# 2. Generate some traffic
curl http://localhost:8080/ ; curl http://localhost:8080/api/users/42
# 3. Verify Beyla emitted metrics — should list http_server_request_duration_seconds + counters
curl -s http://localhost:8999/metrics | grep -E '^http_(server|client)_request_duration'
# 4. Verify traces — in Grafana Explore on Tempo, search by service.name (default = process name)
# Or: query Tempo's search API for spans with service.name="<app>"2. Deploy as a cluster-wide DaemonSet
Full DaemonSet + RBAC YAML lives in references/kubernetes.md. After applying:
# 1. Verify DaemonSet rollout
kubectl -n monitoring rollout status ds/beyla
# 2. Verify pods are Running, one per node
kubectl -n monitoring get pods -l app=beyla -o wide
# 3. Verify eBPF probes attached (no errors mentioning BTF or "permission denied")
kubectl -n monitoring logs ds/beyla --tail=50 | grep -Ei 'error|fail|btf' || echo "clean"
# 4. Verify telemetry is flowing — check the Tempo/Alloy receiver for spans from the cluster
# Or scrape one pod directly:
kubectl -n monitoring port-forward ds/beyla 8999:8999 &
curl -s localhost:8999/metrics | head3. Send to Grafana Cloud via Alloy
# beyla-config.yml
otel_traces_export: { endpoint: http://alloy:4318 }
otel_metrics_export: { endpoint: http://alloy:4318 }# Verify Alloy is forwarding — check Alloy UI (localhost:12345) for the
# otelcol.receiver.otlp.beyla component showing received spans/metrics > 0.Full Alloy + Beyla YAML: references/config.md.
Troubleshooting
failed to load BPF object→ kernel < 5.8 or BTF missing; check/sys/kernel/btf/vmlinuxNo spans in Tempo, but Prometheus metrics show → check
OTEL_EXPORTER_OTLP_ENDPOINT, protocol (http vs grpc), and ports (4318 http / 4317 grpc)HTTP route cardinality explosion → set
routes.unmatched: heuristicand add patterns (seereferences/config.md)Pod restarts with
CrashLoopBackOff→ likely missinghostPID: trueorprivileged: true/ required capabilities
Resources
references/config.md— full config, env vars, samplers, routes decorator, generated metrics table, runtime matrixreferences/kubernetes.md— DaemonSet + RBAC + discovery filters + Helm
Files
- ATTRIBUTION.mdAdded by AutoGineer830 B
- LICENSELicence file added by AutoGineer11.1 KiB
- SKILL.md4.2 KiB
- references/config.md3.3 KiB
- references/kubernetes.md1.9 KiB
ATTRIBUTION.md
Attribution
This folder is an unmodified copy of the Agent Skill "beyla", distributed by AutoGineer (https://autogineer.com/agent-skills).
Commit: 8fb72a527961f05e708f53d2a0500709e12d7970
Published by: Grafana Labs (https://github.com/grafana)
Publisher: Grafana Labs (https://github.com/grafana)
Licence: Apache License 2.0 (https://spdx.org/licenses/Apache-2.0.html)
Licence evidence: declared in the frontmatter ("license: Apache-2.0")
Retrieved: 2026-11-07
The skill's own files are unmodified copies. AutoGineer is not affiliated with or endorsed by the author or the publisher.
Files added by AutoGineer
ATTRIBUTION.md: this file, written by AutoGineer
LICENSE: copied from LICENSE
Requirements and compatibility
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Needs: Needs network access, Needs a command-line tool, Needs Node.js
Security
What our scanner noticed· Low risk
- Instructions that use the network
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Published by
- Grafana Labs
- Publisher
- Grafana Labs (Official)
- Source
- grafana/skills · skills/grafana-core/beyla · commit 8fb72a5
- Licence
- Apache License 2.0 (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by Grafana Labs.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download beyla.zip