Amazon CloudWatch Logs¶
Amazon CloudWatch Logs — это компонент сервиса Amazon CloudWatch, входящего в состав облачной платформы Amazon Web Services (AWS), предназначенный для централизованного сбора, хранения, мониторинга и анализа лог-файлов от различных ресурсов AWS и локальных приложений. Сервис позволяет агрегировать данные из множества источников, задавать метрики на основе содержимого логов, настраивать оповещения о событиях и экспортировать данные в другие сервисы AWS для долгосрочного хранения или глубокого анализа.
¶История и развитие
Сервис Amazon CloudWatch Logs был запущен в 2014 году как расширение возможностей базового сервиса мониторинга Amazon CloudWatch, который изначально предоставлял только метрики (например, загрузка CPU, использование памяти). Потребность в логировании возникла из-за роста сложности распределённых приложений и микросервисных архитектур на AWS, где традиционные методы сбора логов (например, через SSH) становились неэффективными.
В 2015 году была добавлена поддержка фильтрации логов для создания метрик (Metric Filters), что позволило автоматически подсчитывать количество ошибок или других событий в логах. В 2016 году появилась возможность экспорта логов в Amazon S3 (Simple Storage Service) для долгосрочного хранения и в Amazon Elasticsearch Service (ныне Amazon OpenSearch Service) для полнотекстового поиска. В 2018 году был представлен сервис CloudWatch Logs Insights — инструмент для интерактивного анализа логов с использованием SQL-подобного языка запросов. В 2020-х годах функционал расширился за счёт интеграции с AWS Lambda, поддержки структурированных логов (JSON) и встроенных возможностей шифрования.
¶Архитектура и ключевые компоненты
¶Группы логов (Log Groups)
Логи в CloudWatch Logs организуются в группы логов (Log Groups). Каждая группа представляет собой контейнер для логов от одного приложения, сервиса или компонента инфраструктуры. Например, группа может содержать логи от всех экземпляров EC2, работающих в рамках одного Auto Scaling Group, или от одной функции Lambda. Группа логов имеет имя (например, /aws/lambda/my-function) и набор метаданных, включая срок хранения записей (по умолчанию — никогда не удалять, но можно настроить от 1 дня до 10 лет).
¶Потоки логов (Log Streams)
Внутри каждой группы логи делятся на потоки логов (Log Streams). Поток — это последовательность событий лога от одного источника. Например, для группы логов экземпляров EC2 каждый экземпляр создаёт свой поток. Для функции Lambda каждый вызов функции создаёт новый поток (или использует существующий, если он не закрыт). Поток имеет уникальный идентификатор и содержит временные метки для каждого события.
¶События логов (Log Events)
Событие лога — это отдельная запись, содержащая временную метку (timestamp) и сообщение (message). Сообщение может быть текстовой строкой или структурированным JSON-объектом. Размер одного события не должен превышать 256 КБ. События добавляются в поток в хронологическом порядке.
¶Агенты и SDK
Для отправки логов в CloudWatch Logs используются несколько механизмов:
- CloudWatch Agent — универсальный агент для сбора логов с EC2-инстансов и локальных серверов (Linux и Windows). Он может собирать как системные логи (syslog, Event Log), так и логи приложений.
- AWS SDK — программный интерфейс для отправки логов напрямую из приложений, написанных на Python, Java, Go, .NET и других языках.
- AWS Lambda — функция может автоматически отправлять свои логи в CloudWatch Logs при выполнении (это включено по умолчанию).
- AWS Services — многие сервисы AWS (например, API Gateway, VPC Flow Logs, Route 53) могут быть настроены на отправку логов напрямую в CloudWatch Logs.
¶Основные функции
¶Мониторинг и оповещения
CloudWatch Logs позволяет создавать метрические фильтры (Metric Filters) — правила, которые анализируют содержимое логов и подсчитывают количество событий, соответствующих заданному шаблону. Например, можно настроить фильтр на поиск строки «ERROR» в логах приложения и создать метрику ErrorCount. Затем на основе этой метрики можно настроить оповещение (Alarm) в CloudWatch, которое отправит уведомление через SNS (Simple Notification Service) при превышении порога (например, более 10 ошибок за 5 минут).
¶CloudWatch Logs Insights
CloudWatch Logs Insights — это интерактивный инструмент для анализа логов. Он предоставляет консольный интерфейс и API для выполнения запросов к логам с использованием специального языка запросов (Query Language). Запросы позволяют фильтровать, агрегировать, сортировать и визуализировать данные. Пример запроса: fields @timestamp, @message | filter @message like /ERROR/ | stats count() by bin(5m). Результаты могут быть отображены в виде таблицы или временного ряда. Insights поддерживает работу с логами за последние 15 дней (по умолчанию) или за больший период, если данные экспортированы в S3.
¶Экспорт логов
Логи могут быть экспортированы в Amazon S3 для долгосрочного хранения (например, для соответствия требованиям аудита) или для последующей обработки другими сервисами (например, Amazon Athena для SQL-запросов). Экспорт настраивается через консоль AWS или API, при этом можно указать временной диапазон и префикс для ключей S3. Также возможна потоковая передача логов в Amazon OpenSearch Service (ранее Elasticsearch) для полнотекстового поиска и визуализации с помощью Kibana.
¶Шифрование и безопасность
CloudWatch Logs поддерживает шифрование данных как в покое (at rest), так и при передаче (in transit). Для шифрования в покое можно использовать ключи AWS KMS (Key Management Service). Доступ к логам контролируется через политики IAM (Identity and Access Management), которые позволяют ограничить чтение, запись и экспорт логов для конкретных пользователей или ролей.
¶Применение
¶Отладка и устранение неполадок
Разработчики и администраторы используют CloudWatch Logs для анализа ошибок в приложениях, работающих на AWS. Например, при сбое функции Lambda можно просмотреть её логи, чтобы понять причину ошибки (таймаут, отсутствие прав доступа, исключение в коде). Логи VPC Flow Logs помогают диагностировать проблемы с сетью.
¶Мониторинг безопасности
CloudWatch Logs используется для анализа событий безопасности, таких как неудачные попытки входа в систему, подозрительные запросы к API или изменения конфигурации. В сочетании с AWS CloudTrail (сервис аудита действий пользователей) можно создать централизованную систему мониторинга безопасности.
¶Оптимизация производительности
Анализ логов приложений позволяет выявить узкие места: медленные запросы к базе данных, длительные ответы от API, высокую загрузку CPU. Метрические фильтры могут автоматически генерировать метрики для мониторинга производительности.
¶Соответствие требованиям (Compliance)
Для соблюдения нормативных требований (например, PCI DSS, HIPAA, GDPR) организации могут хранить логи в CloudWatch Logs с настройкой срока хранения и экспортировать их в S3 для долгосрочного архивирования. Доступ к логам аудируется через CloudTrail.
¶Ограничения и стоимость
¶Ограничения
- Максимальный размер события: 256 КБ.
- Максимальная скорость записи: 5 событий в секунду на один поток (можно увеличить запросом в поддержку AWS).
- Срок хранения в Insights: по умолчанию 15 дней для запросов, но сами логи хранятся в группе согласно настройке.
- Задержка доставки: обычно несколько секунд, но может достигать нескольких минут при высокой нагрузке.
¶Стоимость
CloudWatch Logs тарифицируется по нескольким параметрам:
- Входящий трафик: плата за каждый гигабайт отправленных логов (включено 5 ГБ в месяц в рамках бесплатного уровня AWS).
- Хранение: плата за гигабайт в месяц (включено 5 ГБ в бесплатном уровне).
- Экспорт в S3: плата за экспортированные данные.
- CloudWatch Logs Insights: плата за каждый гигабайт просканированных данных при выполнении запросов.
¶Интеграция с другими сервисами AWS
CloudWatch Logs тесно интегрирован с экосистемой AWS:
- AWS Lambda: автоматическая отправка логов функций.
- Amazon EC2: через CloudWatch Agent или Unified CloudWatch Agent.
- Amazon ECS/EKS: логи контейнеров могут быть отправлены через awslogs драйвер.
- AWS CloudTrail: логи действий пользователей могут быть отправлены в CloudWatch Logs для мониторинга.
- Amazon S3: экспорт и архивирование.
- Amazon OpenSearch Service: потоковая передача для поиска.
- AWS X-Ray: трассировка запросов может быть дополнена логами из CloudWatch Logs.
¶Критика и альтернативы
Основные замечания к CloudWatch Logs:
- Стоимость: при больших объёмах логов (терабайты в месяц) затраты могут стать значительными, особенно на запросы Insights.
- Задержка: не подходит для систем, требующих реального времени (sub-second latency).
- Ограниченные возможности поиска: по сравнению с специализированными SIEM-системами (например, Splunk, Elastic Stack) функционал анализа менее гибок.
Альтернативами на AWS являются: Amazon OpenSearch Service (с Logstash для сбора), Amazon S3 + Athena (для анализа на месте), Amazon Kinesis Data Firehose (для потоковой обработки логов). Среди сторонних решений популярны Datadog, New Relic, Splunk и Grafana Loki.
¶Источники
- Официальная документация Amazon Web Services: «Amazon CloudWatch Logs User Guide».
- AWS re:Invent 2018: «Amazon CloudWatch Logs Insights: Interactive Log Analytics» (презентация).
- Книга: «AWS Certified Solutions Architect Study Guide» (Ben Piper, David Clinton).
- Статья: «CloudWatch Logs: Best Practices and Cost Optimization» (AWS Blog, 2020).
- Документация AWS по тарификации: «Amazon CloudWatch Pricing».
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →

