# OpenTelemetry eBPF Instrumentation

> Дізнайтеся, як використовувати OpenTelemetry eBPF Instrumentation для автоматичного інструментування.

---

LLMS index: [llms.txt](/llms.txt)

---

Бібліотеки OpenTelemetry забезпечують збір телеметричних даних для популярних мов програмування та фреймворків. Однак початок роботи з розподіленим трасуванням може бути складним. У деяких компільованих мовах, таких як Go або Rust, необхідно вручну додавати точки трасування до коду.

OpenTelemetry eBPF Instrumentation (OBI) — це інструмент автоматичної інструменталізації, що дозволяє легко розпочати роботу з Application Observability. OBI використовує eBPF для автоматичної перевірки виконуваних файлів застосунків та мережевого рівня ОС, а також для збору трасування, повʼязаного з веб-транзакціями та показниками Rate Errors Duration (RED) для служб Linux HTTP/S і gRPC. Збір даних відбувається без будь-яких змін у коді або конфігурації застосунку.

OBI пропонує такі можливості:

- **Широка підтримка мов**: Java (JDK 8+), .NET, Go, Python, Ruby, Node.js, C, C++, і Rust
- **Легкість**: Необхідні зміни в коді, немає бібліотек для встановлення, немає потреби в перезавантаженні
- **Ефективна інструменталізація**: Трейси та метрики захоплюються за допомогою eBPF-проб з мінімальними накладними витратами
- **Розподілене трасування**: Розподілені відрізки трейсів захоплюються та передаються до колектора
- **Збагачення логів**: Збагачує логи JSON атрибутами трасування для кореляції логів з трейсами
- **Kubernetes-орієнтованість**: Забезпечує автоматичну інструменталізацію без конфігурації для застосунків Kubernetes
- **Видимість зашифрованих комунікацій**: Захоплення транзакцій через TLS/SSL без розшифрування
- **Пропагування контексту**: Автоматичне поширення контексту трасування між сервісами
- **Підтримка протоколів**: HTTP/S, gRPC, gRPC-Web, JSON-RPC, MQTT, NATS, AMQP 1.0, Memcached та інші
- **Інструментування баз даних**: PostgreSQL (включаючи драйвер pgx), MySQL, MongoDB, Redis, Couchbase (N1QL/SQL++ та KV протоколи)
- **Інструментування для GenAI**: Трасування та метрики для OpenAI, Anthropic Claude, Google AI Studio (Gemini), AWS Bedrock, Qwen (DashScope), MCP через JSON-RPC, а також API вбудовування та переранжування для Voyage AI, Cohere та Jina AI
- **Метрики з низькою кардинальністю**: Метрики, сумісні з Prometheus, з низькою кардинальністю для зменшення витрат
- **Мережеве спостереження**: Захоплення мережевих потоків між сервісами з статистикою RTT на рівні хосту
- **Розширене виявлення сервісів**: Покращене виявлення сервісів за допомогою DNS
- **Інтегрування колектора**: Запуск OBI як приймача Колектора OpenTelemetry

## Останні нововведення (v0.9.0) {#recent-highlights-v090}

OBI v0.9.0 розширює покриття протоколів, витягування даних та документацію з розгортання:

- **Нові можливості підтримки протоколів обміну повідомленнями**: Додано трасування та метрики для NATS та AMQP 1.0
- **Розширене покриття баз даних**: Додано підтримку протоколу MSSQL, включаючи обробку підготовлених запитів та витягування помилок
- **Ширше покриття GenAI**: Додано Qwen (DashScope), MCP через JSON-RPC, провайдери вбудовування (Voyage AI, Cohere, Jina AI) та провайдери переранжування (Cohere, Jina AI, Voyage AI та Qwen)
- **Нові метрики статистики**: Додано метрики невдалих TCP-зʼєднань поряд з наявними метриками RTT TCP
- **Реєстр схем телеметрії**: Додано сумісний з Weaver реєстр схем для метрик та атрибутів, що випускаються OBI
- **Вирівнювання трейсів та графу сервісів**: OBI тепер документує та випускає метрики трейсів та телеметрію графу сервісів, узгоджену з конекторами collector-contrib

Для повного списку змін та нотаток щодо оновлення дивіться [нотатки до випуску](https://github.com/open-telemetry/opentelemetry-ebpf-instrumentation/releases/tag/v0.9.0).

Якщо ви хочете ознайомитися з новими прикладами, дивіться [покроковий приклад NGINX](https://github.com/open-telemetry/opentelemetry-ebpf-instrumentation/tree/v0.9.0/examples/nginx) та [покроковий приклад Apache](https://github.com/open-telemetry/opentelemetry-ebpf-instrumentation/tree/v0.9.0/examples/apache).

## Як працює OBI {#how-obi-works}

Наступна діаграма показує високорівневу архітектуру OBI та місце інструментування eBPF у конвеєрі телеметрії.

![OBI eBPF architecture](./ebpf-arch.svg)

## Сумісність {#compatibility}

OBI підтримує середовища Linux, які відповідають наступним вимогам:

| Вимога          | Підтримується                                                     |
| :-------------- | :---------------------------------------------------------------- |
| Архітектура CPU | `amd64`, `arm64`                                                  |
| Ядро Linux      | `5.8+`, або RHEL-подібні Linux `4.18+` з необхідними патчами eBPF |
| Функції ядра    | BTF                                                               |
| Привілеї        | Root, або можливості Linux, необхідні для увімкнених функцій OBI  |

OBI публікує наступні підтримувані артефакти випуску:

| Артефакт                                         | Підтримувані платформи       |
| :----------------------------------------------- | :--------------------------- |
| `obi` binary archive                             | Linux `amd64`, Linux `arm64` |
| `k8s-cache` binary archive                       | Linux `amd64`, Linux `arm64` |
| `otel/ebpf-instrument` container image           | Linux `amd64`, Linux `arm64` |
| `otel/ebpf-instrument-k8s-cache` container image | Linux `amd64`, Linux `arm64` |

OBI може бути розгорнутий на окремих хостах Linux, у контейнерах та в Kubernetes коли середовище відповідає вищезазначеним вимогам.

OBI не підтримує операційні системи, відмінні від Linux, архітектури Linux, відмінні від `amd64` та `arm64`, середовища Linux без BTF або версії ядра раніше Linux `5.8`, за винятком задокументованого випадку RHEL-подібних `4.18+`.

Деталі підтримки конкретних функцій документуються в цих посібниках:

- [Розподілені трасування](distributed-traces/): підтримка поширення контексту, вимоги до конкретного середовища виконання та обмеження розподіленого трасування
- [Експорт даних](configure/export-data/): підтримка протоколів, баз даних, обміну повідомленнями, GenAI, GPU та інструменталізації бібліотек Go

## Обмеження {#limitations}

OBI надає спостережуваність за застосунками та протоколами без змін коду, але не замінює інструменталізацію на рівні мови програмування у всіх сценаріях. Використовуйте агенти мов або ручну інструменталізацію, коли вам потрібні власні відрізки, атрибути, специфічні для застосунку, бізнес-події або інша телеметрія в процесі виконання, яку eBPF-інструменталізація не може автоматично отримати.

OBI може автоматично захоплювати мережеву та протокольну активність, але не завжди може відновити специфічні для застосунку деталі, які не видимі з точок спостереження eBPF.

Деякі функції також мають додаткові обмеження або вузьку підтримку порівняно з основними вимогами платформи. Для деталей зверніться до документації по конкретних функціях для [розподілених трасувань](distributed-traces/) та [експортованої інструменталізації](configure/export-data/).

Для отримання повного списку можливостей, необхідних OBI, зверніться до [Безпеки, дозволів та можливостей](security/).

## Початок роботи з OBI {#get-started-with-obi}

- Дотримуйтесь документації [налаштування](setup/), щоб почати роботу з OBI, використовуючи Docker або Kubernetes.
- Дізнайтеся про [кореляцію trace-log](./trace-log-correlation/), щоб повʼязати трасування з логами застосунків та збагатити JSON-логи контекстом трасування.
- Дізнайтеся, як запустити [OBI як приймач Колектора](./configure/collector-receiver/) для централізованої обробки телеметрії.

## Усунення несправностей {#troubleshooting}

- Довідку щодо типових проблем див. у посібнику [усунення несправностей](./troubleshooting).

---

Section pages:

- [Налаштування OBI](/uk/docs/zero-code/obi/configure/): Дізнайтеся, як налаштувати OBI.
- [Метрики мережі](/uk/docs/zero-code/obi/network/): Налаштування OBI для спостереження за мережевими метриками між точками.
- [Встановлення OBI](/uk/docs/zero-code/obi/setup/): Дізнайтеся, як налаштувати та запустити OBI.
- [Експортовані метрики OBI](/uk/docs/zero-code/obi/metrics/): Дізнайтеся про метрики HTTP/gRPC, які може експортувати OBI.
- [Безпека, дозволи та можливості OBI](/uk/docs/zero-code/obi/security/): Привілеї та можливості, необхідні для OBI
- [Розподілені трейси з OBI](/uk/docs/zero-code/obi/distributed-traces/): Дізнайтеся про підтримку розподілених трейсів в OBI.
- [Усунення несправностей](/uk/docs/zero-code/obi/troubleshooting/): Усунення типових проблем і помилок OBI
- [Вимірювання загального часу запиту, а не часу обслуговування](/uk/docs/zero-code/obi/requesttime/): Як виміряти загальний час запиту з точки зору клієнта
- [Сумісність OBI та Cilium](/uk/docs/zero-code/obi/cilium-compatibility/): Примітки щодо сумісності при запуску OBI разом з Cilium
- [Кардинальність метрик OBI](/uk/docs/zero-code/obi/cardinality/): Огляд того, як розрахувати кардинальність метрик, що стандартно надаються OBI, враховуючи розмір і складність інструментованого середовища.
- [Кореляція трейсів і логів](/uk/docs/zero-code/obi/trace-log-correlation/): Дізнайтесь як OBI корелює логи застосунків з розподіленими трейсами для швидшого налагодження та усунення несправностей.
