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, .NET, Go, Python, Ruby, Node.js, C, C++, і Rust
  • Легкість: Необхідні зміни в коді, немає бібліотек для встановлення, немає потреби в перезавантаженні
  • Ефективна інструменталізація: Трейси та метрики захоплюються за допомогою eBPF-проб з мінімальними накладними витратами
  • Розподілене трасування: Розподілені відрізки трейсів захоплюються та передаються до колектора
  • Kubernetes-орієнтованість: Забезпечує автоматичну інструменталізацію без конфігурації для застосунків Kubernetes
  • Видимість зашифрованих комунікацій: Захоплення транзакцій через TLS/SSL без розшифрування
  • Пропагування контексту: Автоматичне поширення контексту трасування між сервісами
  • Підтримка протоколів: HTTP/S, gRPC та gRPC-Web
  • Метрики з низькою кардинальністю: Метрики, сумісні з Prometheus, з низькою кардинальністю для зменшення витрат
  • Мережеве спостереження: Захоплення мережевих потоків між сервісами
  • Трасування бази даних: Захоплення запитів до бази даних та зʼєднань

Вимоги

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

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

Сумісність

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.

Обмеження

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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