beyla — скилл для Claude Code: что делает и как установить
Автоматически подключает eBPF-мониторинг HTTP, gRPC и баз данных через Grafana Beyla без изменения кода. Пригодится для сбора трейсов и RED-метрик с готовых бинарников.
npx skills add grafana/skills --skill beyla -a claude-codeЧто делает beyla
Скилл помогает развернуть Grafana Beyla для наблюдения за сетевым трафиком приложений на Go, Java, Python, Node, Ruby, .NET, Rust, C++ и PHP. Он содержит инструкции по запуску Beyla в контейнере Docker рядом с работающим сервисом или в виде кластерного DaemonSet в Kubernetes. Beyla перехватывает системные вызовы и отдаёт трейсы по протоколу OTLP, а метрики — в формате Prometheus.
Для работы Beyla критически важна конфигурация операционной системы. Если на сервере установлено ядро Linux ниже 5.8 или выключен BTF, запуск завершится ошибкой загрузки BPF-объекта. В контейнерах требуются права CAP_SYS_ADMIN (или параметр privileged: true) и доступ к пространству процессов хоста через hostPID: true. Скилл также подсказывает, как ограничить разрастание кардинальности метрик через эвристические маршруты и настроить экспорт в Grafana Cloud через Alloy.
Какие задачи решает
- получить трейсы OTLP и RED-метрики без правки исходного кода
- развернуть Grafana Beyla в кластере Kubernetes как DaemonSet
- настроить эвристику маршрутов для предотвращения взрыва кардинальности
- организовать экспорт телеметрии в Grafana Cloud через Alloy
Примеры запросов агенту
- Помоги запустить Grafana Beyla в Docker для сервиса на порту 8080.
- Настрой манифест DaemonSet для Beyla в Kubernetes с экспортом в Tempo.
- Как устранить ошибку failed to load BPF object при запуске Beyla?
Как установить beyla
1Через Skills CLI (Vercel)
npx skills add grafana/skills --skill beyla -a claude-code2Вручную: положить файлы
~/.claude/skills/beyla/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/beyla/
1Через Skills CLI (Vercel)
npx skills add grafana/skills --skill beyla -a codex2Вручную: положить файлы
.agents/skills/beyla/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add grafana/skills --skill beyla -a cursor2Вручную: положить файлы
.cursor/skills/beyla/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install grafana/skills beyla2Вручную: положить файлы
.github/skills/beyla/SKILL.md1Через Skills CLI (Vercel)
npx skills add grafana/skills --skill beyla -a gemini-cli2Командой платформы
gemini skills install https://github.com/grafana/skills --path skills/grafana-core/beylaВручную: положить файлы
.devin/skills/beyla/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add grafana/skills --skill beyla -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Из того же набора44
Похожие
Рядом в теме «DevOps и инфраструктура»
Всё по теме «DevOps и инфраструктура» →Вопросы о beyla
Как установить скилл beyla в Claude Code?
Выполните команду npx skills add grafana/skills --skill beyla -a claude-code. Это добавит скилл в конфигурацию Claude Code.
Что делает скилл beyla?
Он предоставляет готовые сценарии для запуска Grafana Beyla через Docker или Kubernetes DaemonSet. Скилл помогает настроить безагентный сбор трейсов и метрик через eBPF без внедрения SDK в код.
Что требуется для работы Grafana Beyla?
Понадобится ядро Linux 5.8 или новее с активным BTF (/sys/kernel/btf/vmlinux), процессор x86_64 или ARM64, а также права root или CAP_SYS_ADMIN с доступом hostPID: true.
Исходный текст
SKILL.md · Apache-2.0
---
name: beyla
license: Apache-2.0
description: 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.
---
# Grafana Beyla
> **Docs**: https://grafana.com/docs/beyla/latest/
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/vmlinux` must exist)
- Root or `CAP_SYS_ADMIN` (or `privileged: true` in 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
```bash
# 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`](references/kubernetes.md). After applying:
```bash
# 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
```
### 3. Send to Grafana Cloud via Alloy
```yaml
# beyla-config.yml
otel_traces_export: { endpoint: http://alloy:4318 }
otel_metrics_export: { endpoint: http://alloy:4318 }
```
```bash
# 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`](references/config.md).
## Troubleshooting
- `failed to load BPF object` → kernel < 5.8 or BTF missing; check `/sys/kernel/btf/vmlinux`
- No 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: heuristic` and add patterns (see [`references/config.md`](references/config.md))
- Pod restarts with `CrashLoopBackOff` → likely missing `hostPID: true` or `privileged: true` / required capabilities
## Resources
- [Beyla docs](https://grafana.com/docs/beyla/latest/)
- [Beyla GitHub](https://github.com/grafana/beyla)
- [`references/config.md`](references/config.md) — full config, env vars, samplers, routes decorator, generated metrics table, runtime matrix
- [`references/kubernetes.md`](references/kubernetes.md) — DaemonSet + RBAC + discovery filters + Helm
© grafana · Apache-2.0 · grafana/skills