OpenTelemetry eBPF Instrumentation

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

Бібліотеки 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)

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

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

Якщо ви хочете ознайомитися з новими прикладами, дивіться покроковий приклад 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


Востаннє змінено December 26, 2024: [uk] Ukrainian documentation for OpenTelemetry (cf1a5745)