Логирование и метрики с Amazon CloudWatch

Развёртывание приложений на AWS

Dunieski Otano

Amazon Web Services Solutions Architect

Работает или нет?

  • Клиент сообщает, что приложение не работает
  • У вас нет данных, чтобы подтвердить или опровергнуть это
  • CloudWatch превращает догадки в ответы

Панель мониторинга со знаком вопроса — неизвестно, работает сервис или нет

Развёртывание приложений на AWS

Логирование, мониторинг и наблюдаемость

Диаграмма из трёх столбцов: логирование — неизменяемые записи событий, мониторинг — пороговые значения метрик и оповещения, наблюдаемость — корреляция данных для ответа на новые вопросы

  • Логирование: фиксация дискретных событий по мере их возникновения
  • Мониторинг: отслеживание известных метрик относительно пороговых значений
  • Наблюдаемость: возможность задавать новые вопросы к данным
  • Для уверенной эксплуатации необходимы все три подхода
Развёртывание приложений на AWS

Группы логов, потоки и хранение

  • Группа логов: именованный контейнер для связанных логов
  • Поток логов: последовательность событий из одного источника
  • Хранение: срок хранения логов
  • Логи стоят денег — задавайте срок хранения осознанно

Иерархия CloudWatch Logs: группа логов содержит несколько потоков, каждый поток — упорядоченную по времени последовательность событий; показаны настройка срока хранения и информация о стоимости

Развёртывание приложений на AWS

Метрики и пользовательские метрики

  • Метрики: числовые данные временных рядов
  • AWS автоматически публикует многие метрики сервисов
  • Пользовательские метрики: числа, которые публикует ваше приложение
  • Измерения позволяют сегментировать метрику по атрибуту

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

Развёртывание приложений на AWS

Формат встроенных метрик

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

{
  "_aws": {
    "CloudWatchMetrics": [
      {
        "Namespace": "OrdersApp",
        "Dimensions": [["customerTier"]],
        "Metrics": [{ "Name": "OrderLatencyMs", "Unit": "Milliseconds" }]
      }
    ]
  },
  "customerTier": "premium",
  "OrderLatencyMs": 142
}
Развёртывание приложений на AWS

Дашборды и оповещения

Слева — панель виджетов дашборда CloudWatch; справа — конечный автомат оповещения с состояниями OK, ALARM и INSUFFICIENT_DATA; маршрутизация уведомлений SNS на email и автоматизацию

  • Дашборд: один экран с графиками и виджетами
  • Оповещение: срабатывает, когда метрика пересекает пороговое значение
  • Оповещения передаются в SNS, затем — на email, SMS или в автоматизацию
  • Настраивайте оповещения на симптомы, которые замечают пользователи, а не на каждую метрику
Развёртывание приложений на AWS

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

  • Используйте JSON, а не произвольный текст
  • Включайте временну́ю метку, уровень, ID запроса, ID пользователя
  • Структурированные поля поддерживают фильтрацию и запросы
  • Единообразие между сервисами упрощает корреляцию данных

Строка структурированного JSON-лога с полями timestamp, level, requestId и userId; запрос Logs Insights демонстрирует точную фильтрацию и агрегацию по именованным полям

Развёртывание приложений на AWS

Давайте потренируемся!

Развёртывание приложений на AWS

Preparing Video For Download...