Jak działa system monitoringu Zabbix?

Michał
Michał
DevOps Engineer

Każda firma, która chce odnieść sukces na rynku, potrzebuje obecnie silnej infrastruktury, dobrze ugruntowanych połączeń sieciowych, wydajnych serwerów do obsługi wielu użytkowników lub transakcji itp. Czy jednak wyobrażasz sobie sytuację gdy nagle jeden serwer, usługa lub aplikacja ulega awarii z powodu przeciążenia? Jaki byłby wpływ takiego przestoju na Twoją firmę, klienta, obsługę itp.?

Taka awaria spowoduje wzrost kosztów w Twojej firmie i wpłynie na wydajność oraz jakość usług, co może zaszkodzić reputacji marki na rynku. Dlatego też kontrola stanu infrastruktury i serwerów jest przejawem odpowiedzialności każdego administratora. 

Wiedza o stanie wszystkich urządzeń, którymi posługujemy się podczas codziennej pracy, jest dla nas niezwykle ważna. Chodzi tu przede wszystkim o funkcjonowanie serwerów, aplikacji, konkretnych usług, a także prawidłowość działania tworzonych aplikacji i środowisk produkcyjnych.

Stąd, gdy pojawia się pytanie, w jaki sposób możesz utrzymać swój serwer bez żadnych problemów i zabezpieczyć działanie swojej firmy — odpowiedzią jest monitorowanie serwerów. 

Co oznacza monitorowanie serwerów w praktyce?

  • Monitorowanie serwerów oznacza ciągłe skanowanie dostępnych serwerów w sieci i wykrywanie wszelkich awarii z nimi związanych
  • Monitorowanie jest działaniem zapobiegawczym, które wykrywa każdą awarię, zanim spowoduje ona poważne problemy w systemie sieciowym
  • Obejmuje szeroki zakres działań, między innymi monitorowanie wydajności aplikacji, usług internetowych, urządzeń sieciowych, infrastruktury IT itp.

Na rynku jest obecnie wiele narzędzi do monitorowania, ale Zabbix jest nieoficjalnym liderem w tej dziedzinie. W tym artykule omówimy sposób działania tego narzędzia, oraz przykłady jak wykorzystujemy go w codziennej pracy.

Zabbix – Czym jest i do czego służy?

Zabbix to pełnowymiarowe narzędzie do monitorowania sieci i systemu, które łączy kilka funkcji w jednej konsoli internetowej. Można go skonfigurować do monitorowania i zbierania danych z szerokiej gamy serwerów i urządzeń sieciowych, a także zapewnia monitorowanie usług i wydajności każdego obiektu.

Najczęściej wykorzystujemy Zabbix kiedy chcemy monitorować zasoby naszych serwerów, a nie mamy czasu na przeglądanie logów, bądź jeśli obsługujemy większą ilość serwerów, a chcemy mieć pewność, że wszystko działa poprawnie. W takiej sytuacji Zabbix w razie problemu poinformuje nas o tym, dając możliwość skonfigurowania wielu dróg komunikacji. Zabbix informuje na przykład o tym, że dany „end-point” nie działa bądź kończy się miejsce, na dysku, lub CPU jest za bardzo obciążone. Wszystkie informacje, które mogą wpłynąć na jakość działania aplikacji są automatycznie wysyłane przez Zabbix.

System monitoringu w Zabbix, czyli jak wygląda architektura?

Zabbix składa się z kilku głównych komponentów oprogramowania. Ich obowiązki przedstawiamy poniżej.

  • Serwer Zabbix

Serwer Zabbix jest centralnym komponentem, do którego agenci raportują informacje i statystyki dotyczące dostępności i integralności. Serwer jest centralnym repozytorium, w którym przechowywane są wszystkie dane konfiguracyjne, statystyczne i operacyjne.

  • Przechowywanie bazy danych

Wszystkie informacje konfiguracyjne oraz dane zebrane przez Zabbix są przechowywane w bazie danych.

  • Interfejs sieciowy

Aby zapewnić łatwy dostęp do Zabbix z dowolnego miejsca lub dowolnej platformy, zapewniony jest interfejs sieciowy. Interfejs jest częścią serwera Zabbix i z reguły działa na tej samej fizycznej maszynie, na której działa serwer.

  • Zabbix Proxy

Proxy działa jak pełnomocnik i może zbierać dane o wydajności i dostępności w imieniu serwera Zabbix. Jest opcjonalną częścią wdrożenia Zabbix; jednakże bardzo korzystne może być rozłożenie obciążenia pojedynczego serwera Zabbix.

  • Agent Zabbix

Agent Zabbix to  specjalny program umożliwiający komunikację z serwerem głównym. Aktywnie monitoruje lokalne zasoby i aplikacje oraz raportuje zebrane dane do serwera Zabbix. 

Zabbix potrafi w czasie rzeczywistym monitorować tysiące danych z serwerów, maszyn wirtualnych, aplikacji, urządzeń sieciowych. Pozwala to wykryć problemy, zanim uwagę na problem zwrócą użytkownicy.

 Jak wygląda przepływ danych?

  1.  Agent Zabbix gromadzi te dane, które nas interesują, czyli na przykład zużycie aktualne procesora, RAM-u, przepływ danych przez sieć, obciążenie bazy danych, sprawność działania poszczególnych usług (np. http, ssh, ftp). 
  2. Następnie wysyła zebrane informacje do głównego serwera – żeby potem sformułować je w postaci klarownych i łatwych w odczycie tabel czy wykresów. 
  3. Dane trzymane są w relacyjnych bazach danych (MySQL, Oracle bądź PostreSQL) a dostęp do danych jest możliwy poprzez intuicyjny interfejs webowy. 

Agent Zabbix obsługuje zarówno odpytywanie pasywne (polling), jak i aktywne (trapping). Zabbix może przeprowadzać sprawdzenia na podstawie interwału, jednak możliwe jest również zaplanowanie określonych godzin odpytywania pozycji.

Kontrole pasywne (odpytywanie):

  • Serwer Zabbix (lub proxy) żąda wartości od agenta Zabbix
  • Agent przetwarza żądanie i zwraca wartość do serwera Zabbix (lub proxy)

Kontrole aktywne (wyłapywanie):

  • Agent Zabbix żąda od serwera Zabbix (lub proxy) listy aktywnych sprawdzeń
  • Agent okresowo wysyła wyniki

Od wersji 3.0 Zabbix wspiera szyfrowanie komunikacji pomiędzy serwerem a agentami, dzięki czemu mamy gwarancję, że wszystkie dane podczas “podróży” są bezpieczne.

Podgląd w centrum dowodzenia

Kojarzycie panów ochroniarzy w niektórych sklepach, którzy znudzeni siedzą przed monitorem z obrazem z kamer przemysłowych? Podobne rozwiązanie możecie wdrożyć w swojej firmie aby monitorować swój hardware i software. Bardzo łatwo można wygenerować odpowiednie wykresy czy raporty. Dzięki temu mamy ciągłą kontrolę nad stanem pracy wszystkich naszych serwerów i usług i możemy na bieżąco widzieć “co się dzieje”.

zrzut ekranu zabbix
Przykładowy zrzut ekrany z systemu Zabbix 3.0

Zabbix może obsługiwać monitorowanie dzienników tekstowych i dziennika zdarzeń Windows. Posiada również natywną obsługę Windows Management Instrumentation (WMI), zwiększając możliwość łatwego uzyskiwania i monitorowania informacji o systemie w czasie rzeczywistym oraz metryk wydajności z serwerów i stacji roboczych Windows. To tylko część usług, które może wykonywać dzięki temu, że jest elastycznym narzędziem dopasowującym się do aplikacji. 

Do innych funkcjonalności Zabbix’a należy m.in. monitorowanie np.

  • obciążenia procesorów, kart sieciowych i pamięci, ilości miejsca na dyskach twardych,
  • protokołów sieciowych
  • ważności certyfikatów SSL na stronach www,
  • temperatury podzespołów,
  • poprawnego wykonania zapytania SQL.

System alarmowania

Zabbix poinformuje nas o awarii na wiele sposobów. Jednym z popularniejszych jest wysyłanie informacji e-mailem, można też podłączyć wysyłkę SMS. To bardzo wygodne i dobrze działające rozwiązanie pozwala szybko dowiedzieć się o problemie i na niego zareagować. W naszych zespołach deweloperskich notyfikacje są ustawione, tak, że zarówno mail jak i kanał w aplikacji Slack nas informuje równocześnie o nietypowych sytuacjach związanych z serwerem.  

Dodatkowo w Studio Software zaprogramowaliśmy całość tak, żeby w razie krytycznych problemów włączał się alarm. I to dosłownie, bowiem do API (które oferuje Zabbix) podłączyliśmy mikrokontroler Arduino. Całość regularnie odpytuje Zabbix’a czy nasza sieć działa prawidłowo i jeśli z którymkolwiek serwerem coś zaczyna się dziać niedobrego, Arduino włącza syrenę, a my natychmiast wiemy o zaistniałym problemie. Na szczęście dzieje się to bardzo rzadko, a to dzięki odpowiedniej konfiguracji, o której więcej poniżej 🙂

Konfiguracja Zabbix’a – czyli ustalenie priorytetów

Zabbix da się skonfigurować wedle naszych potrzeb i preferencji. Chociaż każdy, nawet najmniejszy problem jest w pewnym sensie istotny, to oczywiście podlegają one pewnej klasyfikacji. Dzięki ustawionym w Zabbix’ie triggerom narzędzie powiadomi nas o problemie w adekwatny do jego wagi sposób

Przykład? Podczas konfiguracji ustawiamy, że mniej niż 20% wolnego miejsca na dysku to średni problem (severity average). Jeśli z kolei miejsca na dysku jest mniej niż 10%, wówczas jest to poważny problem (severity high). Na podstawie powyższych triggerów system odpowiednio reaguje. Jeśli uzgodniliśmy, że średni problem nie wymaga natychmiastowej reakcji, to wystarczy nam tylko ostrzegawczy mail, który notabene może dotrzeć do nas o wygodnej dla nas porze, żebyśmy niepotrzebnie nie zaprzątali sobie nim głowy. O katastroficznych wieściach lepiej wiedzieć niezwłocznie, dlatego Zabbix wybierze SMS jako formę kontaktu, lub – jak wspomnieliśmy wyżej – włączy syrenę alarmową.

W Zabbix określa się poziom priorytetów dla alarmu lub grupy alarmów i ustala w odpowiednich notyfikacjach, Na przykład jeśli chcemy otrzymywać notyfikacje jedynie o sytuacjach krytycznych, to w taki sposób ustawiamy priorytet.

Najczęściej wygląda to tak, że inżynierowie odpowiedzialni za techniczne aspekty projektu z reguły otrzymują powiadomienia niższej kategorii, tak by mogli szybko to naprawić. Natomiast duże awarie rozwiązuje dział DevOps.

Podsumowanie 

Można z przekonaniem stwierdzić, że Zabbix to jedna z lepszych aplikacji do monitorowania bezpieczeństwa. Jest to narzędzie typu open-source dla różnych komponentów IT, w tym sieci, serwerów, maszyn wirtualnych i usług w chmurze. Jest niezawodny w dbaniu o bezpieczeństwo infrastruktury sieciowej. Monitorowanie za pomocą rozwiązania Zabbix’a chroni oszczędności i zgodność operacyjną. Dzięki szybszemu debugowaniu możesz zapobiec utracie przychodów z powodu poważnego błędu lub problemu z wydajnością wpływającego na Twoje usługi komercyjne.

Jeśli chciałbyś uzyskać wsparcie w zakresie monitorowania, którego potrzebujesz dla swoich serwerów, sieci, infrastruktury chmury, dzienników, baz danych, czy wydajności aplikacji — skontaktuj się z nami! Nasi inżynierowie chętnie udzielą Ci potrzebnych informacji i odpowiedzą na Twoje pytania.

Podobne artykuły
31 maja 2021
Monitoring aplikacji — dobre praktyki i przydatne narzędzia
Praca nad aplikacją nie kończy się po jej uruchomieniu. Ważny jest też monitoring aplikacji, pozwalający…
Czytaj więcej
17 sierpnia 2017
Firma programistyczna bez JIRY – czy to możliwe?
Praca w zespole nie jest łatwa. Szczególnie, gdy w jego skład wchodzi więcej niż kilka…
Czytaj więcej
25 czerwca 2020
Code review jako skuteczny sposób na zapewnienie długoterminowej jakości projektu IT
Code review, jako integralna część procesu tworzenia oprogramowania, pomaga skupić się na najważniejszych kwestiach i…
Czytaj więcej