0Pricing
Cloud & IT Cert Prep · Урок

Оповещения 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 — локальная установка не требуется.

Все уроки этого курса

  1. Метрики CloudWatch, пространства имён и измерения
  2. Оповещения CloudWatch и составные оповещения
  3. Журналы CloudWatch и Log Insights
  4. Панели CloudWatch и Container Insights
← Назад к Cloud & IT Cert Prep