К основному содержанию
скилл CX Codex

otel-profiles — скилл для Claude Code: что делает и как установить

Помогает развернуть eBPF-профилировщик OpenTelemetry на Linux, в Docker и Kubernetes, настроить пайплайн profiles и отправку данных во внешние бэкенды вроде Pyroscope.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add ollygarden/opentelemetry-agent-skills --skill otel-profiles -a claude-code
Открыть на GitHub

Что делает otel-profiles

Скилл содержит инструкции по настройке непрерывного профилирования через специализированный дистрибутив otelcol-ebpf-profiler и ресивер profiling. Инструмент снимает профили со всех процессов хоста на уровне ядра Linux без правок в коде приложений.

Внутри описаны системные требования к окружению: ядро Linux 5.10 или новее, архитектуры amd64 или arm64, права CAP_SYS_ADMIN либо CAP_BPF и примонтированная файловая система tracefs. Образ коллектора собран на базе FROM scratch, поэтому отладка внутри контейнера через exec не сработает — проверять состояние придётся исключительно по системным логам.

Для запуска сборщика обязательно передавать флаг --feature-gates=+service.profilesSupport. Скилл сфокусирован только на сигнале профилей и не рассчитан на настройку трейсинга или метрик через обычные SDK.

Какие задачи решает

  • настроить непрерывный сбор профилей eBPF на хосте Linux или в Docker
  • подготовить пайплайн профилирования для экспорта в Grafana Cloud или Pyroscope
  • собрать манифест набора демонов для запуска профилировщика в Kubernetes
  • устранить сбои с монтированием tracefs и пространством имён PID

Примеры запросов агенту

  • Подготовь конфигурацию для сборщика профилей eBPF под Docker с монтированием tracefs.
  • Собери манифест для запуска профилировщика OpenTelemetry в кластере Kubernetes.
  • Помоги исправить ошибку с флагом service.profilesSupport при старте сборщика.

Как установить otel-profiles

1Через Skills CLI (Vercel)

npx skills add ollygarden/opentelemetry-agent-skills --skill otel-profiles -a claude-code

2Вручную: положить файлы

~/.claude/skills/otel-profiles/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/otel-profiles/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о otel-profiles

Как установить otel-profiles в Claude Code?

Выполните в терминале команду npx skills add ollygarden/opentelemetry-agent-skills --skill otel-profiles -a claude-code.

Что делает скилл otel-profiles?

Он предоставляет агенту правила и шаблоны конфигураций для развёртывания сборщика профилей OpenTelemetry на базе eBPF и отладки проблем с окружением Linux.

Какие системные требования нужны для работы профилировщика?

Понадобятся Linux с ядром версии 5.10 или свежее на платформе amd64 либо arm64, права CAP_SYS_ADMIN или CAP_BPF и доступ к точке /sys/kernel/tracing.

Исходный текст

SKILL.md · Apache-2.0
---
name: otel-profiles
description: OpenTelemetry profiles signal and the eBPF profiler (otelcol-ebpf-profiler, `profiling` receiver). Use when setting up continuous profiling with OpenTelemetry, deploying the eBPF profiler on Linux hosts, Docker, or Kubernetes (DaemonSet, kind, k3d), building a profiles pipeline, sending OTLP profiles to Pyroscope, Grafana Cloud Profiles, or another backend, getting flame graphs from OTel, enabling off-CPU profiling, or debugging profiler errors about tracefs, PID namespaces, missing pods, or the service.profilesSupport feature gate. Not for SDK tracing or metrics setup.
---

# OpenTelemetry Profiles

The main OpenTelemetry producer is the [eBPF profiler](https://github.com/open-telemetry/opentelemetry-ebpf-profiler), shipped as the `profiling` receiver in the [`otelcol-ebpf-profiler`](https://github.com/open-telemetry/opentelemetry-collector-releases/tree/main/distributions/otelcol-ebpf-profiler) Collector distribution. It profiles every process on a Linux host with no application changes.

Maturity: the signal entered [public Alpha](https://opentelemetry.io/blog/2026/profiles-alpha/) in March 2026, the OTLP profiles proto (`v1development`) is Development, the `profiling` receiver is Development, and the Collector gate `service.profilesSupport` is alpha. Expect breaking changes; pin the profiler, Collector, and backend versions together.

Collector-side component facts (OTLP receiver/exporter profile support, the fixed `/v1development/profiles` HTTP path, `k8s_attributes`, `memory_limiter`, `filter` `profile_conditions`) live in the `otel-collector` skill's component pages; OTTL `profile`/`profilesample` contexts live in `otel-ottl`.

`otelcol-ebpf-profiler` `0.163.1` bundles only: receivers `profiling`, `nop`; processors `memory_limiter`, `k8s_attributes`, `resource_detection`, `resource`, `transform` (plus `batch`, which does not support profiles); exporters `otlp_grpc`, `otlp_http`, `debug`, `file`, `nop`; extensions `health_check`, `pprof`, `opamp`, `offcpu`. For anything else (`filter`, the `basicauth` extension, vendor exporters), relay to a regular Collector or build a distribution (`otel-collector-builder` skill).

## Version matrix (Verified 2026-10-19)

| Artifact | Version | What it means |
|---|---|---|
| `otel/opentelemetry-collector-ebpf-profiler` | `0.163.0`, `0.163.1` (newest release at verification, 2026-10-16) | Pins ebpf-profiler `v0.0.202640`: `pid_namespace_translation_mode` ([#1801](https://github.com/open-telemetry/opentelemetry-ebpf-profiler/pull/1801)); bundles the `offcpu` extension. |
| Same image, `0.162.0` | last release before the change | Pins ebpf-profiler `v0.0.202636`: boolean `pid_namespace_translation`; does not bundle `offcpu`. |

Evidence: [Docker Hub tags](https://hub.docker.com/r/otel/opentelemetry-collector-ebpf-profiler/tags), the [`v0.163.0`](https://github.com/open-telemetry/opentelemetry-collector-releases/blob/v0.163.0/distributions/otelcol-ebpf-profiler/manifest.yaml) and [`v0.163.1`](https://github.com/open-telemetry/opentelemetry-collector-releases/blob/v0.163.1/distributions/otelcol-ebpf-profiler/manifest.yaml) distribution manifests.

Read [references/receiver.md](references/receiver.md) when setting keys beyond `samples_per_second`, enabling off-CPU or OBI correlation, or pinning a release not in this table (keys follow the pinned ebpf-profiler, not the Collector version).

## Workflow

1. **Pick the image and pin.** Use the latest release unless a needed key or component is missing from it (see the matrix). Alternative: an OCB build (`otel-collector-builder` skill) based on the [distribution manifest](https://github.com/open-telemetry/opentelemetry-collector-releases/blob/main/distributions/otelcol-ebpf-profiler/manifest.yaml).
2. **Pick the environment.**
   - Linux host or plain Docker: [Run on a host](#run-on-a-host) below.
   - Kubernetes: [references/kubernetes.md](references/kubernetes.md) (DaemonSet, RBAC, Kubernetes metadata, memory sizing).
   - Kubernetes nodes that are themselves containers (kind, k3d, Docker-in-Docker, minikube with the docker driver): also [references/nested-containers.md](references/nested-containers.md).
3. **Wire the pipeline.** `profiles` pipeline: `profiling` receiver, `memory_limiter` first, enrichment processors, then `otlp_grpc` or `otlp_http`. Start the Collector with `--feature-gates=+service.profilesSupport`. Run `validate --config=<file> --feature-gates=+service.profilesSupport` with the target image; it catches wrong keys for the pinned version.
4. **Export and verify.** Add `debug` (`verbosity: basic`) first: each `reporter_interval` it logs `"resource profiles": N, "sample records": M`; no lines or zero counts mean the receiver is not producing (see troubleshooting). `verbosity: detailed` shows resource attributes. Then add the backend: [references/backends.md](references/backends.md) for endpoints, auth, and per-backend label behavior.
5. **Troubleshoot** by exact error string: [references/troubleshooting.md](references/troubleshooting.md).

## Run on a host

The profiler needs root or `CAP_SYS_ADMIN`/`CAP_BPF`/`CAP_PERFMON`, the host PID namespace, and a mounted tracefs. A container gets a fresh `/sys` without tracefs even when privileged, so bind-mount it:

```bash
docker run -d --name otel-ebpf-profiler --privileged --pid=host \
  -v /sys/kernel/tracing:/sys/kernel/tracing \
  -v "$PWD/config.yaml:/etc/otelcol/config.yaml:ro" \
  otel/opentelemetry-collector-ebpf-profiler:0.163.1 \
  --config=/etc/otelcol/config.yaml --feature-gates=+service.profilesSupport
```

```yaml
receivers:
  profiling:
    samples_per_second: 20      # default
processors:
  memory_limiter:
    check_interval: 1s
    limit_mib: 800
    spike_limit_mib: 200
exporters:
  debug:
    verbosity: basic
  otlp_grpc:
    endpoint: profiles-backend:4317   # backend-specific, see references/backends.md
    tls:
      insecure: true
service:
  pipelines:
    profiles:
      receivers: [profiling]
      processors: [memory_limiter]
      exporters: [otlp_grpc, debug]
```

The image is built `FROM scratch`: no shell, so debug from logs, not `exec`. Expected startup lines: `eBPF tracer loaded`, `Attached sched monitor`, `Everything is ready`.

## Known limitations

- The receiver profiles every process; it has no process, container, or namespace selection, and upstream declined to add one ([#358](https://github.com/open-telemetry/opentelemetry-ebpf-profiler/issues/358)). To keep a subset, filter on enrichment attributes with `filter` `profile_conditions`; see "Keep only some workloads" in [references/kubernetes.md](references/kubernetes.md). Sampling cost on the node stays the same; only exported volume drops.
- Linux `amd64`/`arm64`, kernel 5.10+ (checked at config validation; `no_kernel_version_check` bypasses it). Backends may lag the proto; check which OTLP profiles version they accept.
- Trace-to-profile correlation is partial: OTLP profiles can link samples to `trace_id`/`span_id`, but the profiler fills them only from a context producer (OBI via `obi_process_ctx`; the [thread-context OTEP](https://github.com/open-telemetry/opentelemetry-specification/pull/4947) implementation is in progress). Go pprof labels are read as custom labels.

© ollygarden · Apache-2.0 · ollygarden/opentelemetry-agent-skills

Похожие скиллы

Все скиллы по теме «DevOps и инфраструктура» →
wizard Matt Pocock Скилл создаёт интерактивный bash-скрипт для ручных шагов: настройки сервисов, секретов CI и разовых миграций. 553 369установок hyperframes-cli heygen-com Управляет проектами HyperFrames через терминал: собирает таймлайн, проверяет контраст кадров, запускает предпросмотр и рендерит видео локально или в облаке. CX Codex +1 1 300 000установок setup-pre-commit Matt Pocock Скилл настраивает pre-commit для JavaScript-репозитория: Husky запускает форматирование, проверку типов и тесты перед коммитом. 489 289установок using-git-worktrees Jesse Vincent Готовит изолированное рабочее дерево перед доработкой или выполнением плана. Проверяет текущий репозиторий, выбирает нативные средства платформы либо Git. CX Codex 217 153установок finishing-a-development-branch Jesse Vincent Скилл проверяет тесты и помогает выбрать, как завершить работу в ветке: слить её, открыть Pull Request или оставить как есть. CX Codex 214 439установок orca-cli stablyai Скилл даёт агенту доступ к worktree, терминалам, артефактам и встроенному браузеру Orca через CLI. Пригодится, когда работа идёт в окружении Orca. CX Codex +1 354 000установок

Из того же набора20

otel-semantic-conventions Скилл подтягивает вышедшие семантические конвенции OpenTelemetry: имена групп, атрибуты и правила именования спанов. Пригодится, когда агент придумывает ключи вместо готовых. CX Codex +1 ★ 116звёзд репо otel-sdk-versions Ищет актуальные релизы OpenTelemetry SDK, компонентов Collector, схем конфигурации и семантических конвенций. Пригодится при настройке телеметрии в проекте. CX Codex +1 ★ 116звёзд репо otel-ruby Помогает агенту настраивать и проверять OpenTelemetry в Ruby-приложениях. Пригодится для трассировки, метрик, логов и инструментирования Rails и других библиотек. CX Codex +1 ★ 116звёзд репо otel-python Скилл для настройки и отладки OpenTelemetry в Python-сервисах: SDK, декларативный конфиг, автоинструментация без правок кода. CX Codex +1 ★ 116звёзд репо otel-ottl Скилл помогает писать выражения на OpenTelemetry Transformation Language (OTTL) для трансформирования и фильтрации телеметрии в Collector. CX Codex +1 ★ 116звёзд репо otel-js Помогает агенту настроить OpenTelemetry в сервисе на Node.js, JavaScript или TypeScript. Пригодится, когда нужно добавить трассировку или разобраться с NodeSDK. CX Codex +1 ★ 116звёзд репо otel-java Настраивает OpenTelemetry в Java-сервисах: конфигурирует Javaagent, Spring Boot Starter и скрывает чувствительные данные из трейсов. CX Codex +1 ★ 116звёзд репо otel-go Скилл помогает настраивать и проверять OpenTelemetry в Go-сервисах. Пригодится для инструментирования, обновления SDK и разбора производительности. CX Codex +1 ★ 116звёзд репо

Спонсоры проекта

Компании, которые помогают держать аналитику открытой