Przegląd narzędzi do monitorowania serwisów

21.08.2018 / / Developers

Każdy właściciel lub opiekun systemu informatycznego powinien dbać o jego niezawodność za pomocą szeregu procesów i podejść gwarantujących wysoką jakość rozwiązań. Żaden system nie jest w 100% odporny na upływ czasu i całkowicie bezobsługowy. Stosując opisane przeze mnie narzędzia, będziemy ostrzegani przed anomaliami w naszym systemie, co pozwoli nam zareagować jeszcze zanim dojdzie do awarii. Co więcej, w przypadku usterki zostaniemy natychmiast powiadomieni i będziemy w stanie bezzwłocznie zareagować w celu skrócenia czasu niedostępności systemu.

Co monitorować?

To, co powinniśmy monitorować, w dużej mierze zależy od pełnionej przez nas funkcji.

W przypadku gdy odpowiadamy za infrastrukturę, na której działa system, powinniśmy stosować narzędzia monitorujące zasoby, takie jak wykorzystana przestrzeń dyskowa, zajętość łącza czy obciążenie procesorów.

Jako wykonawcy lub opiekunowie systemu powinniśmy monitorować ścieżki krytyczne w oprogramowaniu, logi wyjątków generowane przez system oraz czas odpowiedzi na żądania (szybkość działania aplikacji).

Jako właściciele systemu chcemy mieć informację o tym, czy system jest dostępny z perspektywy użytkownika systemu.

Narzędzia do monitorowania zasobów na infrastrukturze

Przytoczę kilka najbardziej popularnych narzędzi do monitorowania zasobów, a następnie omówię głębiej te, których sam używałem.

  • Nagios
  • Cacti
  • Rrdtool
  • Zenoss
  • Logwatch/Logcheck
  • Icinga
  • Munin

W X-Coding do monitorowania zasobów używamy narzędzia Munin. Charakteryzuje się ono prostą instalacją i łatwością podłączenia kolejnych maszyn do monitoringu. Szeroki zestaw dostępnych wtyczek sprawia, że system dopasuje się do potrzeb charakterystycznych dla różnych użytkowników. Niestety nie ma wbudowanego mechanizmu powiadamiania o anomaliach (bazuje na zewnętrznych usługach), dlatego konfiguracja może za pierwszym razem zająć nieco więcej czasu.

Munin prezentuje wykresy z informacjami o zasobach w ujęciu dziennym, tygodniowym, miesięcznym i rocznym. Przykładowe wykresy opóźnienia odczytu oraz zajętości dysku:

wykres opóźnienia odczytu

wykres zajętości dysku

Narzędzia do monitorowania dostępności systemu informatycznego W większości wdrażam aplikacje internetowe, dlatego używam narzędzia, które potrafi monitorować systemu po protokole HTTP/HTTPS. W mojej pracy najlepiej sprawdził się UptimeRobot. Narzędzie za darmo umożliwia monitorowanie do pięćdziesięciu systemów z czasem informowania pięć minut. Jeżeli potrzebujemy monitorować większą ilość usług lub chcemy szybciej otrzymywać informacje o awariach, możemy wykupić (niedrogi) abonament.

UptimeRobot oferuje kilka rodzajów powiadomień o anomaliach:

  • email
  • sms
  • Twitter
  • webservice — wywoła określony adres HTTP z parametrami
  • email to sms (w Polsce tylko Plus oferuje taką usługę)

Posiada także szereg integracji:

  • Boxcar (powiadomienia push dla iOS)
  • Pushbullet (powiadomienia push dla Androida, iOS, a także przeglądarek)
  • Pushover (j.w.)
  • Hipchat
  • Slack

Sam korzystam ze spiętego powiadomienia UptimeRobot ze Slackiem. Dodatkowo dla serwisów produkcyjnych używam powiadomienia email oraz sms. Z doświadczenia wiem, że UptimeRobot dobrze sprawdza się w monitorowaniu dostępności aplikacji internetowych — powiadomienia nieraz pozwoliły mi ograniczyć czas niedostępności usługi. Dzięki UptimeRobot to właśnie my informujemy klientów o naprawieniu problemu, a nie klienci nas o niedostępności systemu.

statystyki UptimeRobot

W X-Coding prócz aplikacji internetowych często oferujemy naszym klientom rozwój aplikacji mobilnych dla systemu Android. UptimeRobot może monitorować dla nas wywołania API udostępnianego dla aplikacji mobilnej. Natomiast monitorowanie samej aplikacji wykonujemy przy pomocy zyskującego na popularności (po przejęciu przez Google) narzędzia Firebase. Funkcja Crashlitics w Firebase dostarcza szerokiej informacji o błędach, które wystąpiły w czasie działania aplikacji u klientów, dzięki czemu możemy skutecznie zareagować i opublikować poprawkę na dany błąd.

Podsumowanie

Nieważne czy jesteś właścicielem, wykonawcą czy też odpowiadasz za infrastrukturę sprzętową aplikacji internetowej — powinieneś wybrać dla siebie odpowiedni zestaw z przedstawionych narzędzi i wdrożyć je do swojego ekosystemu. Umożliwią Ci one szybką reakcję w przypadku awarii lub zapobiegnięcie jej dzięki bieżącej informacji o odkrytych przez monitoring anomaliach.