OpenTelemetry eBPF Instrumentation

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

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

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

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

  • Широка підтримка мов: Java (JDK 8+), .NET, Go, Python, Ruby, Node.js, C, C++, і Rust
  • Легкість: Необхідні зміни в коді, немає бібліотек для встановлення, немає потреби в перезавантаженні
  • Ефективна інструменталізація: Трейси та метрики захоплюються за допомогою eBPF-проб з мінімальними накладними витратами
  • Розподілене трасування: Розподілені відрізки трейсів захоплюються та передаються до колектора
  • Збагачення логів: Збагачує логи JSON та логи у вигляді звичайного тексту атрибутами трасування для кореляції логів з трейсами
  • Kubernetes-орієнтованість: Забезпечує автоматичну інструменталізацію без конфігурації для застосунків Kubernetes
  • Видимість зашифрованих комунікацій: Захоплення транзакцій через TLS/SSL без розшифрування
  • Поширення контексту: Автоматичне поширення контексту трасування між сервісами
  • Підтримка протоколів (клієнт та сервер): HTTP/S, HTTP/2, gRPC, Kafka, NATS, MQTT, Memcached, SunRPC (включаючи NFS) та JSON-RPC
  • Підтримка протоколів (тільки клієнт): AMQP 1.0 та DNS-запити
  • Інструментування баз даних (клієнт та сервер): PostgreSQL (включаючи драйвер pgx), MySQL, MSSQL та Redis
  • Інструментування баз даних (тільки клієнт): Couchbase (N1QL/SQL++ та протокол KV), Aerospike, Elasticsearch та OpenSearch
  • Моніторинг корисного навантаження HTTP: GraphQL на стороні сервера та Elasticsearch, OpenSearch, AWS S3 і AWS SQS на стороні клієнта, а також MCP через JSON-RPC як на клієнтах, так і на серверах
  • Інструментування для GenAI: Трасування та метрики для OpenAI, шлюзів, сумісних з OpenAI, Ollama, Anthropic Claude, Google AI Studio (Gemini), AWS Bedrock, Qwen (DashScope), MCP через JSON-RPC, API вбудовування та переранжування, а також систем векторного пошуку
  • Метрики часу виконання: збір метрик подій Go, HotSpot JVM та циклу подій Node.js без внесення змін до SDK
  • Інструментування GPU: захоплення підтримуваних операцій CUDA під час виконання в середовищі Linux
  • Метрики відрізків та графів взаємодії сервісів: експорт метрик відрізків застосунків та взаємозвʼязків між сервісами
  • Метрики з низькою кардинальністю: Метрики, сумісні з Prometheus, з низькою кардинальністю для зменшення витрат
  • Мережеве спостереження: Захоплення мережевих потоків між сервісами з лічильниками байтів і пакетів, RTT TCP, ретрансмісією, з’єднаннями та метриками введення/виведення сокетів
  • Розширене виявлення сервісів: Покращене виявлення сервісів за допомогою DNS
  • Інтегрування колектора: Запуск OBI як приймача Колектора OpenTelemetry

Останні нововведення (v0.12.1)

OBI v0.12.1 — це опублікована версія змін, підготовлених для v0.12.0. Хоча версія v0.12.0 була позначена тегом, її не було опубліковано через невдалу перевірку релізу. Встановіть версію v0.12.1, яка містить заплановані зміни для v0.12.0 та виправлення, пов’язані з випуском.

Серед найважливіших змін:

  • Ручні відрізки Node.js: фіксує відрізки, створені за допомогою @opentelemetry/api, коли застосунок не зареєстрував SDK OpenTelemetry
  • Метрики середовища виконання Node.js: додає метрики часу циклу подій, завантаженості та затримки
  • Більш точні фільтри Config v2: застосовує фільтри застосунку незалежно за протоколом та сигналом
  • Збагачення контексту процесу: зчитує атрибути ресурсів та метадані, які інструментовані процеси публікують через експериментальне зіставлення OTEL_CTX
  • Метрики сервера бази даних: додає db.server.operation.duration для серверних операцій Redis, Memcached та SQL
  • Вдосконалені імена Java-сервісів: Використовує назву застосунку Spring Boot, заголовок маніфесту JAR або базову назву JAR, перш ніж перейти до java
  • Виправлення, що підвищують надійність: Захищає ядра з приватним стеком від витіснення uprobe, запобігає небезпечному поширенню контексту, коли необхідна проба не може підключитися, а також виправляє батьківство трасування, обгорнуті з’єднання Go TLS, збагачення журналів короткочасних процесів та обробку атрибутів OTLP

Для повного списку змін та нотаток щодо оновлення дивіться нотатки до випуску.

Якщо ви хочете ознайомитися з новими прикладами, дивіться покроковий приклад NGINX та покроковий приклад Apache.

Як працює OBI

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

OBI eBPF architecture

Сумісність

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

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

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

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

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

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

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

  • Розподілені трасування: підтримка поширення контексту, вимоги до конкретного середовища виконання та обмеження розподіленого трасування
  • Асоціація контексту трасування: підтримка звʼязку батько-нащадок для асинхронної та потокової обробки запитів
  • Експорт даних: підтримка протоколів, баз даних, обміну повідомленнями, GenAI, GPU та інструменталізації бібліотек Go

Обмеження

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

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

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

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

Початок роботи з OBI

  • Дотримуйтесь документації налаштування, щоб почати роботу з OBI, використовуючи Docker або Kubernetes.
  • Дізнайтеся про кореляцію trace-log, щоб повʼязати трасування з логами застосунків та збагатити JSON-логи контекстом трасування.
  • Дізнайтеся, як запустити OBI як приймач Колектора для централізованої обробки телеметрії.

Усунення несправностей


Налаштування OBI

Дізнайтеся, як налаштувати OBI.

Метрики мережі

Налаштування OBI для спостереження за мережевими метриками між точками.

Встановлення OBI

Дізнайтеся, як налаштувати та запустити OBI.

Експортовані метрики OBI

Дізнайтеся про метрики застосунків, середовища виконання та мережі, які може експортувати OBI.

Безпека, дозволи та можливості OBI

Привілеї та можливості, необхідні для OBI

Розподілені трейси з OBI

Дізнайтеся про підтримку розподілених трейсів в OBI.

Усунення несправностей

Усунення типових проблем і помилок OBI

Вимірювання загального часу запиту, а не часу обслуговування

Як виміряти загальний час запиту з точки зору клієнта

Асоціація контексту трейсу в OBI

Дізнайтеся, як OBI асоціює вихідні запити з вхідними батьківськими запитами для розподілених трейсів.

Сумісність OBI та Cilium

Примітки щодо сумісності при запуску OBI разом з Cilium

Кардинальність метрик OBI

Огляд того, як розрахувати кардинальність метрик, що стандартно надаються OBI, враховуючи розмір і складність інструментованого середовища.

Кореляція трейсів і логів

Дізнайтесь як OBI корелює логи застосунків з розподіленими трейсами для швидшого налагодження та усунення несправностей.


Востаннє змінено July 12, 2026: [uk] Ukrainian documentation for OpenTelemetry (83a19542)