# 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, MQTT. Memcached та інші
- **Інструментування баз даних**: PostgreSQL (включаючи драйвер pgx), MySQL, MongoDB, Redis, Couchbase (N1QL/SQL++ та KV протоколи)
- **Інструментування GenAI**: Трейси та метрики для викликів API OpenAI та Anthropic Claude з автоматичним видобуванням даних
- **Метрики з низькою кардинальністю**: Метрики, сумісні з Prometheus, з низькою кардинальністю для зменшення витрат
- **Мережеве спостереження**: Захоплення мережевих потоків між сервісами з статистикою RTT на рівні хосту
- **Розширене виявлення сервісів**: Покращене виявлення сервісів за допомогою DNS
- **Інтегрування колектора**: Запуск OBI як приймача Колектора OpenTelemetry

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

OBI v0.7.0 представляє кілька значних покращень:

- **StatsO11y**: Нова конвеєрна система статистичних метрик для мережевої статистики на рівні хосту, починаючи з метрик TCP RTT
- **Розширено покриття протоколів**: Додано підтримку трасування протоколу Memcached
- **Покращене інструментування GenAI**: Додано підтримку Anthropic Claude з автоматичним видобуванням даних
- **Покращення Python asyncio**: Додано підтримку пропагування контексту для Python asyncio з використанням `uvloop`
- **Новий приклад сценарію**: Додано приклад NGINX, що охоплює пряме маршрутизування, зворотне проксіювання та телеметрію на основі маршрутів у Docker, Kubernetes та автономних розгортаннях
- **Приклади Prometheus**: Підтримка прикладів у експорті метрик для кращої кореляції з трейсами
- **Нові типи відрізків**: Інструментування SQL тепер генерує серверні відрізки для викликів бази даних
- **Операційне керування**: Додано налаштовуваний `log_format` та інтервал повторного підключення до API Kubernetes
- **Діагностика мережі**: Додано `obi_bpf_network_ignored_packets_total` для усунення проблем з втраченими мережевими пакетами
- **Артефакти випуску**: CycloneDX SBOMs тепер включені в пакети випуску для забезпечення безпеки ланцюга постачання

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

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

## Вимоги {#requirements}

OBI вимагає наступного для роботи:

- Версія ядра Linux 5.8 або новіша (або 4.18 для Redhat Enterprise Linux)
- Процесор x86_64 або arm64
- Підтримка eBPF на рівні виконання (більшість сучасних дистрибутивів Linux)
- Адміністративні привілеї (доступ root) або конкретні можливості, перераховані в [посиланні на конфігурацію](security/)

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

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

OBI протестовано з наступними дистрибутивами Linux:

- Ubuntu 20.04 LTS, 21.04, 22.04 LTS та 23.04
- CentOS 7, 8 та 9
- AlmaLinux 8, 9
- Rocky Linux 8, 9
- Red Hat Enterprise Linux 8, 9
- Debian 11, 12
- openSUSE Leap 15.3, 15.4
- SUSE Linux Enterprise Server 15 SP4

- OBI також підтримує дистрибутиви на базі RedHat: RHEL8, CentOS 8, Rocky8, AlmaLinux8 та інші, які постачають ядро 4.18, що переносить латки, повʼязані з eBPF.

- Для інструментування програм на Go компілюйте з принаймні Go 1.17. OBI підтримує програми Go, створені з основною **версією Go не раніше ніж на 3 версії** позаду поточної стабільної основної версії.
- Адміністративні права доступу для виконання OBI.

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

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

Хоча більшість застосунків eBPF вимагають підвищених привілеїв, OBI дозволяє вам вказати більш тонкі дозволи для роботи з мінімально необхідними правами, такими як: `CAP_DAC_READ_SEARCH`, `CAP_SYS_PTRACE`, `CAP_PERFMON`, `CAP_BPF`, `CAP_CHECKPOINT_RESTORE` та інші.

Деяка функціональність OBI вимагає додаткових дозволів, наприклад, використання проб спостереження мережі з Linux Traffic Control вимагає `CAP_NET_ADMIN`, але це функція, яку ви повинні опціонально ввімкнути.

Для отримання повного списку можливостей, необхідних 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 корелює логи застосунків з розподіленими трейсами для швидшого налагодження та усунення несправностей.
