Alarmy CloudWatch i alarmy złożone
Ustawiać alarmy oparte na progach, uruchamiające Auto Scaling lub powiadomienia SNS, oraz łączyć wiele alarmów w alarm złożony, aby ograniczyć szum alarmowy.
Alarmy CloudWatch i alarmy złożone to bezpłatna lekcja Cloud & IT Cert Prep na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Cloud & IT Cert Prep, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Cloud & IT Cert Prep zawiera 4 lekcji w sumie.
Czym jest alarm CloudWatch?
Alarm CloudWatch monitoruje pojedynczą metrykę lub wynik wyrażenia arytmetyki metryk w określonym przez Państwa przedziale czasu. Gdy metryka przekroczy zdefiniowany przez Państwa próg, alarm zmienia stan i może automatycznie wywołać działanie, takie jak wysłanie powiadomienia SNS, skalowanie grupy Auto Scaling, zatrzymanie instancji EC2 lub utworzenie elementu OpsItem w Systems Manager. Alarmy są podstawowym mechanizmem automatycznej reakcji operacyjnej w AWS.
Stany alarmu
Alarm CloudWatch zawsze znajduje się w jednym z trzech stanów: OK — metryka mieści się w zdefiniowanym progu; ALARM — metryka przekroczyła próg w wymaganej liczbie okresów oceny; INSUFFICIENT_DATA — alarm został właśnie utworzony, metryka jest niedostępna lub zebrano jeszcze zbyt mało danych. Przejścia między stanami wywołują działania skonfigurowane dla danej zmiany stanu — mogą Państwo skonfigurować różne tematy SNS dla stanów OK, ALARM i INSUFFICIENT_DATA.
# 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'Tworzenie alarmu CloudWatch
Podczas tworzenia alarmu określają Państwo: metrykę i przestrzeń nazw, statystykę (Average, Sum, Maximum itd.), okres (częstotliwość oceniania metryki w sekundach), okresy oceny (liczbę kolejnych okresów, w których próg musi zostać przekroczony), wartość progu oraz operator porównania. Alarm jest wyzwalany, gdy metryka przekracza próg w określonej liczbie kolejnych okresów oceny.
# 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:AlertTeamDziałania alarmu: SNS, Auto Scaling, EC2
Działania alarmu mogą być kierowane do kilku miejsc docelowych: tematów Amazon SNS (w celu wysyłania wiadomości e-mail i SMS-ów lub wywoływania Lambda), zasad Auto Scaling (w celu zmniejszania lub zwiększania ASG) oraz działań EC2 (zatrzymania, zakończenia, ponownego uruchomienia lub odzyskania instancji EC2). Dla każdego stanu (OK, ALARM, INSUFFICIENT_DATA) mogą Państwo określić inny zestaw działań — na przykład powiadamiać zespół w stanie ALARM, informować o przywróceniu stanu OK oraz zgłaszać stan INSUFFICIENT_DATA, aby wykrywać luki w monitorowaniu.
# 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.0Postępowanie z brakującymi danymi
Gdy CloudWatch ocenia alarm, a niektórych punktów danych brakuje, muszą Państwo zdecydować, jak je traktować. Dostępne opcje to: notBreaching (traktowanie brakujących danych jako mieszczących się w progu — alarm pozostaje w stanie OK, jeśli pozostałe dane są prawidłowe), breaching (traktowanie brakujących danych jako przekraczających próg — alarm przechodzi w stan ALARM), ignore (stan alarmu się nie zmienia) oraz missing (alarm przechodzi w stan INSUFFICIENT_DATA). Wybór niewłaściwej opcji prowadzi do fałszywych alarmów lub niewykrytych awarii — jest to istotny niuans egzaminu 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:OpsRozdzielczość alarmu i okresy oceny
Rozdzielczość alarmu jest iloczynem okresu i liczby okresów oceny. Na przykład okres wynoszący 60 sekund i 5 okresów oceny oznacza, że alarm bierze pod uwagę 5 kolejnych punktów danych z jednominutowych okresów. Domyślnie alarm przechodzi w stan ALARM dopiero wtedy, gdy próg zostanie przekroczony we wszystkich pięciu okresach. Za pomocą opcji datapoints-to-alarm mogą Państwo wymagać przekroczenia progu tylko w M z N okresów — na przykład w 3 z 5 — co ogranicza liczbę fałszywych alarmów powodowanych przejściowymi skokami wartości.
# 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:...Alarmy złożone: łączenie wielu alarmów
Alarm złożony ocenia stan wielu innych alarmów przy użyciu logiki boolowskiej (AND, OR, NOT). Przechodzi w stan ALARM tylko wtedy, gdy wyrażenie jego reguły ma wartość true. Alarmy złożone służą do ograniczania liczby alertów — można na przykład wysyłać alert tylko wtedy, gdy jednocześnie aktywne są alarmy wysokiego użycia procesora ORAZ wysokiego opóźnienia, ponieważ samo wysokie użycie procesora może być dopuszczalne podczas przetwarzania wsadowego. Alarmów złożonych można także używać do wyciszania alarmów podrzędnych podczas okien serwisowych.
# 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'Wyciszanie alarmów za pomocą alarmów złożonych
Alarmy złożone obsługują działania wyciszające alarmy — mogą Państwo skonfigurować alarm złożony tak, aby wyciszał alarmy podrzędne podczas planowanej konserwacji. Na przykład podczas wdrażania mogą Państwo ustawić alarm złożony, który łączy alarm „MaintenanceMode” za pomocą logiki OR, wyciszając wszystkie powiadomienia z alarmów podrzędnych, gdy trwa konserwacja. Zapobiega to lawinie alertów, gdy usługi są celowo wyłączane na czas aktualizacji.
# 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:ProductionOpsIntegracja z zasadami Auto Scaling
Grupy Auto Scaling używają alarmów CloudWatch jako wyzwalaczy zasad step scaling i simple scaling. Gdy alarm przechodzi w stan ALARM, zasada skalowania zostaje wykonana. W przypadku step scaling definiują Państwo wiele korekt skalowania dla różnych zakresów progowych — na przykład dodanie 1 instancji, gdy użycie procesora wynosi 70–80%, dodanie 3, gdy wynosi 80–90%, oraz dodanie 5, gdy przekracza 90%. Alarm uruchamia pierwszy odpowiedni krok na podstawie poziomu przekroczenia progu w momencie oceny.
# 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_ARNAlarmy rozliczeniowe CloudWatch
Mogą Państwo utworzyć w CloudWatch alarmy rozliczeniowe, aby otrzymywać powiadomienia, gdy szacowane opłaty AWS przekroczą określony próg. Metryki rozliczeniowe są publikowane wyłącznie w regionie us-east-1 (niezależnie od miejsca uruchomienia zasobów) i aktualizowane mniej więcej co 6 godzin. Aby włączyć alarmy rozliczeniowe, należy najpierw aktywować funkcję Billing Alerts w konsoli AWS Billing. Dokładniejszym narzędziem jest AWS Budgets, ale alarmy rozliczeniowe CloudWatch pozostają prawidłową opcją sprawdzaną na egzaminie.
# 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:BillingAlertsTestowanie i monitorowanie alarmów
Mogą Państwo ręcznie ustawić stan alarmu za pomocą polecenia set-alarm-state, aby przetestować działania alarmu bez oczekiwania na rzeczywiste przekroczenie progu. Jest to przydatne podczas sprawdzania, czy tematy SNS, zasady Auto Scaling i funkcje Lambda prawidłowo reagują. Działania alarmów należy zawsze testować w środowisku nieprodukcyjnym oraz sprawdzić, czy w temacie SNS potwierdzono prawidłowe subskrypcje e-mail, zanim zaczną Państwo polegać na alarmach przy monitorowaniu środowiska produkcyjnego.
# 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}'Szybkie sprawdzenie
Sprawdź swoją wiedzę na temat zagadnień AWS Solutions Architect (SAA-C03) omówionych w tej lekcji.
Podsumowanie lekcji
W tej lekcji poznali Państwo następujące zagadnienia: alarmy mają trzy stany (OK, ALARM, INSUFFICIENT_DATA) i mogą wywoływać działania SNS, Auto Scaling oraz EC2; opcja datapoints-to-alarm umożliwia ocenę M z N okresów, ograniczając liczbę fałszywych alarmów; natomiast alarmy złożone wykorzystują logikę boolowską do łączenia wielu alarmów i ograniczania liczby alertów. Następnie omówimy CloudWatch Logs i Log Insights służące do scentralizowanego zarządzania logami.
Często zadawane pytania
Czy lekcja „Alarmy CloudWatch i alarmy złożone” jest bezpłatna?
Tak — pełny tekst „Alarmy CloudWatch i alarmy złożone” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Cloud & IT Cert Prep, przejdź na CoddyKit PRO. Kurs Cloud & IT Cert Prep zawiera 4 lekcji w sumie.
Co nauczysz się w „Alarmy CloudWatch i alarmy złożone”?
Ustawiać alarmy oparte na progach, uruchamiające Auto Scaling lub powiadomienia SNS, oraz łączyć wiele alarmów w alarm złożony, aby ograniczyć szum alarmowy. Ćwiczysz Cloud & IT Cert Prep z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Cloud & IT Cert Prep?
Nie wymagamy żadnego doświadczenia. Cloud & IT Cert Prep w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.
Ile czasu zajmuje lekcja „Alarmy CloudWatch i alarmy złożone”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Cloud & IT Cert Prep?
Tak. Każda lekcja Cloud & IT Cert Prep zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Metryki, przestrzenie nazw i wymiary CloudWatch
- Alarmy CloudWatch i alarmy złożone
- Dzienniki CloudWatch i Log Insights
- Panele CloudWatch i Container Insights