Підсистема трасування запитів

🌐 Цей документ доступний українською та англійською мовами. Використовуйте перемикач у правому верхньому куті, щоб змінити версію.

1. Загальний опис

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

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

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

2. Функції підсистеми

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

  • Відображення часу виконання ланцюгів та ланок запитів

  • Підсистема надає детальні метрики для трейсингових даних, такі як кількість зібраних спанів (span), кількість дискретних трейсів (trace) та кількість помилок, що виникли.

  • Пошук ланцюгів запитів на підставі ідентифікаторів запитів (trace_id).

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

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

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

4. Компоненти підсистеми

Назва компоненти Namespace Deployment Походження Репозиторій Призначення

Jaeger оператор

istio-system

jaeger-operator

3rd-party

gerrit:/mdtu-ddm/infrastructure/service-mesh

Допоміжне програмне забезпечення, яке виконує функції розгортання, налаштування та відновлення Jaeger, як компонента підсистеми.

Jaeger колектор

istio-system

jaeger-collector

3rd-party

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

Сервіс запитів та веб-інтерфейс

istio-system

jaeger-query

3rd-party

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

5. Технологічний стек

При проєктуванні та розробці підсистеми, були використані наступні технології:

6. Атрибути якості підсистеми

6.1. Observability

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

6.2. Performance

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

6.3. Scalability

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

6.4. Security

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

Присутній механізм обмеження доступу до інтерфейсу який своєю чергою мінімізує поверхню атаки підсистеми ззовні.

Усі події всередині підсистеми логуються та доступні для подальшого аналізу при потребі підсистемою журналювання подій.

Підсистема не має доступу до чутливих даних та не зберігає їх.