Blog JSystems - uwalniamy wiedzę!
Blog JSystems - uwalniamy wiedzę!
Jeśli Zabbix pojawia się w rozmowach o monitoringu serwerów, ale nie do końca wiesz, czym właściwie jest i czym różni się od Grafany, to trafiłeś dobrze. W tym przewodniku wyjaśnimy od zera, co to jest Zabbix, do czego służy i jak działa, a wszystko pokażemy na przykładach. Nie na diagramach z internetu, tylko na prawdziwych zrzutach z działającej instalacji, którą specjalnie na potrzeby tego artykułu postawiliśmy na własnym serwerze: serwer Zabbix 7.0, baza danych, frontend i agent zbierający realne metryki. Zabbix bywa mylony z Grafaną, dlatego ten tekst jest naturalnym uzupełnieniem naszego przewodnika o Grafanie, do którego będziemy się jeszcze nieraz odwoływać.
Zabbix w pigułce: darmowe, otwartoźródłowe narzędzie do monitoringu serwerów, sieci i aplikacji, typu wszystko w jednym. Zabbix sam zbiera pomiary (przez agenta albo bez niego), sam zapisuje je w bazie danych, sam ocenia, czy coś jest nie tak, i sam wysyła powiadomienia. Do tego pokazuje wszystko na własnych pulpitach w przeglądarce. Jedno narzędzie zamiast czterech.
Z tego artykułu dowiesz się:
Zabbix to otwartoźródłowy (open source, czyli o publicznie dostępnym kodzie) system monitoringu, który sam zbiera dane o stanie serwerów, sieci i aplikacji, sam je przechowuje, sam ocenia, czy coś się psuje, i sam powiadamia odpowiednie osoby. Mówiąc prościej: Zabbix nieustannie pilnuje Twojej infrastruktury i daje znać, zanim użytkownicy zauważą awarię. Zajmuje się przy tym całą drogą: od pobrania pomiaru, przez zapisanie go w bazie, po wysłanie alarmu na e-mail czy Slacka.
Najważniejsze słowo w tej definicji to wszystko w jednym (ang. all-in-one). W świecie monitoringu poszczególne zadania często rozdziela się między osobne narzędzia: jedno zbiera dane, drugie je przechowuje, trzecie rysuje wykresy, czwarte wysyła alerty. Zabbix robi to wszystko sam, w jednym spójnym produkcie. To odróżnia go od Grafany, która zajmuje się wyłącznie pokazywaniem danych, oraz od Prometheusa, który skupia się na zbieraniu i przechowywaniu metryk. Do tych porównań wrócimy w osobnej sekcji, bo to najczęstsze pytanie osób zaczynających z monitoringiem.
Zabbix zaczął powstawać w 2001 roku. Stworzył go Alexei Vladishev, początkowo jako wewnętrzne narzędzie do monitoringu. Pierwsza stabilna wersja (1.0) ukazała się w 2004 roku, a rok później, w 2005, powstała firma Zabbix SIA z siedzibą w Rydze na Łotwie, która rozwija projekt do dziś. Przez ponad dwie dekady Zabbix urósł do jednego z najpopularniejszych systemów monitoringu na świecie, chętnie wybieranego tam, gdzie trzeba pilnować klasycznej infrastruktury: serwerów, urządzeń sieciowych, baz danych i aplikacji. Od wersji 7.0 Zabbix jest wydawany na licencji AGPLv3 (wcześniej była to licencja GPLv2), pozostaje przy tym w pełni darmowy, także do zastosowań komercyjnych.
Zabbix sprawdza się wszędzie tam, gdzie trzeba pilnować dostępności i kondycji systemów oraz szybko reagować na problemy. Oto obszary, w których widuje się go najczęściej:
| Obszar | Przykłady użycia |
|---|---|
| Serwery i systemy | Procesor, pamięć, dysk, procesy i usługi na maszynach z systemem Linux oraz Windows, przez agenta Zabbix. |
| Urządzenia sieciowe | Przełączniki, routery, firewalle i drukarki przez protokół SNMP, czyli bez instalowania czegokolwiek na urządzeniu. |
| Bazy danych i aplikacje | PostgreSQL, MySQL, Oracle, serwery WWW, kolejki. Gotowe szablony pilnują wydajności i dostępności. |
| Dostępność usług z zewnątrz | Sprawdzanie, czy strona odpowiada, czy certyfikat nie wygasa i ile trwa odpowiedź, przez proste testy sieciowe. |
| Środowiska mieszane | Duże sieci z wieloma lokalizacjami, gdzie Zabbix proxy zbiera dane lokalnie i odsyła je do centrali. |
Wspólny mianownik tych zastosowań jest jeden: chcemy w jednym miejscu widzieć stan całej infrastruktury i dostać sygnał, zanim mały problem urośnie do awarii. Zabbix szczególnie dobrze czuje się w klasycznych centrach danych i sieciach firmowych, gdzie monitoruje się i serwery, i sprzęt sieciowy naraz.
Największa siła Zabbixa to elastyczność w zbieraniu danych. Nie narzuca jednej metody, tylko daje ich kilka, więc poradzi sobie właściwie z każdym urządzeniem. Dwie najważniejsze drogi to monitoring z agentem i bez agenta.
Agent Zabbix to mały program, który instalujesz na monitorowanej maszynie. Zna system od środka, więc dokładnie zmierzy zużycie procesora, pamięci, miejsca na dysku, stan procesów czy usług. Agent pracuje w jednym z dwóch trybów, a różnicę między nimi warto zrozumieć na początku, bo pada o to pytanie na każdej rozmowie o monitoringu:
Monitoring bez agenta (ang. agentless) przydaje się tam, gdzie agenta nie da się zainstalować, na przykład na przełączniku sieciowym albo macierzy dyskowej. Zabbix sięga wtedy po standardowe protokoły. Najważniejszy z nich to SNMP (Simple Network Management Protocol), którym mówi niemal każde urządzenie sieciowe. Poza tym Zabbix potrafi zbierać dane przez IPMI (sprzętowy stan serwera), JMX (aplikacje w Javie), po SSH, przez zapytania HTTP oraz bezpośrednio z baz danych. Dzięki tej mieszance jeden Zabbix ogarnia i nowoczesne serwery, i stary sprzęt sieciowy.
Niezależnie od metody efekt jest ten sam: pomiary trafiają do Zabbixa i lądują na stronie z najświeższymi danymi (Latest data). Widać tu na bieżąco każdą metrykę wraz z ostatnią wartością i zmianą. To pierwsze miejsce, w które zaglądamy, gdy chcemy sprawdzić, czy dane w ogóle płyną:
Zabbix na pierwszy rzut oka wygląda jak jeden program, a w rzeczywistości to zestaw współpracujących elementów. Nie musisz znać ich od podszewki, żeby zacząć, ale warto wiedzieć, kto za co odpowiada:
Kiedy te elementy złożymy w całość, powstaje prosty obieg: systemy generują pomiary, agent lub protokół je zbiera, serwer przetwarza je i ocenia wyzwalacze, baza zapisuje historię, a frontend pokazuje wynik i wysyła alerty. Prześledźmy tę drogę na animacji:
Cała praca z Zabbixem toczy się w przeglądarce. Menu po lewej stronie dzieli się na kilka obszarów. Najważniejsze to Monitoring (to, co dzieje się teraz: pulpity, problemy, najświeższe dane), Data collection (konfiguracja: hosty, szablony, itemy i wyzwalacze), Alerts (powiadomienia i akcje) oraz Reports (raporty i podsumowania). Zaczynamy zwykle od pulpitu Global view, który widziałeś na początku artykułu, a potem schodzimy do konkretów.
Podstawowym pojęciem jest host, czyli pojedyncza monitorowana rzecz: serwer, przełącznik, aplikacja. Strona z listą hostów pokazuje, ile każdy z nich ma itemów i wyzwalaczy, do jakich szablonów jest podpięty oraz czy jest dostępny. Zielony znacznik ZBX oznacza, że agent odpowiada i dane płyną:
To są trzy pojęcia, bez których nie zrozumiesz Zabbixa. Na szczęście są proste, a raz zrozumiane wracają wszędzie.
Item (element danych) to jedna konkretna rzecz, którą Zabbix mierzy na hoście: zużycie procesora, wolne miejsce na dysku, liczba zalogowanych użytkowników. Każdy item ma klucz (ang. key), czyli krótką nazwę mówiącą, co i jak zmierzyć, na przykład system.cpu.util dla obciążenia procesora albo vfs.fs.size[/,pfree] dla procentu wolnego miejsca na dysku. Item ma też okres odpytania, czyli jak często pobierać wartość:
Wyzwalacz (ang. trigger) to warunek zapisany na danych z itemów. Odpowiada na pytanie: kiedy uznać, że coś jest nie tak. Przykładowo: gdy średnie obciążenie procesora z ostatnich pięciu minut przekroczy 90 procent, wyzwalacz zmienia stan i tworzy problem. Wyzwalacz ma przypisaną ważność (ang. severity), która mówi, jak poważna jest sprawa. Zabbix ma sześć poziomów: od Not classified i Information, przez Warning, Average i High, aż po najwyższy Disaster (katastrofa). To po ważności rozróżnia się, które problemy budzą dyżurnego w nocy, a które mogą poczekać do rana:
Szablon (ang. template) to gotowy komplet itemów, wyzwalaczy, wykresów i pulpitów, który jednym kliknięciem podpinasz do hosta. Zamiast ręcznie tworzyć sto metryk dla serwera z Linuksem, podpinasz szablon Linux by Zabbix agent i host od razu ma pełny monitoring. Zabbix ma setki gotowych szablonów: dla systemów, baz danych, urządzeń sieciowych i aplikacji. To ogromna oszczędność czasu i najczęstszy sposób pracy z Zabbixem:
Sama tabela liczb niewiele mówi. Dopiero wykres pokazuje, jak wartość zmieniała się w czasie, i pozwala wychwycić chwilę, w której coś poszło nie tak. Zabbix rysuje wykres z historii dowolnego itemu. Poniżej obciążenie procesora naszego serwera. Wyraźnie widać moment, w którym celowo obciążyliśmy maszynę, żeby wywołać alarm, o czym za chwilę:
Wykresy układa się w pulpity (ang. dashboards). Pulpit to strona złożona z wielu kafelków (widżetów): wykresów, liczników, list problemów i map. Domyślny pulpit Global view, który otwiera się po zalogowaniu, daje przegląd całości na jednym ekranie. Własne pulpity budujesz metodą przeciągnij i upuść, dokładnie pod to, co chcesz mieć przed oczami.
Same wykresy to nie wszystko, bo nikt nie wpatruje się w ekran przez całą dobę. Dlatego sercem Zabbixa są problemy i powiadomienia. Gdy wyzwalacz uzna, że warunek jest spełniony, Zabbix zakłada problem: wpis widoczny na liście problemów i na pulpicie, z nazwą, czasem rozpoczęcia i ważnością. Na naszym serwerze celowo obciążyliśmy procesor, więc wyzwalacz pilnujący obciążenia słusznie się zapalił i założył realny problem: wysokie obciążenie procesora ponad 90 procent. Zabbix nadał mu ważność Warning, czyli ostrzeżenie:
Samo wykrycie problemu to jednak dopiero połowa sukcesu. Trzeba jeszcze kogoś zawiadomić. Odpowiadają za to dwa pojęcia. Typy mediów (ang. media types) to kanały, którymi Zabbix wysyła powiadomienia: e-mail, SMS, Slack, Microsoft Teams, Telegram i wiele innych. Akcje (ang. actions) to reguły mówiące, co zrobić, gdy pojawi się problem: kogo powiadomić, jakim kanałem i po jakim czasie eskalować sprawę wyżej, jeśli nikt nie zareaguje. Zabbix ma sporo gotowych typów mediów, wystarczy je skonfigurować:
Teorię mamy za sobą, więc zobaczmy gotowe powiadomienie na żywo. W naszym Zabbixie skonfigurowaliśmy typ mediów e-mail, przypisaliśmy adres do konta administratora i włączyliśmy akcję, która zgłasza problemy. Potem celowo wywołaliśmy problem na monitorowanym hoście. Zabbix od razu sam ułożył treść i wysłał takie powiadomienie:
Zwróć uwagę, że alert od razu niesie wszystko, co potrzebne do reakcji: czego dotyczy problem, na którym hoście wystąpił, jaką ma ważność i kiedy się zaczął. Dokładnie taką samą wiadomość Zabbix wyśle SMS-em, na Slacka, Microsoft Teams albo Telegram, jeśli zamiast e-maila (lub obok niego) ustawisz inny typ mediów. To Ty decydujesz, którym kanałem i kogo powiadomić.
To jest właśnie sedno monitoringu. Pulpit pokazuje stan na życzenie, a Zabbix sam pilnuje wyzwalaczy i sam wysyła powiadomienie, gdy dzieje się coś złego, nawet gdy nikt nie patrzy na ekran.
To najczęstsze pytanie osób zaczynających z monitoringiem: czym Zabbix różni się od Grafany i innych znanych narzędzi. Uporządkujmy to, bo część z nich to konkurenci, a część współpracownicy Zabbixa.
| Narzędzie | Jak się ma do Zabbixa |
|---|---|
| Grafana | Nie zbiera danych, tylko je rysuje. To współpracownik, nie konkurent. Zabbix może być dla niej źródłem danych. |
| Prometheus | Też zbiera i przechowuje metryki, ale skupia się na kontenerach i chmurze. Zabbix jest bardziej wszechstronny w klasycznej infrastrukturze. |
| Nagios | Starszy klasyk monitoringu. Zabbix bywa traktowany jako jego nowocześniejszy następca, z ładniejszym interfejsem i szablonami. |
| Datadog, New Relic | Płatne platformy w chmurze. Wygodne, ale kosztowne i rozliczane od skali. Zabbix uruchomisz za darmo na własnym serwerze. |
To para, którą najłatwiej pomylić, a różnica jest prosta. Zabbix sam zbiera, przechowuje i alarmuje, a Grafana tylko rysuje. Grafana nie ma agentów i nie przechowuje danych. Podłącza się do źródeł, na przykład do Prometheusa albo właśnie do Zabbixa, i z ich danych buduje efektowne pulpity. Zabbix też ma własne wykresy i pulpity, wystarczające do codziennej pracy, ale wielu zespołów woli oglądać dane w ładniejszej i bardziej elastycznej Grafanie. Jeśli chcesz poznać drugą stronę tego duetu, mamy osobny, równie praktyczny tekst: Co to jest Grafana, przewodnik dla początkujących.
Oba narzędzia zbierają i przechowują metryki, więc tu naprawdę konkurują. Różnią się filozofią. Prometheus sam co kilkanaście sekund pobiera metryki (model pull) i króluje w świecie kontenerów oraz Kubernetesa. Zabbix stawia na agenta i wiele protokołów, więc lepiej czuje się w klasycznej infrastrukturze i sieciach z różnorodnym sprzętem. Jeśli chcesz zrozumieć podejście Prometheusa, opisaliśmy je krok po kroku w przewodniku Co to jest Prometheus.
Nagios to jeden z najstarszych systemów monitoringu i przez lata był punktem odniesienia. Zabbix powstał później i wielu administratorów traktuje go jako nowocześniejszą alternatywę: z gotowymi szablonami, ładniejszym interfejsem webowym, wbudowaniem pulpitów i wygodniejszą konfiguracją bez grzebania w plikach tekstowych. Oba potrafią to samo w warstwie idei, ale Zabbix robi to przyjemniej dla początkującego.
Zabbix i Grafana nie muszą się wykluczać. Bardzo popularne jest połączenie, w którym Zabbix zbiera i przechowuje dane, a Grafana je rysuje. Grafana ma gotową wtyczkę do Zabbixa (Zabbix data source), którą podłączasz Zabbix jako źródło danych. Od tej chwili budujesz w Grafanie pulpity na danych z Zabbixa, korzystając z jej bogatszych typów wykresów i wygodnego łączenia wielu źródeł na jednym ekranie. Tak może wyglądać serwer monitorowany przez Zabbix, pokazany na pulpicie Grafany:
Wniosek dla początkującego jest prosty: to nie jest wybór albo Zabbix, albo Grafana. Zabbix zajmuje się zbieraniem, przechowywaniem i alarmowaniem, a Grafana daje najładniejszą i najbardziej elastyczną warstwę wizualizacji. Więcej o samej Grafanie znajdziesz w naszym przewodniku o Grafanie.
Zabbix jest darmowy i otwartoźródłowy (na licencji AGPLv3), także do zastosowań komercyjnych. Najszybciej uruchomisz go przez Dockera. Zabbix składa się z kilku elementów (baza danych, serwer, frontend i agent), więc najwygodniej postawić je razem plikiem docker-compose.yml. Poniżej skrócony komplet, dokładnie taki, jakiego użyliśmy w tym artykule:
services:
postgres:
image: postgres:16-alpine
environment:
POSTGRES_USER: zabbix
POSTGRES_PASSWORD: zabbix_pwd
POSTGRES_DB: zabbix
zabbix-server:
image: zabbix/zabbix-server-pgsql:alpine-7.0-latest
environment:
DB_SERVER_HOST: postgres
POSTGRES_USER: zabbix
POSTGRES_PASSWORD: zabbix_pwd
POSTGRES_DB: zabbix
ports: ["10051:10051"]
zabbix-web:
image: zabbix/zabbix-web-nginx-pgsql:alpine-7.0-latest
environment:
DB_SERVER_HOST: postgres
POSTGRES_USER: zabbix
POSTGRES_PASSWORD: zabbix_pwd
POSTGRES_DB: zabbix
ZBX_SERVER_HOST: zabbix-server
ports: ["8080:8080"]
zabbix-agent:
image: zabbix/zabbix-agent2:alpine-7.0-latest
environment:
ZBX_HOSTNAME: "Zabbix server"
ZBX_SERVER_HOST: zabbix-server
Po poleceniu docker compose up -d Zabbix po chwili działa pod adresem http://localhost:8080. Logujesz się domyślnym kontem (użytkownik Admin, hasło zabbix, które od razu warto zmienić) i możesz zaczynać. W środowisku produkcyjnym Zabbix instaluje się częściej z gotowych pakietów systemowych (repozytoria dla Debiana, Ubuntu, RHEL), ale do nauki i testów Docker jest najprostszy.
A jak z kosztami? Sam Zabbix jest w pełni darmowy, bez ograniczeń liczby hostów czy metryk. Płatne jest jedynie wsparcie techniczne, które firma Zabbix SIA oferuje w formie subskrypcji dla organizacji, które chcą mieć gwarantowaną pomoc i czas reakcji. Na start, do nauki i do większości wdrożeń w firmach, w zupełności wystarcza darmowa wersja na własnym serwerze.
| Pojęcie | Co oznacza |
|---|---|
| Host | Pojedyncza monitorowana rzecz: serwer, przełącznik, aplikacja. |
| Item | Pojedynczy pomiar na hoście, opisany kluczem (np. zużycie procesora). |
| Wyzwalacz (trigger) | Warunek na danych z itemów, który tworzy problem, gdy jest spełniony. |
| Szablon (template) | Gotowy zestaw itemów i wyzwalaczy podpinany do hosta jednym kliknięciem. |
| Problem | Aktywne zdarzenie założone przez wyzwalacz, widoczne na liście i pulpicie. |
| Ważność (severity) | Poziom powagi problemu, od Information po Disaster. |
| Agent | Program na monitorowanej maszynie, który oddaje jej metryki. |
| Proxy | Pośrednik zbierający dane lokalnie i odsyłający je do głównego serwera. |
| SNMP | Protokół monitoringu urządzeń sieciowych bez instalowania agenta. |
Zabbix to darmowy, otwartoźródłowy system monitoringu typu wszystko w jednym. Sam zbiera dane o serwerach, sieci i aplikacjach (przez agenta albo bez niego), sam zapisuje je w bazie, sam ocenia wyzwalacze i sam wysyła powiadomienia, a wszystko pokazuje na własnych pulpitach w przeglądarce. Jego największe atuty to wszechstronność w zbieraniu danych, setki gotowych szablonów oraz kompletność: jedno narzędzie zamiast czterech. Tam, gdzie potrzeba jeszcze ładniejszej i bardziej elastycznej wizualizacji, Zabbix świetnie łączy się z Grafaną, a w świecie kontenerów jego rolę przejmuje często Prometheus.
Najlepszy sposób nauki to praktyka: postaw Zabbix przez Docker Compose, podepnij szablon do pierwszego hosta, zajrzyj na stronę najświeższych danych, obejrzyj wykres i spróbuj wywołać własny problem, dokładnie tak, jak pokazaliśmy w tym artykule. A jeśli chcesz przejść przez to z trenerem praktykiem i nauczyć się Zabbixa oraz całego monitoringu szybciej i w dobrze poukładanej kolejności, mamy dla Ciebie dwa szkolenia.
Chcesz opanować Zabbix od praktyka?
Poniżej dwa szkolenia JSystems. Pierwsze skupia się w całości na Zabbixie, drugie to szeroki monitoring i observability z Grafaną, Prometheusem, Lokim i Zabbixem. Oba mają termin gwarantowany, czyli odbywają się na pewno.
Szkolenie Zabbix - monitoring serwerów i aplikacji ->
Szkolenie Monitoring i Observability: Grafana, Prometheus, Loki i Zabbix ->
Komentarze (0)
Brak komentarzy...