Журнали й метрики з Amazon CloudWatch

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

Dunieski Otano

Amazon Web Services Solutions Architect

Він впав?

  • Клієнт каже, що застосунок не працює
  • У вас немає даних, щоб підтвердити чи спростувати
  • CloudWatch перетворює припущення на відповіді

Панель моніторингу з знаком питання: неясно, сервіс працює чи впав

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

Logging vs monitoring vs observability

Діаграма з трьома колонками: logging як незмінні записи подій, monitoring як пороги метрик із тривогами, observability як кореляція даних для відповідей на нові запитання

  • Logging: фіксуйте окремі події в момент їх виникнення
  • Monitoring: відстежуйте відомі метрики відносно порогів
  • Observability: ставте нові запитання до даних
  • Для впевненої роботи потрібні всі три
Розгортання застосунків в AWS

Log groups, log streams і retention

  • Log group: іменований контейнер для пов'язаних журналів
  • Log stream: послідовність з одного джерела
  • Retention: як довго зберігаються журнали
  • Журнали коштують грошей; задайте retention навмисно

Ієрархія CloudWatch Logs: група журналів містить кілька потоків, кожен показує впорядковані за часом події, із налаштуванням періоду зберігання та позначкою вартості

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

Metrics і custom metrics

  • Metrics: числові дані часових рядів
  • AWS автоматично публікує багато метрик сервісів
  • Custom metrics: числа, які генерує ваш застосунок
  • Виміри (dimensions) ділять метрику за атрибутом

Метрики CloudWatch: ліворуч метрики сервісів AWS, що публікуються автоматично; праворуч — власна метрика з вимірами; графік часового ряду з лінією порога тривоги

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

Embedded Metric Format

Один структурований рядок журналу містить значення метрик і блок _aws, який вказує CloudWatch, які поля є метриками:

{
  "_aws": {
    "CloudWatchMetrics": [
      {
        "Namespace": "OrdersApp",
        "Dimensions": [["customerTier"]],
        "Metrics": [{ "Name": "OrderLatencyMs", "Unit": "Milliseconds" }]
      }
    ]
  },
  "customerTier": "premium",
  "OrderLatencyMs": 142
}
Розгортання застосунків в AWS

Dashboards і alarms

Ліворуч віджет-панель дашборду CloudWatch, праворуч автомат станів тривоги з OK, ALARM та INSUFFICIENT_DATA, маршрутизація сповіщень SNS до електронної пошти й автоматизації

  • Dashboard: один екран із графіками та віджетами
  • Alarm: спрацьовує, коли метрика перетинає поріг
  • Тривоги надсилають у SNS, далі — email, SMS або автоматизація
  • Ставте тривоги на симптоми користувачів, а не на кожну метрику
Розгортання застосунків в AWS

Стратегія структурованого логування

  • Логуйте як JSON, а не вільний текст
  • Включайте timestamp, level, request ID, user ID
  • Структуровані поля можна фільтрувати й запитувати
  • Узгодженість між сервісами дає змогу корелювати

Структурований рядок журналу JSON з полями timestamp, level, requestId і userId та запит Logs Insights, що показує як іменовані поля дають точну фільтрацію й агрегацію

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

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

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

Preparing Video For Download...