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

AWS CLI для CloudWatch: команды для управления тревогами и мониторингом EC2

• 5 min read • DevOps • Обновлено 18 Nov 2025
AWS CLI для CloudWatch: команды и руководство
AWS CLI для CloudWatch: команды и руководство

Этот пошаговый гид показывает команды aws-cli для управления метриками и тревогами CloudWatch из терминала. Вы научитесь создавать, описывать, тестировать и удалять тревоги для мониторинга CPU EC2, подключать SNS для оповещений и проводить базовую проверку работоспособности. Подключите ключи AWS, проверьте метрики и используйте приведённые сниппеты как шаблон.

Для кого эта инструкция

  • Инженерам DevOps и SRE, которые хотят автоматизировать мониторинг через CLI.
  • Разработчикам, которым нужно быстро протестировать оповещения без захода в консоль.
  • Тем, кто знаком с EC2 и CloudWatch и имеет AWS CLI.

Что мы рассмотрим

  • Проверка AWS CLI и экспорт ключей
  • Поиск метрик и SNS-топиков
  • Создание тревоги для CPU EC2 (пример)
  • Описание, тестирование (смена состояния) и удаление тревоги
  • Чек‑листы, рекомендации по тестированию и альтернативные подходы

Предварительные требования

  1. Наличие AWS аккаунта.
  2. Базовые знания об EC2 и CloudWatch.
  3. IAM-пользователь с правами для управления CloudWatch и SNS (например, AdministratorAccess или набор развёрнутых прав).
  4. Установленный AWS CLI (рекомендуется v2).
  5. SNS-топик для получения уведомлений (email, SMS или HTTPS).

Важно: никогда не выкладывайте свои ключи публично и используйте минимально необходимые права.

Проверка AWS CLI и экспорт ключей

Убедитесь, что aws-cli установлен и доступен в PATH:

aws --version # пример: aws-cli/2.x Python/3.x botocore/2.x

Экспортируйте временно ключи в сессию терминала (вместо этих значений используйте свои):

export AWS_ACCESS_KEY_ID=
export AWS_SECRET_ACCESS_KEY=

Проверьте идентичность и валидность ключей:

aws sts get-caller-identity

Показаны учетные данные вызова

Примечание: на скриншоте показаны старые ключи автора, они неактивны.

Общий рабочий поток для управления CloudWatch через CLI

  1. Найти существующие SNS-топики и выбрать ARN для оповещений.
  2. Получить ID нужного EC2-инстанса.
  3. Проверить доступные метрики в namespace AWS/EC2.
  4. Создать put-metric-alarm с нужными параметрами (порог, период, статистика, действия).
  5. Описать тревогу и при необходимости сменить состояние для теста.
  6. При ненадобности удалить тревогу.

Полезные команды (шпаргалка)

  • Перечислить SNS-топики:
aws sns list-topics
  • Получить ID всех инстансов EC2:
aws ec2 describe-instances --query "Reservations[].Instances[].InstanceId"
  • Посмотреть метрики EC2 в CloudWatch:
aws cloudwatch list-metrics --namespace "AWS/EC2"
  • Создать или обновить тревогу (пример для CPU > 70%):
aws cloudwatch put-metric-alarm \
  --alarm-name cpu-mon \
  --alarm-description "Test Alarm when CPU exceeds 70%" \
  --metric-name CPUUtilization \
  --namespace AWS/EC2 \
  --statistic Average \
  --period 300 \
  --threshold 70 \
  --comparison-operator GreaterThanThreshold \
  --dimensions "Name=InstanceId,Value=" \
  --evaluation-periods 2 \
  --alarm-actions  \
  --unit Percent
  • Описать тревогу и получить детали:
aws cloudwatch describe-alarms --alarm-names cpu-mon
  • Временно поменять состояние тревоги (чтобы протестировать оповещения):
aws cloudwatch set-alarm-state --alarm-name "cpu-mon" --state-value ALARM --state-reason "testing purposes"
  • Посмотреть историю изменений состояния тревоги:
aws cloudwatch describe-alarm-history --alarm-name "cpu-mon" --history-item-type StateUpdate

Просмотр тревог и истории

  • Удалить тревогу:
aws cloudwatch delete-alarms --alarm-names cpu-mon
  • Проверить список всех тревог:
aws cloudwatch describe-alarms

Подробно: создание тревоги для CPU EC2

  1. Выберите EC2 InstanceId и ARN SNS для оповещений.
  2. Определите порог, период и количество периодов (evaluation-periods).
    • period — длина окна в секундах (например, 300 = 5 минут).
    • evaluation-periods — сколько таких окон подряд должны подтвердить условие.
  3. Задайте comparison-operator, statistic и unit.

Пример создаёт тревогу, которая сработает если средняя загрузка CPU > 70% в двух подряд окнах по 5 минут.

Код создания приведён в разделе «Полезные команды».

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

Как тестировать оповещения

  • Используйте set-alarm-state, чтобы временно перевести тревогу в состояние ALARM и проверить, что подписчики SNS получают уведомление.
  • Проверяйте историю изменений через describe-alarm-history.
  • Для интеграционных тестов создавайте отдельный SNS-топик с email или HTTPS подпиской на тестовый endpoint.

Когда такой подход не подходит (контрпримеры)

  • Не подходит, если вам нужна декларативная инфраструктура: в этом случае лучше использовать Terraform или CloudFormation.
  • Если требуется сложная логика оповещений (например, корелляция метрик между сервисами), лучше использовать более продвинутые инструменты наблюдаемости.
  • Для временного и одноразового теста большего смысла не имеет создавать постоянные тревоги — используйте временные ресурсы и автоматизированное удаление.

Альтернативные подходы

  • AWS Console: удобна для визуальной настройки и отладки.
  • Terraform/CloudFormation: лучше для версионирования и повторяемых окружений.
  • Prometheus + Alertmanager: для гибких правил и локальной агрегации метрик.

Мини‑методология: как безопасно работать с тревогами через CLI

  1. Создавайте тревоги в отдельной тестовой среде.
  2. Проверяйте SNS-оповещения через тестовые подписки.
  3. Используйте теги и описания (alarm-description) для быстрой идентификации.
  4. Автоматизируйте удаление тестовых тревог после проверки.

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

DevOps / SRE:

  • Есть IAM с нужными правами.
  • Создан SNS-топик и подписки на него.
  • Тестовые тревоги созданы и проверены.

Разработчик:

  • Понимает метрики, которые мониторит.
  • Может вызвать set-alarm-state для локального теста.

Админ безопасности:

  • Убедился, что ключи не в репозитории.
  • Проверил политики доступа к SNS и CloudWatch.

Критерии приёмки

  • Тревога создаётся через aws-cli без ошибок.
  • При ручной смене состояния на ALARM подписчики получают уведомление.
  • Оповещение появляется в истории тревоги и видимо через describe-alarm-history.
  • Тревога может быть корректно удалена через delete-alarms.

Чек‑лист безопасности и соответствия

  • Используйте минимальные привилегии IAM.
  • Для долгосрочных автоматизированных задач применяйте роли IAM для EC2 или временные STS-токены.
  • Не храните секреты в переменных окружения на совместно используемых машинах.
  • При обработке персональных данных в уведомлениях учитывайте требования GDPR и политики хранения логов.

Быстрая шпаргалка: примеры команд

Создать alarm (снова для удобства):

aws cloudwatch put-metric-alarm --alarm-name cpu-mon --alarm-description "Test Alarm when CPU exceeds 70%" --metric-name CPUUtilization --namespace AWS/EC2 --statistic Average --period 300 --threshold 70 --comparison-operator GreaterThanThreshold --dimensions "Name=InstanceId,Value=" --evaluation-periods 2 --alarm-actions  --unit Percent

Поменять состояние (тест):

aws cloudwatch set-alarm-state --alarm-name "cpu-mon" --state-value ALARM --state-reason "testing purposes"

Удалить alarm:

aws cloudwatch delete-alarms --alarm-names cpu-mon

Часто задаваемые вопросы

Q: Нужно ли для создания тревоги права на SNS?
A: Да — если вы указываете alarm-actions с ARN SNS, у пользователя должны быть права publish на этот топик.

Q: Можно ли использовать метрики с namespace отличным от AWS/EC2?
A: Да — list-metrics покажет все доступные метрики; у сервисов разные namespace.

Q: Как отменить тестовую смену состояния тревоги?
A: Опустите состояние вручную в OK или пересоздайте/пересчитайте метрику; set-alarm-state позволяет установить OK.

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

  • aws-cli даёт полный набор команд для управления CloudWatch из терминала.
  • Создайте SNS для оповещений и используйте put-metric-alarm для создания тревог.
  • Тестируйте оповещения через set-alarm-state и проверяйте историю через describe-alarm-history.

Рекомендации по следующему шагу

  • Если вы планируете автоматизировать мониторинг, перенесите конфигурацию тревог в Terraform или CloudFormation.
  • Настройте автоматические тесты на CI, которые проверяют создание и удаление тестовых тревог.

Список SNS-топиков и ID инстансов EC2

Внимание: скриншоты иллюстративны и не содержат активных ключей.

Поделиться: 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 быстро