Przejdź do treści

Alarm na podstawie metryk z CloudWatch | Powiadomienia o zajętości dysku EC2

Alarm based on metrics from CloudWatch EC2 Disk Usage Notifications 2023 basics

Cześć, witaj na moim blogu 🙂 Z tego artykułu dowiesz się o tym, co zrobić, żeby otrzymywać powiadomienia dotyczące zajętości dysku na EC2. W artykule wyjaśnię jak wysyłać powiadomienia z CloudWatch na dowolny adres e-mail.

Jeśli jesteś ciekawy jak dodatkowo otrzymywać takie powiadomienia slacku albo przez Microsoft Teams to zajrzyj do artykułu Powiadomienia z AWS na MS Teams – blog z tutorialem po polsku (lepczynski.it)

Z tego tutorialu dowiesz się jak otrzymywać powiadomienia e-mail, gdy zajętość dysku przekroczy 80%. Spokojnie, wyjaśnię krok po kroku, co trzeba zrobić. Jeśli wolisz oglądać poradniki, zamiast je czytać, to mam dobrą wiadomość, na YouTube znajdziesz ten tutorial w formie video.

YouTube – CloudWatch Alarm Tutorial

Jeśli jeszcze nie wiesz, jak możesz monitorować pamięć RAM, to mam świetną wiadomość.
nagrałem jakiś czasem temu tutorial także na ten temat How to Monitor EC2 Memory Usage – EC2 Custom Metrics in AWS CloudWatch – 2022 – YouTube.

Przejdźmy do rzeczy, przygotuj sobie pyszną kawę i zdobądź nową wiedzę, czytając ten artykuł:)

Odpowiednia Rola IAM i uprawnienia

Witaj ponownie mam nadzieje, że masz ze sobą kawę albo swój ulubiony napój, bo nie każdy musi lubić kawę 😉
Bezpieczeństwo to podstawa, więc na początek utwórz nowa role IAM pozwalającą na wysyłanie danych do CloudWatch CloudWatchAgentServerPolicy.

create IAM role AWS 2023
create IAM role AWS 2023
cloudwatch_agent_server_policy AWS 2023
CloudWatchAgentServerPolicy AWS 2023

Teraz wystarczy dodać tę rolę do EC2. Rola ta pozwoli na wysyłanie danych z EC2 do CloudWatch.

add IAM role to EC2 2023
Add IAM role to EC2 2023

Konfiguracja CloudWatch Agenta

Wracając do EC2, to oprócz uprawnień potrzebny jest jeszcze CloudWatch agent, który będzie wysyłał dane.

connect to EC2 | 2023
connect to AWS EC2 | 2023

Ja trochę zmieniłem konfiguracje z mojego artykułu dotyczącego monitorowania pamięci RAM i tym razem monitoruje miejsce na dysku. Na początek przejdź do tmp i pobierz CloudWatch agenta:

cd /tmp
wget https://s3.amazonaws.com/amazoncloudwatch-agent/amazon_linux/amd64/latest/amazon-cloudwatch-agent.rpm

Pamiętaj użyć wersji przeznaczonej na twój system i odpowiednich komend, poniże przykłady dla innych systemów:

  • https://s3.amazonaws.com/amazoncloudwatch-agent/amazon_linux/amd64/latest/amazon-cloudwatch-agent.rpm
  • https://s3.amazonaws.com/amazoncloudwatch-agent/centos/amd64/latest/amazon-cloudwatch-agent.rpm
  • https://s3.amazonaws.com/amazoncloudwatch-agent/debian/amd64/latest/amazon-cloudwatch-agent.deb
  • https://s3.amazonaws.com/amazoncloudwatch-agent/ubuntu/amd64/latest/amazon-cloudwatch-agent.deb

Teraz możesz zainstalować agenta, używając np. RPM z opcją -U. Gdyby agent był już zainstalowany, to zostanie zaktualizowany:

sudo rpm -U amazon-cloudwatch-agent.rpm

Jeśli używasz innego systemu i pobrałeś inny typ, to możesz użyć:

sudo dpkg -i -E ./amazon-cloudwatch-agent.deb
msiexec /i amazon-cloudwatch-agent.msi

Po instalacji edytuj albo utwórz plik konfiguracyjny, który zazwyczaj powinien być w /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json. Możesz użyć np. vi albo innego dowolnego edytora:

sudo vi /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json

Możesz skopiować zawartości mojego pliku konfiguracyjnego przedstawioną poniżej i na jego podstawie utworzyć swój. W moim przypadku agent będzie co 5 minut sprawdzał zajętość dysku i co 5 minut wysyłał dane do CloudWatch. Zalecam wysyłanie większej ilości informacji. Ja utworzyłem prostą konfigurację, żeby osobom początkującym ułatwić zrozumienie tematu, a plik był bardziej czytelny.

{
  "agent": {
    "metrics_collection_interval": 320,
    "run_as_user": "cwagent"
  },
  "metrics": {
    "append_dimensions": {
        "InstanceId": "${aws:InstanceId}"
    },
    "metrics_collected": {
      "disk": {
        "measurement": [
          "used_percent"
        ],
        "metrics_collection_interval": 320,
        "resources": [
          "/"
        ]
      }
    }
  }
}


Więcej informacji dotyczących CloudWatch znajdziesz w dokumentacji. Tworząc plik możesz także skorzystać z kreatora Create the CloudWatch agent configuration file with the wizard – Amazon CloudWatch

Teraz możesz zrestartować agenta. Żeby mieć pewność, że odczytał nową konfigurację, możesz zerknąć na logi, np. za pomocą tail:

sudo systemctl restart amazon-cloudwatch-agent
tail -f /opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log

Wysyłanie powiadomień

Dobra bierzmy się do pracy. Jeśli twój agent działa prawidłowo, to w ClodWatch powinieneś widzieć to, co wysyła:

CloudWatch disk used percent 2023
AWS CloudWatch disk used percent 2023

Spokojnie, chwilkę może zająć, zanim pojawią się dane. Gdy wszystko będzie ok, to z menu po lewej stronie wybierz Alarms i All alarms. Możesz kliknąć Create alarm:

CloudWatch - create Alarms 2023
CloudWatch – create Alarms 2023

Wybierz metrykę, na podstawie której chcesz utworzyć alarm. W moim przypadku disk_used_percent. Przy konfiguracji zwróć uwagę czy jest zaznaczone Static oraz Greater. Ja używam wartości 80, ponieważ chcę otrzymywać alarm, gdy miejsce na dysku będzie zajęte w 80%.

cloudWatch alarm configuration
CloudWatch alarm configuration

W następnym kroku wybierz topic, jeśli już kiedyś tworzyłeś albo utwórz nowy, jeśli jeszcze tego nie robiłeś i podaj adres, albo adresy email, na które ma być wysyłane powiadomienie.

AWS CloudWatch - configure action
AWS CloudWatch – configure action

Poniżej możesz także dodać akcję, która ma być wykonana. W następnym kroku podajesz nazwę dla alarmu i możesz dodać dodatkowy opis. Sprawdź w podsumowaniu czy wszystko się zgadza i utwórz alarm.

AWS notification - subscription
AWS notification – subscription

Pamiętaj, że po utworzeniu alarmu należy jeszcze potwierdzić subskrypcję. Tylko wtedy otrzymasz powiadomienia.

Podsumowanie

Jak widzisz, dodawanie alarmów jest proste i warto być informowanym o problemach.

Możesz także dodać następny alarm. Ja zalecam utworzenie kilku poziomów powiadomień. Pierwszy alarm przy zajętości dysku powyżej 80% mogą otrzymać np. wszyscy członkowie zespołu. Drugi powiedzmy, że przy zajętości dysku powyżej 90% dodatkowo team leader.

Dzięki temu team leader będzie powiadamiany tylko w poważnych przypadkach. Nie musisz podawać po kolei wszystkich adresów email, dobrym pomysłem jest utworzenie aliasu.

Ok, to wszystko w tym artykule. Dzięki, że przeczytałeś go do końca:) Mam nadzieję, że Ci się podobał. Postaram się, by nowe treści były jeszcze lepsze i by nie było denerwujących reklam na blogu. W zamian proszę, byś polecił ten blog i moje treści w sieci. Pomaga mi to utrzymać ten blog dzielić się wiedzą z większą liczbą ludzi. Jeśli chcesz zobaczyć więcej poradników, zachęcam do odwiedzenia mojego kanału na YouTube Wojciech Lepczyński – YouTube.

Powiadomienia z AWS na MS Teams – blog
Jak monitorować użycie pamięci RAM na AWS EC2 – blog
Tagi: