Monitoring sieci i serwerów to proces kontrolowania infrastruktury oraz jej parametrów w celu uzyskania pełnego zrozumienia, jak zarządzać infrastrukturą IT. Monitorowanie urządzeń sieciowych pozwala na identyfikację problemów na wczesnym etapie, zapobieganie awariom oraz utrzymanie wysokiej dostępności i wydajności systemów. Dzięki temu administratorzy mają lepszy wgląd w funkcjonowanie całej infrastruktury i mogą na bieżąco reagować na ewentualne problemy.
Monitoring sieci pełni kluczową rolę w zarządzaniu infrastrukturą IT. Odpowiednio skonfigurowany, pomaga nie tylko w szybkim wykrywaniu i usuwaniu problemów, ale także w zapobieganiu im. Działania prewencyjne są możliwe dzięki stałemu dostępowi do danych na temat wydajności sieci, serwerów, aplikacji czy urządzeń sieciowych.
Do monitorowania sieci wykorzystywane są różne narzędzia i protokoły. Najpopularniejszym z nich jest SNMP (Simple Network Management Protocol), który pozwala administratorom na zbieranie i analizowanie danych z urządzeń sieciowych, takich jak routery, switche, serwery, a także urządzenia końcowe. Za pomocą SNMP można gromadzić informacje o stanie urządzeń, ich obciążeniu, a także wykrywać problemy.
Dane zbierane za pomocą SNMP mogą być uzupełniane przez dane z innych źródeł, takich jak logi systemowe (syslog) czy Netflow, które pozwalają na analizę ruchu sieciowego. Samo zbieranie danych nie jest jednak wystarczające – kluczowe jest ich właściwe przetwarzanie, analizowanie i wizualizacja.
Aby to osiągnąć, administratorzy korzystają z różnorodnych narzędzi wspomagających monitorowanie infrastruktury. Na rynku dostępnych jest wiele komercyjnych i open-source’owych rozwiązań, które wspierają pracę administratorów IT. Przykładami takich narzędzi są LibreNMS, Nagios, Solarwinds oraz Zabbix.
Zabbix to rozbudowane oprogramowanie open-source służące do monitorowania infrastruktury IT, które umożliwia monitorowanie stanu i wydajności różnych komponentów, takich jak sieci, serwery, maszyny wirtualne oraz usługi w chmurze. Zabbix obsługuje szeroki wachlarz urządzeń, od sprzętu sieciowego po serwery i maszyny wirtualne, a także może monitorować urządzenia takie jak UPS-y, czujniki IoT (np. termometry, liczniki wejść, urządzenia mierzące wilgotność) oraz inne urządzenia podłączone do sieci.
Zabbix umożliwia nie tylko zbieranie i analizowanie danych, ale także ich wizualizację, raportowanie oraz alarmowanie w przypadku problemów. Ogromną zaletą tego narzędzia jest jego otwartość – Zabbix jest projektem open-source, co oznacza, że każdy użytkownik ma dostęp do kodu źródłowego oraz szerokiej społeczności, która aktywnie wspiera rozwój oprogramowania. Duża baza użytkowników oraz dobrze przygotowana dokumentacja sprawiają, że Zabbix jest prosty w użyciu i elastyczny w konfiguracji.
Zabbix składa się z trzech głównych modułów:
Rysunek 1. Architektura Zabbix
Dodatkowym elementem architektury może być Zabbix-Proxy, który zbiera dane o wydajności sieci i dostępności w imieniu serwera Zabbix. Dzięki takiej architekturze Zabbix staje się wysoko skalowalną aplikacją. W przypadku dużych instalacji, gdy serwer Zabbix lub proxy wymaga większych zasobów, można dodać kolejny Zabbix Proxy, który zbiera dane z innej części sieci.
Agent Zabbix może być zainstalowany na różnych systemach operacyjnych, w tym na Linux, Windows i macOS.
Rysunek 2. Dostępne instalatory Zabbix w zależności od platformy
Oprogramowanie może działać zarówno na fizycznych maszynach, jak i w środowiskach wirtualnych, a także może być wdrożone w chmurze lub w kontenerach (np. Docker). W zależności od wybranego środowiska i liczby monitorowanych urządzeń, będą różnić się wymagania dotyczące zasobów.
Do instalacji Zabbix potrzebne będą odpowiednie zasoby fizyczne, takie jak procesor, pamięć RAM oraz miejsce na dysku. Zasoby te zależą od liczby monitorowanych urządzeń oraz ilości gromadzonych danych. Na przykład, w przypadku większych instalacji, zaleca się zastosowanie wydajniejszych serwerów oraz dużej przestrzeni dyskowej na potrzeby przechowywania historii monitorowania.
Rysunek 3. Zalecane parametry fizyczne przez producenta
Dysk, na którym przechowywane są dane, musi mieć odpowiednią wielkość, zależnie od tego, jak długo chcemy przechowywać dane historyczne oraz jak duże będą te dane. Potrzebną przestrzeń dyskową można obliczyć za pomocą wzoru, który uwzględnia plik konfiguracyjny, historię, trendy oraz zdarzenia. Wielkość poszczególnych parametrów możemy poznać za pomocą:
Rysunek 4. Wzór na potrzebną przestrzeń dyskową
Trendy: Wbudowany mechanizm Zabbix, który pozwala na redukcję danych historycznych. Przechowuje on wartości minimalne, maksymalne, średnie oraz całkowitą liczbę wartości na każdą godzinę dla danych numerycznych. Trendy pozwalają na zmniejszenie ilości przechowywanych danych bez utraty informacji o długoterminowych zmianach w wydajności.
Historia: Przechowuje każdą zebraną wartość, co oznacza, że jest bardziej zasobożerna niż trendy. Historia jest przydatna, gdy potrzebne są szczegółowe informacje o każdym zdarzeniu.
Zdarzenia: Generowane przez wyzwalacze (triggery) w systemie Zabbix. Każde zdarzenie jest zapisywane w bazie danych, co pozwala na śledzenie, kiedy i dlaczego dany problem się pojawił. Ilość miejsca przeznaczonego na zdarzenia zależy od liczby alarmów wygenerowanych w systemie.
Wybór bazy danych, na której będą przechowywane dane zależy od upodobań i doświadczenia administratora.
Skoro mamy omówione wymagania fizyczne pozostaje jeszcze wspomnieć o komunikacji sieciowej. Dla wartości domyślnych przedstawiają się one następująco:
Rysunek 5. Komunikacja sieciowa dla aplikacji Zabbix
W Zabbix „host” odnosi się do dowolnego fizycznego lub wirtualnego urządzenia, aplikacji, usługi lub innego logicznie powiązanego zbioru monitorowanych parametrów. Aby dodać nowego hosta, należy przejść do zakładki Konfiguracja => Hosts => Create host.
Rysunek 6. Konfiguracja nowego hosta
Wartość „Host name” musi być unikalna dla każdego obiektu utworzonego w Zabbix. Przy tworzeniu hosta mamy możliwość przypisania go do odpowiedniej grupy hostów, co ułatwi przyszłą konfigurację. Dlatego przed przystąpieniem do konfiguracji powinniśmy przeanalizować nasze potrzeby oraz przemyśleć, jakie grupy zostaną utworzone. Jeżeli działamy w architekturze rozproszonej, możemy także wybrać, który serwer proxy będzie odpowiedzialny za zbieranie danych z hosta.
W zależności od tego, czy będziemy monitorować nasz obiekt za pomocą agenta czy SNMP, wybieramy odpowiednią opcję i podajemy adres IP naszego hosta. Po zakończeniu konfiguracji klikamy Add.
Grupy hostów pozwalają na grupowanie hostów tego samego typu. W przyszłości do danej grupy można przypisać szablon, zamiast robić to osobno dla każdego hosta. Jeżeli zdecydujemy się na podejście bez host grup, możemy także przypisać do hosta odpowiedni template tag.
Jeżeli mamy plik z zebranymi wcześniej hostami, istnieje możliwość ich importu do Zabbix za pomocą pliku.
Item to indywidualny wskaźnik, który służy do zbierania danych. Po skonfigurowaniu hosta należy dodać item, aby uzyskać rzeczywiste dane. Jednym ze sposobów szybkiego dodania wielu itemów jest przypisanie do hosta jednego z predefiniowanych szablonów. Jednak w celu optymalizacji wydajności systemu może być konieczne precyzyjne dostosowanie szablonów, aby mieć tyle elementów i tak częste monitorowanie, jak to konieczne.
Itemy mogą być tworzone z poziomu konfiguracji hosta lub z poziomu szablonu. Aby stworzyć nowy item, należy przejść do Configration => Hosts => host_name => Item => Create Item.
Rysunek 7. Konfiguracja nowego itemu
Każdy item musi mieć unikalną nazwę. Jeden item może być użyty dla wielu hostów. W zależności od potrzeb, można dostosować typ itemu, takie jak dane zbierane przez agenta, SNMP czy inne źródła danych. Możemy indywidualnie dostosować długość przechowywania danych lub pozostawić domyślne, globalne ustawienia. Aby zakończyć konfigurację, klikamy Add.
Rysunek 8. Przykładowa lista typów itemu
Trigger (wyzwalacz) to wyrażenie logiczne, które „ocenia” dane zebrane przez itemy i reprezentuje bieżący stan systemu. Triggery pozwalają na zdefiniowanie progu, jaki stan danych jest „akceptowalny”. Jeżeli dane przekroczą akceptowalny próg, trigger zostanie „wyzwolony” i zmieni swój status na PROBLEM.
Aby utworzyć nowy trigger, postępujemy podobnie jak w przypadku itemu: Configration => Hosts => host_name => Trigger => Create Trigger.
Rysunek 9. Konfiguracja triggeru
Musimy utworzyć unikalną nazwę dla wyzwalacza i wybrać odpowiednią wagę (severity), co określa znaczenie problemu w systemie. Najtrudniejszą częścią jest stworzenie poprawnego wyrażenia, które będzie oceniać stan zebranych danych. Możemy skorzystać z kreatora wyrażeń, który uprości zadanie, lub stworzyć je ręcznie. Na przykład, możemy skonfigurować trigger, który reaguje na brak odpowiedzi z trzech kolejnych pingów do urządzenia. Możemy także ustawić recovery expression, które zdefiniuje warunki zakończenia wyzwalacza. Aby zakończyć, klikamy Add lub Update, jeśli edytujemy istniejący już trigger.
W Zabbixie event (zdarzenie) to zapis dotyczący zmian stanu monitorowanego elementu lub wyzwalacza (triggera). Zdarzenia są kluczowym elementem systemu monitorowania, ponieważ rejestrują, kiedy nastąpiły określone zmiany, co pozwala na dokładne śledzenie problemów i reakcji systemu na te problemy.
Przykładem zdarzenia może być trigger event – za każdym razem, gdy wyzwalacz zmienia swój status (OK → PROBLEM → OK), generowany jest event. Wszystkie wygenerowane zdarzenia można przeglądać w zakładce Monitoring => Problems.
Rysunek 10. Przykład wygenerowanego eventu
Przy dużej ilości danych napływających do Zabbix, użytkownikom jest znacznie łatwiej analizować dane, jeżeli mogą spojrzeć na wizualną reprezentację sytuacji, a nie tylko na liczby. W tym przypadku pojawiają się wykresy. Wykresy pozwalają na szybkie zrozumienie przepływu danych, skorelowanie problemów, odkrycie, kiedy coś się zaczęło, lub określenie, kiedy coś może przerodzić się w problem.
Rysunek 11. Tworzenie nowego wykresu
Tworzenie nowego wykresu odbywa się z poziomu Configration => Hosts => host_name => Graph => Create Graph.
Rysunek 12. Przykład stworzone wykresu
Poza unikalną nazwą wykresu, możemy skonfigurować jego rozmiar i wybrać item, na podstawie którego zostanie stworzony wykres. Na wykresie możemy również dodać legendę, a jeżeli istnieje skonfigurowany wyzwalacz, który reaguje na przekroczenie pewnych wartości, zostanie to odnotowane na wykresie jako zdarzenie.
Rysunek 13. Przykład stworzone wykresu dla zużycia RAM maszyny wirtualnej
Mapy, screeny oraz dashboardy pozwalają na wizualizację kilku lub kilkunastu wykresów oraz zdarzeń w jednym miejscu. Dashboard to centralne miejsce, w którym możemy przedstawić stan całej sieci.
Rysunek 14. Dashboard pozwalający ocenić stan sieci
Mapy pozwalają na grupowanie hostów graficznie. Przykładem mapy może być np. mapa fizycznych połączeń między urządzeniami sieciowymi, czyli topologia.
Rysunek 15. Topologia graficzna połączeń urządzeń sieciowych
W zależności od statusu urządzenia i wyzwolonych triggerów, kolor urządzeń na mapie ulega zmianie. Możemy również tworzyć mapy zagnieżdżone, które pozwalają na przechodzenie między różnymi mapami po kliknięciu w dane urządzenie lub grupę urządzeń.
Rysunek 16. Mapa wyższego poziomu
Na rysunku 16. Mapa wyższego poziomu, pod którą kryją się kolejne mapy niższych poziomów. Problem wywołany w jeden z lokalizacji zostanie wyświelony na globalnej mapie.
Screeny to nic innego jak pokaz slajdów, składający się z wybranych map, dzięki czemu na ekranie monitoringu możemy stworzyć sekwencję kolejnych map lub dashboardów.
Rysunek 17. Tworzenie screenu
Szablony są przydatnym narzędziem do uproszczenia pracy administratora. W szablonach można zdefiniować wartości itemów, wykresów oraz triggerów, które zostaną automatycznie przypisane do urządzeń lub maszyn wirtualnych, które zostaną do nich dodane. Dzięki temu nie musimy konfigurować zmiennych osobno dla każdego hosta, tylko dla grupy hostów. Warto przemyśleć podział urządzeń przed rozpoczęciem konfiguracji Zabbixa, aby efektywnie wykorzystać szablony. W szablonach można tworzyć również zagnieżdżone szablony.
Rysunek 18. Przykład szablonów z zdefiniowanymi wartościami
Zabbix wspiera tworzenie makr. Makra to zmienne, które można definiować w dowolny sposób. Makra przypisują określoną wartość w zależności od kontekstu. Użycie makr pozwala oszczędzić czas oraz upraszcza konfigurację. Makra mogą być wykorzystywane na przykład w itemach, np. „item.key[server_{HOST.HOST}_local]”. Efektywne wykorzystanie makr czyni konfigurację bardziej przejrzystą.
Wszyscy użytkownicy Zabbix uzyskują dostęp do aplikacji za pośrednictwem interfejsu WWW. Każdy użytkownik ma przypisaną unikalną nazwę logowania oraz hasło. Konta użytkowników mogą być zdefiniowane lokalnie lub na przykład za pomocą LDAP. Komunikacja między użytkownikiem a serwerem WWW Zabbix jest chroniona za pomocą protokołu SSL.
Rysunek 19. Lista stworzonych użytkowników
Agent Zabbix może zostać wdrożony na monitorowanym urządzeniu, aby aktywnie monitorować zasoby lokalne oraz aplikacje, takie jak dyski twarde, pamięć, statystyki procesora itp. Agent zbiera dane operacyjne lokalnie i wysyła je do serwera Zabbix w celu dalszego przetwarzania. W przypadku awarii (np. przepełnienie dysku twardego lub błędnie działające procesy), serwer Zabbix może natychmiast powiadomić administratorów o problemie. Z poziomu agenta możemy także skonfigurować aktywne zadania monitoringu, np. wykonanie komendy fping, aby ocenić, czy maszyna może komunikować się z Internetem.
Rysunek 20. Lista dostępnych agentów w zależności od systemu
Rysunek 21. Sprawdzanie za pomocą agenta Zabbix czy system maszyny wirtualnej nie znajduje się w stanie ReadOnly
Rysunek 22. Przykład konfiguracji agenta Zabbix
Zabbix Proxy to moduł, który może zbierać dane o wydajności i dostępności w imieniu serwera Zabbix. Proxy może przejąć część obciążenia serwera Zabbix, odciążając go, i jest nieocenione w przypadku rozproszonych instalacji. Dzięki proxy możemy centralizować monitoring z wielu lokalizacji, a wszystkie dane są przesyłane do jednego serwera Zabbix.
Rysunek 23. Przykład wykorzystania serwera proxy
Zamiast ręcznego dodawania hostów lub agentów, Zabbix oferuje także funkcję auto-discovery hostów. Może to być zrealizowane za pomocą SNMP, skanując określoną podsieć, lub za pomocą auto-rejestracji agentów. Auto-discovery pozwala automatyzować proces dodawania nowych hostów do systemu.
Rysunek 24. Ustawienie reguł auto odkrywania
Zabbix udostępnia API, które umożliwia automatyzację konfiguracji systemu oraz interakcję z nim. API Zabbix działa na podstawie zapytań HTTP oraz danych kodowanych w formacie JSON. API można używać do automatycznego tworzenia hostów, itemów, triggerów oraz generowania raportów.
W zakładce Monitoring => Latest Data możemy sprawdzić ostatnie dane otrzymane z agentów lub SNMP. Zakładka ta jest przydatna do weryfikacji poprawności otrzymywanych danych, na przykład dotyczących zużycia zasobów maszyn wirtualnych. W tym miejscu można również sprawdzić, czy dane docierają na czas i czy nie ma problemów z komunikacją.
Rysunek 25. Dane otrzymane na temat I/O dysków na maszynch wirtualnych
Zakładka Reports umożliwia generowanie raportów definiowanych przez użytkownika. Dzięki raportom administratorzy mogą ocenić stan sieci, dowiedzieć się, ile triggerów zostało wyzwolonych, jakie SLA jest spełnione, a także jaki był czas niedostępności poszczególnych zasobów. Przykładowym raportem jest raport SLA, który informuje o poziomie dostępności usług.
Rysunek 26. Przykładowy raport SLA
Zabbix wspiera szeroką gamę integracji z systemami trzecimi. Jeżeli jakaś integracja nie jest oficjalnie wspierana, można skorzystać z pomocy społeczności, która oferuje liczne pluginy i skrypty. Integracje pozwalają na wysyłanie alertów do różnych narzędzi, takich jak e-mail, SMS czy komunikatory. Można zintegrować Zabbix z LDAP w celu centralnego zarządzania użytkownikami, a także z serwerem SMTP do wysyłania mailowych alertów. Możliwe jest również wysyłanie powiadomień SMS przez operatorów telekomunikacyjnych.
Zabbix to potężne i wszechstronne narzędzie do monitorowania infrastruktury IT, które umożliwia pełną kontrolę nad różnorodnymi komponentami, od sieci po aplikacje i serwery. Dzięki swojej modularnej architekturze, elastycznym opcjom konfiguracji oraz możliwości integracji z innymi systemami, Zabbix spełnia potrzeby zarówno małych, jak i dużych organizacji. Jego otwarta architektura i aktywna społeczność sprawiają, że jest to jedno z najlepszych narzędzi open-source w swojej klasie. Zabbix pozwala na automatyzację wielu procesów, zwiększenie bezpieczeństwa i zapewnienie stabilności pracy całej infrastruktury IT, co czyni go nieocenionym narzędziem w codziennym zarządzaniu środowiskiem IT
W oparciu o nasze wieloletnie doświadczenie, wspieramy firmy w efektywnym zarządzaniu infrastrukturą IT. Nasza wiedza, poparta licznymi projektami oraz aktywną współpracą z klientami, pozwala nam dobierać rozwiązania precyzyjnie dopasowane do potrzeb każdej organizacji. Znamy wyzwania związane z monitorowaniem sieci i serwerów, dlatego nasze działania zawsze uwzględniają zarówno optymalizację wydajności, jak i bezpieczeństwo, bez względu na skalę przedsiębiorstwa.
Jeśli chcesz dowiedzieć się więcej lub masz wątpliwości, które rozwiązanie będzie dla ciebie najlepsze – porozmawiaj z naszymi inżynierami!