Вступ до OpenTelemetry для початківців

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

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

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

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

Щоб зрозуміти OpenTelemetry, вам спочатку потрібно знати, що таке розподілене трасування.

Що таке розподілене трасування?

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

Коли надходить запит користувача, ми хочемо створити трасування, тобто загальну інформацію, яка описує, як наша система відповідає на запит користувача. Траси складаються з проміжків, і кожен проміжок означає певну пару запиту та відповіді, яка бере участь у обслуговуванні запиту користувача. Батьківський діапазон описує затримку, яку спостерігає кінцевий користувач. Дочірній діапазон використовується для розуміння того, як певна служба в розподіленій системі була викликана та відповіла інформацією про затримку.

Що таке OpenTelemetry?

OpenTelemetry це проект із відкритим вихідним кодом, розміщений CNCF, який надає стандартний спосіб генерації телеметричних даних. Він був створений шляхом злиття OpenTracingстандарт для створення даних трасування, і OpenCensusякий був стандартом для створення даних метрик.

  Як відкласти вкладки у Firefox

OpenTelemetry пропонує єдиний набір API, агентів, служб збору даних і бібліотек для захоплення розподілених трасувань і показників із вашої програми. OpenTelemetry стандартизує те, як ми збираємо телеметричні дані та надсилаємо їх у серверну систему на ваш вибір. Це надає вам нейтральний шлях до інструментарію, який не залежить від постачальника, і дає вам можливість змінювати серверну систему без повторного інструментування коду.

Таким чином, ви можете інструментувати свої програми за допомогою агента, що не залежить від постачальника, і водночас надсилати свої показники та трасування постачальнику SaaS, наприклад Datadog. Потім, якщо ви хочете змінити постачальника (наприклад, з Datadog на Dynatrace), ви можете зробити це, не змінюючи код програми.

Проект OpenTelemetry має на меті надати єдиний набір бібліотек і агентів API для збору показників і розподілених трасувань із ваших програм. Це стосується багатьох мов і платформ. Проект OpenTelemetry також включає додаткову службу збору даних і має спеціальне сховище для специфікацій. Щоб було зрозуміло, OpenTelemetry — це не Jaeger або Prometheus, які є спостережуваними бек-ендами. Але це допомагає експортувати дані до відкритих і комерційних систем.

Нижче наведено функції, які надає OpenTelemetry:

  • Стандартизація збору телеметричних даних, яку можуть дотримуватися організації, що полегшує перехід між постачальниками
  • Не залежна від постачальника семантична конвенція з відкритим стандартом для процесу збору даних
  • Збирач, який можна розгортати як агента чи шлюзи чи різними способами
  • Підтримує кілька форматів розповсюдження контексту для міграції
  • Наскрізне рішення для створення, видачі, збору, обробки та експорту телеметричних даних
  • Засіб для надсилання даних у різні пункти призначення паралельно з повним контролем над ними

Компоненти OpenTelemetry

Нижче наведено основні компоненти OpenTelemetry:

  • Proto: цей компонент використовується для визначення колекторів, бібліотек інструментів тощо, які є незалежними від мови типами інтерфейсу для OpenTelemetry.
  • Колектор: Колектори використовуються для отримання, обробки та експорту телеметричних даних. Ця реалізація колекторів має бути незалежною від постачальника. За замовчуванням усі телеметричні дані експортуються бібліотеками приладів у цьому місці.
  • Специфікація: цей компонент описує вимоги та очікування від реалізації різними мовами, що складаються з API, SDK і даних. API генерує телеметричні дані, обробку та можливості експорту для впровадження API, які надаються SDK. Data має семантичні угоди для підтримки всіх видів постачальників без зміни коду.
  • Бібліотеки інструментів: вони доступні кількома мовами як частина проекту OpenTelemetry. Ці бібліотеки використовуються для забезпечення спостережуваності для інших бібліотек, щоб усі додатки спостерігалися за допомогою викликів OpenTelemetry API.
  Як перемикатися між додатками на iPhone X

Архітектура OpenTelemetry

Зображення з New Relic

На високому рівні OpenTelemetry складається з трьох основних частин:

  • Набір API для інструментальних програм, бібліотек і фреймворків.
  • SDK реалізує API.
  • Додатковий колектор може отримувати, агрегувати та експортувати телеметричні дані, куди вам це потрібно.

Метою API є створення інструментів для бібліотек і програмного коду. API має чотири основні розділи: трасування, вимірювачі, спільний контекст і семантичні угоди.

  • API Tracer підтримує створення, анотування та завершення діапазонів.
  • API вимірювача складається з кількох метричних інструментів. Прикладами таких інструментів є спостерігачі, реєстратори значень, лічильники.
  • Ви можете відстежувати та виконувати span-контекст, увімкнувши контекстний API, і поширювати цей контекст як усередині вашої системи, так і за її межами.
  • Усі вказівки та правила для основного іменування, наприклад іменування діапазонів, атрибутів, міток і метричних інструментів, присутні в семантичних угодах. Ці угоди впроваджуються для забезпечення узгодженості між різними реалізаціями мови та для зовнішніх інструментів.

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

Колектор є важливою частиною архітектури OpenTelemetry. Це окрема служба, яка може отримувати, обробляти та експортувати дані телеметрії з різних джерел, включаючи OpenCensus, Zipkin, Jaeger і протокол OpenTelemetry. За допомогою колекторів ви можете експортувати діапазони та показники до кількох постачальників і систем телеметрії з відкритим кодом.

  Що означає WDYM?

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

Як працює OpenTelemetry?

Всередині кожної служби у вашому розгортанні встановіть клієнт OpenTelemetry. Клієнтом є SDK; SDK, у свою чергу, має API. Фреймворки та бібліотеки ваших програм використовують цей API інструментів для опису роботи, яку вони виконують. Потім SDK експортує зібрані спостереження до служби конвеєрної обробки даних під назвою Collector.

OpenTelemetry має власний протокол даних, OTLP, але збирач може переводити OTLP у різні формати, включно з Зіпкін, Єгері Прометей. Примітно, що OpenTelemetry не надає власного бек-енду чи інструменту аналізу; це тому, що в основі OpenTelemetry лежить робота зі стандартизації. Мета — розробити універсальну мову для опису роботи комп’ютерів у хмарному середовищі. Мета не полягає в стандартизації того, як ми аналізуємо ці дані. Натомість ми сподіваємося, що OpenTelemetry допоможе просунути світ спостережливості вперед, дозволяючи швидко почати роботу з новими інструментами аналізу, не перебудовуючи всю цю екосистему телеметричного програмного забезпечення.

Коли ви надсилаєте багато даних через систему, потрібно багато чого враховувати. На щастя, OpenTelemetry продумав усе та має рішення для кожного з цих питань. Перш за все, OpenTelemetry є гнучким і обробляє численні формати розповсюдження контексту. Це означає, що навіть незважаючи на наявність стандарту, все ще є можливість вибору в межах цього стандарту. Отже, якщо ви використовуєте щось на зразок формату контексту трасування w3c або розповсюдження b3, це різні стандарти в межах стандарту, які дозволяють вашим службам з’єднувати точки.

Висновок

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

На додаток до збору даних, OpenTelemetry надає засоби обробки та конвеєрної обробки даних, які дозволяють змінювати формати даних, маніпулювати вашими даними та всі інструменти, необхідні для створення надійного конвеєра телеметрії в сучасній системі.

Отже, це все про OpenTelemetry, спробуйте цей інструмент.