Как использовать Cloudwatch и Azure Monitor для бессерверных приложений

Безсерверные приложения изменили то, как организации создают и развертывают программное обеспечение, предлагая эластичную масштабируемость и ценообразование с оплатой за выполнение. Однако эфемерный характер функций без сервера делает наблюдаемость и мониторинг более сложными, чем традиционные долгосрочные серверы. Без надлежащего оборудования отладка узких мест производительности или сбоев становится почти невозможной. Amazon CloudWatch и Azure Monitor являются основными нативными службами мониторинга для сред AWS и Azure без серверов. Они обеспечивают всесторонние возможности регистрации, сбора метрик, оповещения и приборной панели, необходимые для поддержания бессерверных приложений производственного уровня. Это руководство выходит за рамки базовой настройки, изучения передовых стратегий мониторинга, лучших практик и практических советов для получения глубокой информации о ваших рабочих нагрузках без сервера.

Почему бессерверный мониторинг требует другого подхода

Традиционный мониторинг опирается на агенты, установленные на виртуальных машинах или контейнерах для сбора метрик процессора, памяти и диска. Безсерверные архитектуры абстрагируются от базовой инфраструктуры, поэтому вы не можете устанавливать агенты или получать доступ к операционной системе. Вместо этого вы зависите от служб мониторинга, которые получают телеметрию от самой платформы. Функции недолговечны, потенциально могут длиться только миллисекунды и могут масштабироваться от нуля до тысяч одновременных исполнений. Это поведение требует инструментов мониторинга, способных агрегировать высокоскоростные, краткосрочные события и обеспечивать видимость в режиме реального времени. CloudWatch и Azure Monitor предназначены для обработки этих характеристик, но правильная конфигурация имеет решающее значение для предотвращения пробелов в наблюдаемости.

Облачный монитор и монитор Azure

Amazon CloudWatch — сервис мониторинга и наблюдения для ресурсов и приложений AWS. Для бессерверных он собирает метрики из AWS Lambda, API Gateway, DynamoDB, Step Functions и других сервисов. CloudWatch Logs проглатывает данные журнала из исполнения функций Lambda, в то время как CloudWatch Metrics предоставляет метрики по умолчанию и на заказ. CloudWatch Alarms запускает действия на основе метрических порогов, а CloudWatch Logs Insights позволяет SQL-подобную запрашивание лог-данных. CloudWatch также поддерживает панели инструментов для визуализации метрик в нескольких учетных записях и регионах.

Azure Monitor — унифицированная платформа мониторинга сервисов Azure, включающая Azure Functions, Logic Apps, Event Grid и API Management. Она собирает метрики платформы, журналы активности и диагностические данные. Application Insights, функция Azure Monitor, обеспечивает глубокий мониторинг производительности приложений (APM) для бессерверных функций. Она отслеживает скорости запросов, время отклика, частоту отказов, зависимости и исключения. Azure Monitor также предлагает рабочие пространства Log Analytics для выполнения запросов Kusto Query Language (KQL) по данным журнала и оповещениям, которые могут вызывать действия, такие как масштабирование функций или отправка уведомлений.

Хотя обе службы служат схожим целям, они отличаются нюансами реализации. Метрики CloudWatch хранятся в течение 15 месяцев с различной детализацией хранения, тогда как метрики Azure Monitor по умолчанию сохраняют 93 дня. Заряды CloudWatch Logs Insights на ГБ сканируемых данных, в то время как Azure Monitor Log Analytics взимает плату за ГБ проглоченных и сохраненных. Понимание этих моделей ценообразования помогает оптимизировать затраты при обеспечении достаточных данных для устранения неполадок.

Настройка CloudWatch для приложений без серверов

Мониторинг бессерверного приложения на AWS начинается с включения регистрации и метрик для функций Lambda. Сервис Lambda автоматически издает набор метрик по умолчанию: вызовы, ошибки, гроты, продолжительность и параллельные выполнения. Однако вы должны настроить пользовательский мониторинг для захвата метрик для бизнеса и подробных журналов.

Шаг 1: IAM разрешение для CloudWatch

Функции Lambda требуют роли IAM с разрешениями на запись журналов в журналы CloudWatch. Прикрепите управляемую политику или создайте пользовательскую политику, которая позволяет , и . Без этих разрешений данные журнала не будут отправлены, и отладка становится догадкой.

Шаг 2: Настройка журналов CloudWatch

Каждая вызов Lambda производит поток журналов, названный в честь функции и метки времени. Группа журналов объединяет все потоки для функции. Вы можете установить сохранение журналов, чтобы избежать неограниченного накопления - рекомендуется установить политику хранения (например, 30 дней) для соблюдения управления данными. Используйте структурированную запись журналов (JSON), чтобы упростить запрашивание данных журналов с помощью CloudWatch Logs Insights. Например, в Node.js:

console.log(JSON.stringify({
 requestId: context.awsRequestId,
 eventType: event.httpMethod,
 statusCode: 200,
 durationMs: performance.now() - startTime
}));

Структурированные журналы позволяют задавать такие вопросы, как .

Шаг 3: Создание пользовательских метрик и сигналов тревоги

Помимо метрик по умолчанию, испускают пользовательские метрики с использованием API . Например, отслеживают количество элементов, обрабатываемых за выполнение, задержку до служб нисходящего потока или количество ошибок на бизнес-функцию. Плата CloudWatch за пользовательские метрики, поэтому будьте избирательны. Создайте CloudWatch Alarms для критических порогов: сигнал тревоги на более 1 минуты для производственных функций или сигнал тревоги на для обнаружения медленных исполнений. Сигнал тревоги может вызывать уведомления SNS, вызывать другую Lambda для автоматической ремедиации или отправлять Slack через webhook.

Шаг 4: Расширенный анализ журналов с помощью CloudWatch Logs Insights

CloudWatch Logs Insights позволяет запрашивать группы журналов по нескольким функциям. Вы можете идентифицировать узкие места производительности, фильтруя на высокодоходных вызовах, находить ошибки, выискивая строки исключений или измерять задержку p95. Пример запроса, чтобы найти самые медленные 10 вызовов:

fields @timestamp, @duration, @message
| filter @duration > 2000
| sort @duration desc
| limit 10

Используйте результаты запросов для создания панелей мониторинга, которые показывают частоту ошибок, тенденции запросов и топовые ошибки. Панели мониторинга CloudWatch могут объединять метрики и журналы из нескольких учетных записей с использованием возможности перекрестного наблюдения.

Конфигурация Azure Monitor для приложений без серверов

Функции Azure являются основным бессерверным вычислением в Azure.По умолчанию функции выдают метрики платформы, такие как подсчёт выполнения функций и блоки выполнения функций, но вам нужны приложения Insights для более глубокого понимания.

Шаг 1: Включить Application Insights

При создании приложения Azure Function App переключите «Application Insights» на On или прикрепите к существующему ресурсу Application Insights. Для существующих функций перейдите в приложение Function App на портале, в разделе «Настройки» -> «Application Insights» и включите его. Это автоматически инструментарий функции для отправки телеметрии: запросы, зависимости, исключения и пользовательские события.

Шаг 2: Настройка диагностических настроек

Для дополнительной телеметрии включите диагностические настройки для вашего приложения Функции для отправки журналов и метрик в рабочие пространства Log Analytics. На портале перейдите в «Мониторинг» -> «Диагностические настройки», затем добавьте настройку для потоковой передачи FunctionAppLogs и в рабочее пространство Log Analytics. Это дает вам доступ к журналам выполнения запросов вместе с данными Application Insights с использованием KQL.

Шаг 3: Анализ производительности с помощью Application Insights

Панель инструментов Application Insights показывает частоту запросов, среднее время отклика и частоту отказов. Используйте лезвие Performance для выявления медленных операций, а лезвие Failures для просмотра исключений и следов стека. Приложение Insights также поддерживает живые метрики, показывая телеметрию в реальном времени для отладки горячих исправлений. Вы можете настроить тесты доступности для пинга HTTP-запущенных функций из нескольких мест.

Шаг 4: Настройка оповещений в мониторе Azure

Создавайте оповещения на основе метрик или запросов журналов. Например, оповещение на «Metric Alert» для «Function Execution Count» при падении до нуля в течение 30 минут, указывающее на возможную проблему развертывания. Или «Log Alert», которое запускает, когда запрос возвращается > 0. Оповещения могут отправлять электронную почту, SMS или запускать группы действий, которые запускают книги по автоматизации Azure или логические приложения для автоматического исправления.

Расширенные стратегии мониторинга для бессерверных

Распределенная трассировка

Безсерверные приложения часто состоят из множества функций, API Gateways, очередей и баз данных. При прохождении запроса через несколько сервисов для выявления первопричины задержки требуется распределенное отслеживание. AWS X-Ray интегрируется с CloudWatch и Lambda. Включает Active Tracing в Lambda, а X-Ray отслеживает запросы от API Gateway через Lambda и сервисы нисходящего потока, такие как DynamoDB или SQS. Azure Monitor Application Insights обеспечивает аналогичную сквозную диагностику транзакций. Можно просматривать карту всех зависимостей и их время отклика. Используйте идентификаторы корреляции для связывания журналов между службами.

Пользовательский прибор

Метрики по умолчанию и журналы могут не захватывать идеи бизнес-уровня. Используйте пользовательские метрики для KPI, специфичных для домена: количество обработанных заказов, отношение попадания кэша, пользовательские сессии или производительность запросов к базе данных. В AWS используйте библиотеку для создания структурированных метрик с размерами. В Azure используйте API TrackEvent и TrackMetric из Application Insights SDK в своем функциональном коде. Эти данные могут управлять панелью мониторинга для заинтересованных сторон и кормить модели машинного обучения для обнаружения аномалий.

Обнаружение аномалий

Метрическая математика CloudWatch позволяет динамические пороги, но для более сложного обнаружения аномалий используйте полосы обнаружения аномалий CloudWatch. Эти полосы адаптируются к метрическим шаблонам, уменьшая ложные срабатывания. Azure Monitor предлагает Smart Detection, который автоматически предупреждает об аномалиях в частоте отказов, продолжительности и задержке зависимости. Позволяет этим функциям улавливать проблемы, которые не хватает статических порогов.

Мониторинг затрат

Безсерверный мониторинг может стать дорогим, если не управлять. Затраты на проглатывание данных CloudWatch Logs могут резко возрасти в периоды высокого трафика. Установить сохранение журнала до 7 или 30 дней для большинства функций и фильтровать многословные журналы, чтобы избежать ненужного хранения. На Azure используйте выборку в Application Insights для уменьшения объема телеметрии для функций с высокой пропускной способностью. Обе платформы позволяют исключить из проглатывания менее важные уровни журнала (DEBUG). Мониторинг вашего ежемесячного счета CloudWatch или Azure Monitor наряду с показателями приложений.

Лучшие практики для эффективной бессерверной видимости

Сравнение CloudWatch и Azure Monitor: основные различия

Хотя обе платформы предлагают аналогичные возможности, при выборе между средами без серверов AWS и Azure следует учитывать важные различия:

  • Гранулярность метрик: Метрики CloudWatch доступны с разрешением 1 минута, с метриками высокого разрешения с 1 секундой (дополнительная стоимость). Стандартные метрики Azure Monitor находятся на 1 минуте по умолчанию, но некоторые метрики могут быть собраны с 30-секундными интервалами с дополнительной конфигурацией.
  • Аналитика журнала: CloudWatch Logs Insights использует язык запросов, похожий на SQL, в то время как Azure Monitor использует KQL, который более эффективен для анализа временных рядов и объединяет несколько таблиц.
  • Модель определения цены: Плата за CloudWatch в метрике, за каждый проглоченный журналом ГБ и за каждый проглоченный журналом ГБ. Плата за монитор Azure в расчете на ГБ, проглоченный в Log Analytics и за сохраненный ГБ данных. Для функций с высоким трафиком ценообразование на основе приема Azure Monitor может быть более предсказуемым, если вы контролируете объем журнала.
  • Интеграция с другими сервисами:] CloudWatch тесно интегрируется с AWS X-Ray, CloudTrail и VPC Flow Logs. Azure Monitor интегрируется с Azure Sentinel, Azure Policy и Microsoft 365 Defender.
  • Поддержка мультиоблачных вычислений: Azure Monitor поддерживает источники AWS и GCP через разъемы, в то время как CloudWatch является нативным AWS, но может получать журналы локально через CloudWatch Agent. Для многооблачных архитектур рассмотрите сторонние инструменты, такие как Datadog или New Relic, для унифицированной наблюдаемости.

Пример мониторинга реального мира: поток проверки электронной коммерции

Рассмотрим приложение для электронной коммерции без сервера на AWS, которое использует API Gateway, Lambda, DynamoDB и SQS. Для мониторинга потока кассовых сборов:

  1. Включите отслеживание рентгеновских лучей на API Gateway и Lambda, чтобы отслеживать каждый HTTP-запрос через все последующие вызовы.
  2. Измените пользовательские показатели для объема заказа, скорости успеха, средней цены и задержки платежного шлюза с использованием встроенного формата метрик.
  3. Создайте панель мониторинга CloudWatch, показывающую воронку проверки: количество запросов API, вызовы Lambda, емкость чтения / записи DynamoDB и количество ошибок на шаг.
  4. Установите тревогу: если скорость ошибки при оформлении заказа превышает 1% в течение 5 минут, напишите на страницу инженеру по вызову. Если дроссели DynamoDB происходят более 10 раз, запустите политику автоматического масштабирования или предупредите команду базы данных.
  5. Используйте CloudWatch Logs Insights для запроса идентификаторов запросов, которые не сработали и коррелируют с журналами платежных шлюзов (отправленными в CloudWatch из внешних служб через API).

Этот проактивный мониторинг гарантирует, что команда сможет обнаружить и решить проблемы до того, как клиенты пострадают.Тот же подход применяется к Azure с использованием функций Azure, Application Insights и Cosmos DB.

Заключение

Amazon CloudWatch и Azure Monitor необходимы для управления приложениями без сервера в масштабе. Перейдя за рамки базовой регистрации и охвата пользовательских метрик, распределенного отслеживания и интеллектуальных оповещений, вы получаете видимость, необходимую для поддержания высокой доступности и производительности. Обе платформы предлагают мощные функции, которые при правильной настройке сокращают среднее время до разрешения и помогают оптимизировать затраты. По мере роста внедрения без сервера, инвестирование времени в настройку мониторинга приносит дивиденды в операционную уверенность и непрерывность бизнеса. Для дальнейшего чтения обратитесь к AWS CloudWatch Documentation , Azure Monitor Documentation и руководствам по передовой практике от вашего облачного провайдера.