Amazon CloudWatch: Twoje oczy i uszy w chmurze
Wyobraź sobie, że prowadzisz fabrykę, ale nie masz ani jednego czujnika, żadnego wskaźnika, żadnego alarmu. Nie wiesz, czy maszyny się przegrzewają, czy produkcja stoi, czy rachunek za prąd właśnie przebił budżet. Brzmi jak koszmar? Dokładnie tak wygląda infrastruktura AWS bez Amazon CloudWatch.
CloudWatch to centralny system monitoringu w AWS. Zbiera metryki, przechowuje logi, uruchamia alarmy i pozwala Ci tworzyć dashboardy, żebyś zawsze wiedział, co się dzieje w Twoim środowisku.
Metryki (Metrics)
Metryka to seria danych w czasie. Każda usługa AWS automatycznie wysyła swoje metryki do CloudWatch. Nie musisz nic konfigurować, to działa od razu (out of the box).
Przykłady wbudowanych metryk:
- EC2: CPUUtilization, NetworkIn, NetworkOut, StatusCheckFailed
- RDS: DatabaseConnections, FreeStorageSpace, ReadLatency
- ALB: RequestCount, TargetResponseTime, HTTPCode_Target_5XX
- S3: BucketSizeBytes, NumberOfObjects
- Lambda: Invocations, Duration, Errors, Throttles
Metryki niestandardowe (Custom Metrics)
Co jeśli chcesz monitorować coś, czego AWS nie śledzi automatycznie? Na przykład liczbę zalogowanych użytkowników, rozmiar kolejki w Twojej aplikacji albo zużycie RAM na EC2?
Wtedy tworzysz custom metric. Twoja aplikacja (lub skrypt) wysyła dane do CloudWatch za pomocą API PutMetricData.
CloudWatch Agent
CloudWatch Agent to lekki program, który instalujesz na instancjach EC2 (lub serwerach on-premises). Pozwala on zbierać:
- Metryki systemowe: zużycie RAM, swap, dysk, procesy
- Logi: z plików systemowych, logów aplikacji, sysloga
Agent to most, który łączy to, co dzieje się wewnątrz Twojego systemu operacyjnego, z CloudWatch.
Alarmy (CloudWatch Alarms)
Metryki bez alarmów to jak czujnik dymu bez syreny. CloudWatch Alarm monitoruje wybraną metrykę i uruchamia akcję, gdy wartość przekroczy próg.
Alarm ma trzy stany:
- OK - wszystko w normie
- ALARM - próg został przekroczony
- INSUFFICIENT_DATA - za mało danych do oceny (np. nowa metryka)
Co może zrobić alarm, gdy przejdzie w stan ALARM?
- Wysłać powiadomienie przez Amazon SNS (email, SMS, webhook)
- Uruchomić Auto Scaling (dodać lub usunąć instancje EC2)
- Wykonać EC2 Action (zatrzymać, zakończyć lub zrestartować instancję)
Billing Alarms
To jeden z pierwszych alarmów, który powinieneś ustawić na swoim koncie AWS. Billing Alarm powiadomi Cię, gdy szacowany rachunek przekroczy kwotę, którą określisz.
Jak to ustawić:
- Billing Alarms wymagają regionu us-east-1 (N. Virginia)
- Musisz najpierw włączyć „Receive Billing Alerts" w ustawieniach konta
- Tworzysz alarm na metrykę
EstimatedChargesw namespaceAWS/Billing
CloudWatch Dashboards
Dashboardy to niestandardowe strony z wykresami Twoich metryk. Możesz mieć dashboard operacyjny dla zespołu DevOps, biznesowy dla managementu, albo dedykowany dla konkretnej aplikacji.
Kluczowe cechy dashboardów:
- Mogą zawierać metryki z wielu regionów (cross-region)
- Mogą zawierać metryki z wielu kont AWS (cross-account)
- Wspierają auto-refresh i różne typy wykresów
- Pierwszy 3 dashboardy (do 50 metryk) za darmo, potem opłata za dashboard
CloudWatch Logs
CloudWatch Logs to zarządzana usługa do przechowywania, przeszukiwania i analizy logów. Zamiast SSH-ować się na każdą instancję i grepować pliki, masz wszystko w jednym miejscu.
Struktura CloudWatch Logs:
- Log Group - kontener najwyższego poziomu (np.
/aws/lambda/my-function) - Log Stream - strumień logów wewnątrz grupy (np. per instancja EC2, per kontener)
- Log Event - pojedynczy wpis z timestampem i wiadomością
Skąd mogą płynąć logi do CloudWatch Logs?
- Lambda (automatycznie)
- EC2 (przez CloudWatch Agent)
- ECS/Fargate (awslogs driver)
- API Gateway, Route 53, VPC Flow Logs
- CloudTrail, RDS, i wiele innych
Domyślnie logi w CloudWatch Logs są przechowywane bezterminowo (i kosztują!). Możesz ustawić retencję na poziomie Log Group:
- 1 dzień, 3 dni, 5 dni, 1 tydzień, 2 tygodnie, 1 miesiąc...
- ...aż do 10 lat, lub „Never expire" (domyślne)
Tip: Dla oszczędności eksportuj stare logi do S3 (tańsze storage), a w CloudWatch trzymaj tylko ostatnie tygodnie/miesiące.
CloudWatch Logs Insights
Logs Insights to interaktywna wyszukiwarka logów z własnym językiem zapytań. Pozwala przeszukiwać gigabajty logów w sekundy i tworzyć wizualizacje.
Przykładowe użycia:
- Znajdź 25 najnowszych błędów w logach Lambda
- Policz liczbę błędów 5XX per godzinę
- Znajdź najwolniejsze requesty w API Gateway
Logs Insights automatycznie wykrywa pola w logach JSON, co czyni go potężnym narzędziem do analizy.
| Aspekt | Basic Monitoring | Detailed Monitoring / Agent |
|---|---|---|
| Interwał metryk EC2 | 5 minut | 1 minuta |
| Metryki RAM/dysk | Niedostępne | Wymagają CloudWatch Agent |
| Koszt | Darmowy | Dodatkowa opłata |
| Logi systemowe | Brak | Przez CloudWatch Agent |
| Custom metrics | Brak | PutMetricData API / Agent |
AWS Trusted Advisor
Trusted Advisor to usługa, która automatycznie analizuje Twoje konto AWS i daje rekomendacje w 5 kategoriach:
- Cost Optimization - czy masz nieużywane zasoby, za które płacisz?
- Performance - czy Twoje zasoby są optymalnie skonfigurowane?
- Security - czy masz otwarte porty, brak MFA na root?
- Fault Tolerance - czy masz backupy, multi-AZ?
- Service Limits - czy zbliżasz się do limitów usług?
| Funkcja | Basic/Developer | Business+ |
|---|---|---|
| Security checks (7 core) | ✅ | ✅ |
| Pełne 5 kategorii | ❌ | ✅ |
| API dostęp | ❌ | ✅ |
| CloudWatch integration | ❌ | ✅ |
- CloudWatch to centralny monitoring AWS: metryki, alarmy, logi, dashboardy
- Wbudowane metryki EC2 nie obejmują RAM i dysku; potrzebujesz CloudWatch Agent
- Alarmy reagują na progi metryk i mogą uruchamiać powiadomienia SNS, Auto Scaling lub akcje EC2
- Billing Alarm to must-have od pierwszego dnia na koncie AWS (region us-east-1)
- CloudWatch Logs centralnie przechowuje logi z Lambda, EC2, ECS i wielu innych usług
- Logs Insights pozwala przeszukiwać i analizować logi za pomocą języka zapytań
Administrator zauważa, że instancja EC2 zużywa dużo pamięci RAM, ale w CloudWatch nie widzi żadnej metryki RAM. Dlaczego?
Firma chce otrzymać email, gdy szacowany miesięczny rachunek AWS przekroczy 100 USD. Co musi skonfigurować?
Zespół DevOps chce zobaczyć na jednym ekranie metryki z EC2 w eu-west-1 i RDS w us-east-1. Które rozwiązanie jest najlepsze?