Гид по технологиям

Агрегация логов EC2 в AWS CloudWatch

• 5 min read • DevOps • Обновлено 23 Nov 2025
Агрегация логов EC2 в CloudWatch
Агрегация логов EC2 в CloudWatch

AWS логотип

Быстрые ссылки

  • Почему стоит агрегировать логи
  • Как настроить CloudWatch Logs

Почему стоит агрегировать логи

Если вы запускаете веб‑сервер (например, nginx), каждый HTTP‑запрос создаёт строку в файле лога с информацией о визите. Такие записи обычно содержат:

  • IP‑адрес клиента
  • Имя пользователя при базовой аутентификации (чаще пусто)
  • Время запроса
  • Сам запрос, например:
GET /index.php?url=abc
  • Код ответа
  • Отправленные байты (без HTTP‑заголовков)
  • HTTP‑referer (откуда пришёл пользователь)
  • User‑agent клиента

Логи генерируются в реальном времени. Их быстрое агрегирование позволяет отвечать на вопросы типа «сколько трафика с этого IP‑диапазона?» или «какие крупнейшие источники реферального трафика?». Для быстрого поиска и аналитики часто используют Elasticsearch/Opensearch, а AWS предлагает управляемые сервисы, которые интегрируются с CloudWatch Logs.

Когда у вас много серверов, поиск по одному файлу уже не даст полной картины. Аггрегация логов в одно место решает эту проблему: вы получаете унифицированный поток логов и можете строить метрики, оповещения и дашборды.

Как настроить CloudWatch Logs

Ниже — пошаговая инструкция для EC2‑инстанса.

1. Создайте IAM‑роль для агента логов

Агент должен иметь права на создание групп логов, потоков логов и отправку событий. Войдите в EC2 Console, выберите инстанс, затем «Instance Settings» > «Attach/Replace IAM Role».

Настройки инстанса — прикрепить/заменить роль IAM

Если роли ещё нет — создайте новую в консоли IAM. Выберите сервис EC2 как доверенный сущность. Затем создайте политику с набором разрешений. Пример JSON‑политики, которую можно вставить при создании собственной политики:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents",
        "logs:DescribeLogStreams"
      ],
      "Resource": [
        "arn:aws:logs:*:*:*"
      ]
    }
  ]
}

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

Выбор политики для роли

Важно: роль должна быть ассоциирована с инстансом до установки агента. Без этого агент не сможет отправлять логи.

2. Установите агент на инстанс

Есть две распространённые опции:

  • awslogs (классический Python‑агент) — прост в настройке.
  • CloudWatch Agent (новый унифицированный агент) — поддерживает метрики и логи, имеет более гибкую конфигурацию.

Примеры установки:

Для Amazon Linux с yum:

sudo yum install -y awslogs

Для Debian/Ubuntu загрузите установщик:

curl https://s3.amazonaws.com//aws-cloudwatch/downloads/latest/awslogs-agent-setup.py -O

Запустите установщик и укажите регион:

sudo python ./awslogs-agent-setup.py --region us-east-1

Если используете CloudWatch Agent (рекомендуется для новых проектов), скачайте и установите его пакет, затем используйте встроенный конфигер:

# пример для Amazon Linux 2
sudo yum install -y amazon-cloudwatch-agent
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard
sudo systemctl start amazon-cloudwatch-agent

Примечание: замените us-east-1 на регион, где вы хотите хранить логи.

3. Укажите файлы логов для отправки

Во время настройки агента вы указываете, какие пути логов отправлять. По умолчанию отправляется /var/log/syslog или /var/log/messages. Вы можете добавить несколько путей, например логи nginx, приложения и т. д. Каждый путь попадает в группу логов (логгруппу) и получает поток логов по ID инстанса.

Настройка агента логов

4. Просмотр логов в CloudWatch

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

Просмотр логов в CloudWatch

CloudWatch Insights — интерактивный анализ логов

Если вам нужна визуализация или более мощные возможности поиска, рассмотрите интеграцию с Elasticsearch/Opensearch и Kibana/Opensearch Dashboards.

Практические советы и шаблоны

Мини‑методология для запуска логирования на новом инстансе

  1. Создайте/обновите IAM‑роль с необходимыми правами.
  2. Привяжите роль к инстансу до старта агента.
  3. Установите awslogs или CloudWatch Agent.
  4. Настройте пути логов и уровни (info/warn/error).
  5. Проверьте появление логов в CloudWatch.
  6. Настройте Alerts/Metric Filters при необходимости.

Контрольный список приёма (Критерии приёмки)

  • Роль IAM назначена и содержит нужную политику.
  • Агент запущен и работает как служба.
  • Логи от инстанса появляются в соответствующей группе логов.
  • Для каждого приложения есть отдельная логгруппа или читаемое разделение потоков.
  • Покрыты критические уровни (ERROR, WARN) фильтрами оповещений.

Быстрый SOP для onboarding нового инстанса

  • Шаг 1: Привязать роль logs‑agent‑role.
  • Шаг 2: Установить CloudWatch Agent через пакетный менеджер.
  • Шаг 3: Подгрузить шаблон конфигурации (пример ниже).
  • Шаг 4: Перезапустить агент и проверить CloudWatch.

Пример конфигурации CloudWatch Agent (фрагмент JSON):

{
  "logs":{
    "logs_collected":{
      "files":{
        "collect_list":[
          {"file_path":"/var/log/nginx/access.log","log_group_name":"/nginx/access","timestamp_format":"%d/%b/%Y:%H:%M:%S %z"},
          {"file_path":"/var/log/nginx/error.log","log_group_name":"/nginx/error"}
        ]
      }
    }
  }
}

Роль‑ориентированные чеклисты

DevOps:

  • Автоматизировать привязку IAM‑роли через Terraform/CloudFormation.
  • Включить метрики и оповещения для ошибок.

Разработчик приложения:

  • Логи приложения должны быть структурированы (JSON) для удобного парсинга.
  • Использовать корреляционный ID для трассировки запросов.

SRE/операции:

  • Настроить сохранение логов и ротацию на стороне сервера до отправки.
  • Настроить удержание (retention) и архивирование в S3 при необходимости.

Альтернативные подходы и когда они лучше

  • CloudWatch Agent — если хотите единый агент для метрик и логов.
  • Fluentd/Fluent Bit / Filebeat — если требуется кастомная обработка, обогащение или буферизация перед отправкой в внешние хранилища.
  • Отправка напрямую в Elasticsearch/Opensearch — уменьшает задержку между записью и визуализацией в Kibana, но требует управления кластерами.
  • SaaS (Datadog, Splunk) — если нужна готовая платформа с продвинутой аналитикой и вы не хотите управляеть хранилищем.

Когда CloudWatch Logs не подходит:

  • Если вам нужна сложная трансформация логов на лету — лучше Fluentd/Logstash.
  • Если нужно хранить логи очень долго и получать гибкие экономические модели — возможно, S3 + Athena подойдет лучше.

Проблемы и устранение неисправностей

  • Логи не появляются: проверьте IAM‑роль на предмет требуемых разрешений и убедитесь, что роль привязана к инстансу.
  • Агент падает при старте: смотрите системный журнал (systemctl status, journalctl) и логи агента в /var/log/awslogs или /opt/aws/amazon-cloudwatch-agent/logs.
  • Неправильное временное значение: проверьте часовой пояс и формат timestamp в конфигурации агента.
  • Высокая задержка доставки: убедитесь, что сеть инстанса не заблокирована и что агент не перегружен большими файлами.

Decision flow (выбор агента) — диаграмма

flowchart TD
  A[Нужно логировать и метрики?] -->|Да| B[CloudWatch Agent]
  A -->|Только логи и нужна трансформация| C[Fluentd/Fluent Bit]
  A -->|Только логи, простая отправка| D[awslogs или Filebeat]
  B --> E{Нужна визуализация}
  C --> E
  D --> E
  E -->|Kibana/Opensearch| F[Elasticsearch/Opensearch]
  E -->|CloudWatch Insights| G[Оставить в CloudWatch]

1‑строчный глоссарий

  • Log Group — логическая группа, содержащая потоки логов.
  • Log Stream — последовательность лог‑событий от одного источника (например, от инстанса).
  • CloudWatch Logs Insights — инструмент для интерактивного анализа логов.
  • IAM Role — роль, которую сервис или агент использует для доступа к ресурсам.

Краткое резюме

  • Агрегация логов нужна для централизованного поиска и аналитики по множеству инстансов.
  • Минимум: создать IAM роль, установить агент и настроить пути логов.
  • Для расширенной аналитики интегрируйте CloudWatch с Elasticsearch/Opensearch или используйте CloudWatch Insights.

Важно: сохраняйте структурированные логи (JSON) там, где это возможно. Это значительно упрощает парсинг и построение метрик.


Если нужно, могу подготовить Terraform/CloudFormation шаблон для автоматизации создания роли и настройки агента, а также пример конфигурации для Fluent Bit или Filebeat.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро