AWS CLI для CloudWatch: команды для управления тревогами и мониторингом EC2
Этот пошаговый гид показывает команды aws-cli для управления метриками и тревогами CloudWatch из терминала. Вы научитесь создавать, описывать, тестировать и удалять тревоги для мониторинга CPU EC2, подключать SNS для оповещений и проводить базовую проверку работоспособности. Подключите ключи AWS, проверьте метрики и используйте приведённые сниппеты как шаблон.
Для кого эта инструкция
- Инженерам DevOps и SRE, которые хотят автоматизировать мониторинг через CLI.
- Разработчикам, которым нужно быстро протестировать оповещения без захода в консоль.
- Тем, кто знаком с EC2 и CloudWatch и имеет AWS CLI.
Что мы рассмотрим
- Проверка AWS CLI и экспорт ключей
- Поиск метрик и SNS-топиков
- Создание тревоги для CPU EC2 (пример)
- Описание, тестирование (смена состояния) и удаление тревоги
- Чек‑листы, рекомендации по тестированию и альтернативные подходы
Предварительные требования
- Наличие AWS аккаунта.
- Базовые знания об EC2 и CloudWatch.
- IAM-пользователь с правами для управления CloudWatch и SNS (например, AdministratorAccess или набор развёрнутых прав).
- Установленный AWS CLI (рекомендуется v2).
- 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
- Найти существующие SNS-топики и выбрать ARN для оповещений.
- Получить ID нужного EC2-инстанса.
- Проверить доступные метрики в namespace AWS/EC2.
- Создать put-metric-alarm с нужными параметрами (порог, период, статистика, действия).
- Описать тревогу и при необходимости сменить состояние для теста.
- При ненадобности удалить тревогу.
Полезные команды (шпаргалка)
- Перечислить 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
- Выберите EC2 InstanceId и ARN SNS для оповещений.
- Определите порог, период и количество периодов (evaluation-periods).
- period — длина окна в секундах (например, 300 = 5 минут).
- evaluation-periods — сколько таких окон подряд должны подтвердить условие.
- Задайте 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
- Создавайте тревоги в отдельной тестовой среде.
- Проверяйте SNS-оповещения через тестовые подписки.
- Используйте теги и описания (alarm-description) для быстрой идентификации.
- Автоматизируйте удаление тестовых тревог после проверки.
Роль‑ориентированные чек‑листы
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, которые проверяют создание и удаление тестовых тревог.

Внимание: скриншоты иллюстративны и не содержат активных ключей.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента