Розподілене трасування з AWS X-Ray та структуроване логування

Розгортання застосунків в AWS

Dunieski Otano

Amazon Web Services Solutions Architect

Повільний запит, який ніхто не міг знайти

  • Один запит триває чотири секунди
  • Логи кожного сервісу окремо виглядають добре
  • Ніхто не бачить увесь шлях

Лупа відстежує повільний запит на розподіленій мапі сервісів із вузлом-вузьким місцем, позначеним червоним

Розгортання застосунків в AWS

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

Ізольовані «силоси» логів по сервісах ліворуч (червоні) проти об'єднаної часової шкали трас X-Ray (ґант-діаграма), що зшиває той самий запит через API Gateway, Lambda, DynamoDB та зовнішній API (зелені)

  • Один запит проходить через багато сервісів
  • Логи не показують шлях від кінця до кінця
  • Трейс зшиває весь запит
  • Бачите, де саме зник час
Розгортання застосунків в AWS

Сегменти, підсегменти та мапа сервісів

  • Сегмент: робота одного сервісу
  • Підсегмент: одиниця всередині сегмента, напр., виклик БД
  • Мапа сервісів: візуальний граф усіх сегментів
  • На кожному вузлі видно затримку та помилки

Анатомія трейсів X-Ray: сегмент на сервіс із підсегментами для викликів БД, зібрані в граф мапи сервісів із затримкою та рівнем помилок на кожному вузлі

Розгортання застосунків в AWS

Анотації vs метадані


Анотації

  • Індексовані пари ключ-значення, тож їх можна фільтрувати
  • Використовуйте для пошуку, напр., рівень клієнта

Метадані

  • Додаткові відомості, не індексуються
  • Додавайте для контексту, але за ними не шукають
Розгортання застосунків в AWS

Кореляція логів за trace ID

  • Кожен трейс має унікальний trace ID
  • Додавайте trace ID у свої структуровані логи
  • Переходьте з повільного трейсу до точних рядків логів
  • Логи й трейси стають єдиним розслідуванням

Рядок структурованого лога з полем xray_trace_id, виділеним; стрілка від перегляду трейсів X-Ray до відповідних рядків у CloudWatch Logs для корельованого аналізу

Розгортання застосунків в AWS

Як читати мапу сервісів, щоб знайти вузьке місце

Мапа сервісів X-Ray з виділеним вузлом із високою затримкою; перехід у часову шкалу трейсів показує найдовший сегмент як вузьке місце

  • Починайте з мапи сервісів, не з логів
  • Знайдіть вузол із найбільшою затримкою
  • Заглибтесь у його часову шкалу трейсів
  • Найдовший сегмент — головний підозрюваний
Розгортання застосунків в AWS

Трасування всього запиту

  • API Gateway, Lambda та низхідні виклики всі трасуються
  • Кожен додає свій сегмент до того самого трейсу
  • Один trace ID поєднує логи й сегменти
  • Видимість від кінця до кінця для кожного запиту

Кінцеве розподілене трасування від API Gateway через Lambda до DynamoDB і зовнішнього API; один trace ID у кожному заголовку сегмента поєднує всі логи та сегменти

Розгортання застосунків в AWS

Давайте потренуємось!

Розгортання застосунків в AWS

Preparing Video For Download...