OpenTelemetry eBPF Instrumentation відзначає перший випуск
Після значної співпраці між Grafana Labs, Splunk, Coralogix, Odigos та багатьма іншими членами спільноти, ми раді оголосити про випуск першої альфа-версії OpenTelemetry eBPF Instrumentation, або скорочено OBI.
Ця подія є значною віхою після того, як проєкт, спочатку відомий як Grafana Beyla, був переданий раніше цього року компанією Grafana Labs. Розробка eBPF-інструментів значно прискорилася після того, як проєкт став керуватися під егідою OpenTelemetry. Було додано багато нових протоколів, покращилася якість — особливо при розгортанні в масштабах, а тести виконуються в 10 разів швидше. Це справжнє свідчення цінності спільноти OpenTelemetry.
То що ж таке інструментування OpenTelemetry eBPF і чому це має вас зацікавити?
На відміну від багатьох інших підходів до інструментування OpenTelemetry, інструментування OpenTelemetry eBPF (OBI) працює поза процесом і виконує інструментування на рівні протоколу, а не на рівні бібліотек. Воно використовує глибоку інтеграцію з ядром, ізоляцію процесів, безпеку під час виконання та переваги продуктивності технології eBPF.
Оскільки OBI виконує інструментування на рівні протоколу, це означає, що ви можете фактично інструментувати всі застосунки (для всіх мов програмування, всіх бібліотек) без жодних зусиль, за допомогою однієї команди, і ви завжди отримаєте цілісну картину. Давайте розглянемо цю попередню заяву трохи детальніше, щоб зрозуміти, що це насправді означає для кінцевого користувача:
- Ніяких перезапусків, ніяких змін коду, ніяких змін конфігурації застосунку! OBI само по собі забезпечує повністю автоматичне захоплення метрик і трейсів. Краса eBPF полягає в тому, що ви можете додати щось у середовище, що вже працює, і бути впевненим, що це не дестабілізує вашу систему/кластер/застосунок.
- Ніяких нових залежностей — ніяких нових вразливостей безпеки. Оскільки OBI працює поза процесом, ми не додаємо нічого до вашого застосунку. Вам не потрібно оновлювати або додавати залежності OpenTelemetry SDK, або латати ваш застосунок, якщо залежність OpenTelemetry SDK, яку ви додали, має вразливість. Ви можете окремо захистити доступ до OBI у вашій системі, і це не вплине ні на що інше, що ви встановили.
- Ваші застосунки ніколи не сповільнюються через додавання телеметрії. Оскільки ваш застосунок ніколи не повинен нічого додавати або виконувати будь-яку роботу для експорту телеметрії, продуктивність вашого застосунку не підлягає впливу захоплення телеметрії. OBI виконує більшість роботи на рівні ядра і сильно оптимізований для продуктивності. Він має мінімальний обсяг використання ЦП і памʼяті навіть при дуже високих швидкостях запитів.
- Ваша телеметрія завжди є цілісною для всіх мов програмування та бібліотек. OBI буде підтримувати вашу телеметрію на останній стабільній специфікації OpenTelemetry, для всіх ваших служб, без необхідності впорядковувати відповідність вимогам.
- Широкий спектр підтримуваних інструментів протоколів, HTTP/HTTPS, HTTP/2, gRPC, SQL, Redis, MongoDB, Kafka, GraphQL, Elasticsearch/OpenSearch, AWS S3. Автоматичне поширення контексту трасування для всіх мов програмування.
Чи варто використовувати OpenTelemetry eBPF Instrumentation для всього?
Так і …
OpenTelemetry eBPF Instrumentation (OBI) підходить для певних завдань, але стає ще кращим у поєднанні з іншими технологіями OpenTelemetry. Погляньмо, що це означає на практиці.
OpenTelemetry eBPF Instrumentation — це чудовий інструмент для початку роботи з OpenTelemetry. Він може швидко надати вам базові сигнали, такі як метрики RED (Request Error Duration), графи сервісів і трейси для певних типів застосунків. Однак, оскільки захоплення даних виконується на рівні ядра, певні рівні деталізації, які можуть бути надані іншими типами інструментування OpenTelemetry, не будуть доступні. Розглянемо деталі того, що це означає:
- Спробуйте OBI, якщо у вас немає телеметрії взагалі або часткової телеметрії, це простий спосіб отримати все автоматично проінструментоване (особливо скомпільовані бінарники). OBI виявляє, що застосунок проінструментовано за допомогою іншого OpenTelemetry SDK і не дублює сигнали. Тому легко і безпечно впроваджувати його в середовище з інструментованими та неінструментованими застосунками.
- Спробуйте OBI, якщо ваш застосунок використовує бібліотеку без підтримки OpenTelemetry, наприклад, бібліотеку, яка старша за офіційно підтримувані бібліотеки, або бібліотеку, для якої ніхто не надав інструментування.
- Залиште сервіси, які ви успішно інструментували за допомогою OpenTelemetry SDK або агентів. Причини переходити з інших типів інструментування OpenTelemetry виникають досить рідко, якщо ви не стикаєтеся з істотними проблемами продуктивності або витрат. У такому випадку OBI може допомогти.
- Хоча OBI є відмінним інструментом для збору метрик і графів сервісів, він не має хорошої підтримки розподіленого трасування для певних мов і технологій. Наприклад, наразі він не обробляє розподілене трасування для реактивних фреймворків програмування, віртуальних потоків Java або складних пулів потоків. Загалом, OBI добре працює для розподіленого трасування для Go (HTTP і gRPC), Node.js (HTTP), Python (HTTP), NGINX (HTTP), PHP (HTTP/FPM), тоді як для інших мов програмування підтримка буде сильно варіюватися в залежності від того, як ваш застосунок внутрішньо управляє потоками та зʼєднаннями. Ми шукаємо допомоги для розширення підтримки розподіленого трасування. Обмеження розподіленого трасування задокументовані в розділі Розподілені трасування з OBI нашої документації.
Підбиваючи підсумки
Ми вважаємо, що спостережуваність повинна бути вбудованою можливістю сучасної інфраструктури, а не додатковим центром витрат. OpenTelemetry eBPF Instrumentation дозволяє вам додати важливе захоплення телеметрії до вашого середовища за допомогою однієї команди. Не повинно бути більше виправдань, чому ви не використовуєте OpenTelemetry. Ніяких зусиль, ніяких простоїв, ніяких змін у коді чи конфігурації — є всі підстави спробувати.
Початок роботи з OpenTelemetry eBPF Instrumentation
Почати роботу з OpenTelemetry eBPF Instrumentation (OBI) просто! Ви можете розгорнути його як автономний інструмент, як образ Docker або як Daemonset Kubernetes (або sidecar пода). Для отримання детальних інструкцій щодо встановлення, налаштування та запуску вашого застосунку з OBI, ознайомтеся з посібником з початку роботи.
Для повних прикладів того, як встановити OBI в середовищах Docker, ви можете ознайомитися з нашими численними прикладами інтеграційних тестів, які поєднують кілька мов програмування, бази даних і хмарних сервісів. Також є кілька прикладів Kubernetes у нашому тестовому репозиторії.
Наступні кроки
Якщо ви хочете звʼязатися з нами, запропонувати функцію, над якою ми повинні працювати, або стежити за нашою роботою та бути в курсі наших релізів, ви завжди можете знайти нас на GitHub в репозиторії OpenTelemetry eBPF Instrumentation. Ми також проводимо регулярні та дуже активні зустрічі SIG Community Call щотижня, де ви можете приєднатися та стати частиною нашої спільноти. Якщо ви не можете відвідати нашу зустріч спільноти, ви також можете легко знайти нас на каналі CNCF Community Slack #otel-ebpf-instrumentation.
Подяки
Цей альфа-реліз є результатом безлічі годин роботи учасників з усього світу. Дякуємо всім, хто зробив свій внесок у код, документацію, відгуки та ентузіазм, щоб зробити цей етап можливим.