npx skills add ...
npx skills add grafana/skills --skill beyla
Auto-instrument an application's HTTP / gRPC / DB traffic with Grafana Beyla eBPF — no code changes, no SDK, no restart. Covers requirements (Linux 5.8+ with BTF, CAP_SYS_ADMIN, host PID), language matrix (Go / Java / Python / Ruby / Node / .NET / Rust / C++ / PHP), Docker + Helm + DaemonSet install, port- / process- / Kubernetes-metadata discovery, OTLP traces + Prometheus metrics export, routes decorator (cardinality control), trace sampling, and Grafana Cloud via Alloy. Use when adding observability to a service you can't recompile, instrumenting a closed-source binary, getting RED metrics + spans onto Tempo/Mimir without touching the app, or rolling Beyla as a cluster-wide DaemonSet — even when the user says "zero-code APM", "instrument legacy app", "trace this binary", "eBPF observability", or "no SDK" without naming Beyla.
npx skills add grafana/skills --skill beyla
Zero-code HTTP / gRPC / DB instrumentation via eBPF. Emits OTLP traces + Prometheus metrics.
ls /sys/kernel/btf/vmlinux must exist)CAP_SYS_ADMIN (or privileged: true in Kubernetes + hostPID: true)Full DaemonSet + RBAC YAML lives in references/kubernetes.md. After applying:
Full Alloy + Beyla YAML: references/config.md.
failed to load BPF object → kernel < 5.8 or BTF missing; check /sys/kernel/btf/vmlinuxOTEL_EXPORTER_OTLP_ENDPOINT, protocol (http vs grpc), and ports (4318 http / 4317 grpc)routes.unmatched: heuristic and add patterns (see references/config.md)CrashLoopBackOff → likely missing hostPID: true or privileged: true / required capabilitiesreferences/config.md — full config, env vars, samplers, routes decorator, generated metrics table, runtime matrixreferences/kubernetes.md — DaemonSet + RBAC + discovery filters + Helm# 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 | head# 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.