Оповещения CloudWatch и составные оповещения
Настройте оповещения на основе пороговых значений для запуска Auto Scaling или уведомлений SNS, а также объединяйте несколько оповещений в составное, чтобы уменьшить количество лишних уведомлений.
«Оповещения CloudWatch и составные оповещения» — бесплатный урок Cloud & IT Cert Prep на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cloud & IT Cert Prep, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cloud & IT Cert Prep содержит 4 уроков всего.
Что такое CloudWatch Alarm
CloudWatch alarm отслеживает одну метрику или результат выражения математического вычисления метрик в течение указанного Вами периода. Когда метрика пересекает заданный Вами порог, alarm меняет состояние и может автоматически запустить действие, например отправить уведомление SNS, изменить размер Auto Scaling group, остановить экземпляр EC2 или выполнить элемент OpsItem в Systems Manager. Сигналы — основной механизм автоматического реагирования на операционные события в AWS.
Состояния alarm
CloudWatch alarm всегда находится в одном из трёх состояний: OK — метрика находится в пределах заданного порога; ALARM — метрика пересекла порог в течение необходимого числа периодов оценки; INSUFFICIENT_DATA — alarm только что создан, метрика недоступна или пока собрано недостаточно данных. Переходы между состояниями запускают действия, настроенные для соответствующего изменения состояния: для состояний OK, ALARM и INSUFFICIENT_DATA можно указать разные темы SNS.
# View all alarms and their current state
aws cloudwatch describe-alarms \
--query 'MetricAlarms[].{Name:AlarmName,State:StateValue,Metric:MetricName}' \
--output table
# List only alarms currently in ALARM state
aws cloudwatch describe-alarms \
--state-value ALARM \
--query 'MetricAlarms[].AlarmName'Создание CloudWatch Alarm
При создании alarm указываются: метрика и пространство имён, статистика (Average, Sum, Maximum и т. д.), период (как часто метрика оценивается, в секундах), периоды оценки (сколько последовательных периодов должны пересечь порог), значение порога и оператор сравнения. alarm срабатывает, когда метрика пересекает порог в течение указанного числа последовательных периодов оценки.
# Create an alarm: trigger when CPU > 70% for 2 consecutive 5-min periods
aws cloudwatch put-metric-alarm \
--alarm-name HighCPUAlarm \
--alarm-description 'Trigger when EC2 CPU exceeds 70%' \
--metric-name CPUUtilization \
--namespace AWS/EC2 \
--dimensions Name=InstanceId,Value=i-0123456789abcdef0 \
--statistic Average \
--period 300 \
--evaluation-periods 2 \
--threshold 70 \
--comparison-operator GreaterThanThreshold \
--alarm-actions arn:aws:sns:us-east-1:111122223333:AlertTeamДействия alarm: SNS, Auto Scaling, EC2
Действия alarm могут быть направлены в несколько мест: темы Amazon SNS (для отправки электронной почты, SMS или запуска Lambda), политики Auto Scaling (для уменьшения или увеличения ASG) и действия EC2 (для остановки, завершения работы, перезагрузки или восстановления экземпляра EC2). Для каждого состояния (OK, ALARM, INSUFFICIENT_DATA) можно указать отдельный набор действий: например, уведомлять команду при ALARM, сообщать о восстановлении при OK и отправлять предупреждение при INSUFFICIENT_DATA, чтобы обнаруживать пробелы в мониторинге.
# Alarm that stops an idle EC2 instance when CPU < 1% for 30 min
aws cloudwatch put-metric-alarm \
--alarm-name LowCPUStopInstance \
--metric-name CPUUtilization \
--namespace AWS/EC2 \
--dimensions Name=InstanceId,Value=i-0123456789abcdef0 \
--statistic Average \
--period 300 \
--evaluation-periods 6 \
--threshold 1 \
--comparison-operator LessThanThreshold \
--alarm-actions arn:aws:swf:us-east-1:111122223333:action/actions/AWS_EC2.InstanceId.Stop/1.0Обработка отсутствующих данных
Когда CloudWatch оценивает alarm, а некоторые точки данных отсутствуют, необходимо решить, как их обрабатывать. Доступны следующие варианты: notBreaching (считать отсутствующие данные находящимися в пределах порога — alarm остаётся в состоянии OK, если остальные данные соответствуют норме), breaching (считать отсутствующие данные превышающими порог — alarm переходит в ALARM), ignore (состояние alarm не изменяется) и missing (alarm переходит в INSUFFICIENT_DATA). Неправильный выбор приводит к ложным срабатываниям или незаметным сбоям — это важный нюанс экзамена SAA-C03.
# Set missing data treatment on an alarm
aws cloudwatch put-metric-alarm \
--alarm-name WebsiteLatencyAlarm \
--metric-name TargetResponseTime \
--namespace AWS/ApplicationELB \
--statistic Average \
--period 60 \
--evaluation-periods 3 \
--threshold 2.0 \
--comparison-operator GreaterThanThreshold \
--treat-missing-data breaching \
--alarm-actions arn:aws:sns:us-east-1:111122223333:OpsРазрешение alarm и периоды оценки
Разрешение alarm — это произведение периода на количество периодов оценки. Например, период в 60 секунд и 5 периодов оценки означают, что alarm анализирует 5 последовательных точек данных с интервалом в 1 минуту. По умолчанию alarm переходит в ALARM только тогда, когда все пять периодов пересекают порог. С помощью параметра datapoints-to-alarm можно потребовать, чтобы порог был пересечён только в M из N периодов, например в 3 из 5, что уменьшает число ложных срабатываний из-за кратковременных скачков.
# Alarm that requires 3 out of 5 periods to breach (reduces false positives)
aws cloudwatch put-metric-alarm \
--alarm-name CPUSpike \
--metric-name CPUUtilization \
--namespace AWS/EC2 \
--dimensions Name=AutoScalingGroupName,Value=my-asg \
--statistic Average \
--period 60 \
--evaluation-periods 5 \
--datapoints-to-alarm 3 \
--threshold 80 \
--comparison-operator GreaterThanThreshold \
--alarm-actions arn:aws:autoscaling:us-east-1:111122223333:scalingPolicy:...Составные сигналы: объединение нескольких сигналов
Составной сигнал оценивает состояние нескольких других сигналов с помощью булевой логики (AND, OR, NOT). Он переходит в состояние ALARM только тогда, когда выражение его правила даёт значение true. Составные сигналы используются, чтобы уменьшить количество лишних уведомлений: например, отправлять уведомление только при одновременном срабатывании сигналов высокой загрузки CPU и высокой задержки, поскольку одна лишь высокая загрузка CPU может быть допустима во время пакетной обработки. Составные сигналы также можно использовать для подавления дочерних сигналов на время обслуживания.
# Create a composite alarm (alerts only when BOTH CPU and latency are high)
aws cloudwatch put-composite-alarm \
--alarm-name HighLoadComposite \
--alarm-rule 'ALARM("HighCPUAlarm") AND ALARM("HighLatencyAlarm")' \
--alarm-actions arn:aws:sns:us-east-1:111122223333:CriticalOps \
--alarm-description 'Alert only when both CPU and latency are elevated'Подавление сигналов с помощью составных сигналов
Составные сигналы поддерживают действия по подавлению сигналов: составной сигнал можно настроить так, чтобы он подавлял дочерние сигналы во время планового обслуживания. Например, на время развёртывания можно настроить составной сигнал, объединяющий сигнал 'MaintenanceMode' с помощью логики OR и подавляющий все уведомления дочерних сигналов, пока активно обслуживание. Это предотвращает лавину уведомлений, когда Вы намеренно отключаете сервисы для обновления.
# Composite alarm with suppression: alert UNLESS maintenance is active
aws cloudwatch put-composite-alarm \
--alarm-name ProductionAlerts \
--alarm-rule 'ALARM("HighCPUAlarm") AND NOT ALARM("MaintenanceModeAlarm")' \
--alarm-actions arn:aws:sns:us-east-1:111122223333:ProductionOpsИнтеграция с политиками Auto Scaling
Группы Auto Scaling используют сигналы CloudWatch как триггеры для политик пошагового масштабирования и простого масштабирования. Когда сигнал переходит в состояние ALARM, выполняется политика масштабирования. Для пошагового масштабирования задаются разные изменения размера для различных диапазонов порогов: например, добавить 1 экземпляр при загрузке CPU 70–80%, 3 — при 80–90% и 5 — при загрузке выше 90%. Сигнал запускает первый подходящий шаг на основе уровня превышения порога в момент оценки.
# Create a scale-out alarm linked to an ASG scaling policy
aws cloudwatch put-metric-alarm \
--alarm-name ScaleOutTrigger \
--metric-name CPUUtilization \
--namespace AWS/EC2 \
--dimensions Name=AutoScalingGroupName,Value=my-asg \
--statistic Average \
--period 60 \
--evaluation-periods 2 \
--threshold 70 \
--comparison-operator GreaterThanThreshold \
--alarm-actions arn:aws:autoscaling:us-east-1:111122223333:scalingPolicy:POLICY_ARNПлатёжные сигналы CloudWatch
В CloudWatch можно создать платёжные сигналы, чтобы получать уведомления, когда расчётные расходы AWS превышают заданный порог. Платёжные метрики публикуются только в регионе us-east-1, независимо от того, где работают Ваши ресурсы, и обновляются примерно каждые 6 часов. Чтобы включить платёжные сигналы, сначала необходимо активировать Billing Alerts в консоли AWS Billing. Более точным инструментом является AWS Budgets, однако платёжные сигналы CloudWatch по-прежнему представляют собой допустимый вариант, проверяемый на экзамене.
# Create a billing alarm for $100 threshold
aws cloudwatch put-metric-alarm \
--region us-east-1 \
--alarm-name MonthlyBillingAlert \
--alarm-description 'Alert when estimated charges exceed $100' \
--metric-name EstimatedCharges \
--namespace AWS/Billing \
--dimensions Name=Currency,Value=USD \
--statistic Maximum \
--period 86400 \
--evaluation-periods 1 \
--threshold 100 \
--comparison-operator GreaterThanThreshold \
--alarm-actions arn:aws:sns:us-east-1:111122223333:BillingAlertsТестирование и мониторинг сигналов
Вы можете вручную задать состояние alarm с помощью команды set-alarm-state, чтобы проверить действия alarm, не дожидаясь фактического пересечения порога. Это полезно для проверки того, что темы SNS, политики Auto Scaling и функции Lambda реагируют правильно. Всегда тестируйте действия alarm в среде, не предназначенной для эксплуатации, и убедитесь, что для темы SNS подтверждены правильные подписки электронной почты, прежде чем полагаться на сигналы при уведомлении о событиях в рабочей среде.
# Manually trigger an alarm for testing (does NOT persist — reverts on next evaluation)
aws cloudwatch set-alarm-state \
--alarm-name HighCPUAlarm \
--state-value ALARM \
--state-reason 'Testing alarm action'
# Watch alarm state history
aws cloudwatch describe-alarm-history \
--alarm-name HighCPUAlarm \
--history-item-type StateUpdate \
--query 'AlarmHistoryItems[].{Time:Timestamp,Summary:HistorySummary}'Быстрая проверка
Проверьте своё понимание концепций AWS Solutions Architect (SAA-C03) из этого урока.
Итоги урока
В этом уроке Вы узнали, что сигналы имеют три состояния (OK, ALARM, INSUFFICIENT_DATA) и могут запускать действия SNS, Auto Scaling и EC2; параметр datapoints-to-alarm позволяет выполнять оценку по схеме M из N, уменьшая число ложных срабатываний; а составные сигналы используют булеву логику для объединения нескольких сигналов и подавления лишних уведомлений. Далее мы рассмотрим CloudWatch Logs и Log Insights для централизованного управления журналами.
Часто задаваемые вопросы
Урок «Оповещения CloudWatch и составные оповещения» бесплатный?
Да — полный текст урока «Оповещения CloudWatch и составные оповещения» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cloud & IT Cert Prep, подпишись на CoddyKit PRO. Курс Cloud & IT Cert Prep содержит 4 уроков всего.
Чему я научусь в уроке «Оповещения CloudWatch и составные оповещения»?
Настройте оповещения на основе пороговых значений для запуска Auto Scaling или уведомлений SNS, а также объединяйте несколько оповещений в составное, чтобы уменьшить количество лишних уведомлений. Ты практикуешь Cloud & IT Cert Prep с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Cloud & IT Cert Prep?
Предыдущий опыт не требуется. Cloud & IT Cert Prep на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Оповещения CloudWatch и составные оповещения»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Cloud & IT Cert Prep?
Да. Каждый урок Cloud & IT Cert Prep включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Метрики CloudWatch, пространства имён и измерения
- Оповещения CloudWatch и составные оповещения
- Журналы CloudWatch и Log Insights
- Панели CloudWatch и Container Insights