Zabbix – system monitorowania sieci z którego każdy admin będzie zadowolony
Podstawowym obowiązkiem administratora jest utrzymanie powierzonej mu infrastruktury sieciowej. Zaliczyć do niej można przede wszystkim serwery i stacje robocze, ale także m. in. routery oraz switche itp. Oczywiście to nie wszystko bo można także doszukać się np. urządzeń multimedialnych, które również są potrzebne w codziennej pracy firmy. Generalnie wszystko zależy od specyfiki firmy, jej wielkości, a także chęci zatrudnionego admina ;-)
Odpowiedzialny administrator na pewno będzie chciał mieć wszystko pod kontrolą na tyle, na ile jest to możliwe. Dlatego w cenie będą dla niego powiadomienia via e-mail lub SMS o problemach na newralgicznej części infrastruktury. Na pewno przyda się także bieżące monitorowanie usług sieciowych (np. DNS, LDAP, AD itp.) dostępnych na poszczególnych serwerach. Przyjemnie też byłoby zobaczyć, które urządzenie generuje największy ruch w sieci albo w jakich godzinach dany serwer jest najczęściej odpytywany. A wisienką na torcie byłaby możliwość podejrzenia wyników w postaci wykresów z możliwością ich eksportu. Ta opcja może być szczególnie przydatna, gdy przełożony poprosi o raport lub trzeba będzie wnioskować o przydział nowego sprzętu. ;-)
I właśnie wszystko co powyżej, zapewnia Zabbix. Czyli kompleksowy system monitorowania sieci, posiadający uznanie w kręgach ekspertów, a także stosowany w niejednym Data Center. Jako, że w ostatnim czasie miałem okazję trochę pobawić się ów systemem – postanowiłem opisać moje bądź co bądź miłe doświadczenia z jego instalacji, konfiguracji i godzin z nim spędzonych :-)
Co prawda Zabbix nie sprawia tyle frajdy co zabawa narzędziami wypisanymi na schemacie poniżej, ale również nadaje się do profesjonalnych rozwiązań ;-) Alternatywnym rozwiązaniem może być Nagios lub Cacti.
Ale do rzeczy...
Licencja, dokumentacja oraz środowisko pracy
Zabbix, dumnie nazywany przez twórców jako "The Enterprise-Class Open Source Network Monitoring Solution", jest rozpowszechniany na licencji GNU General Public License (GPL) v. 2. Dzięki temu można go wykorzystywać nawet w najbardziej komercyjnych technologicznie projektach jakie tylko możemy sobie wyobrazić ;-)
Najnowsze wydanie (3.0), wprowadza sporo udogodnień względem poprzednich wersji. Wszystkie one posiadają przyzwoicie opisane dokumentacje, w tym dla wersji 2.2 dostępna jest ona w języku polskim (zapewnia świetny wstęp do przyswojenia co poniektórych terminów używanych na ich łamach). Z moich doświadczeń wywnioskowałem, że sporo opisów, instrukcji lub definicji pokrywa się między sobą w różnych wersjach, co znacznie ułatwia odnalezienie się przez początkującego użytkownika.
Serwer Zabbixa pracuje na systemach Linux/Unix. Gotowe paczki instalacyjne Zabbixa w wersjach 2.2 LTS, 2.4 i 3.0 LTS – dostępne są dla dystrybucji RHEL i CentOS (wersje 5/6/7), Oracle Linux, a także Debian 7/8 i Ubuntu 14.04 LTS.
Łatwość nawiązywania komunikacji z hostami
Podstawowa komunikacja między serwerem, a hostem (np. serwerem, switchem lub stacją roboczą) jest możliwa do realizacji na kilka sposobów:
Możliwe jest wykorzystanie agenta, czyli skrypt uruchamiany po stronie klienta, który po skonfigurowaniu nawiązuje komunikację z serwerem Zabbixa. Możliwa jest jego instalacja z pakietów (w systemach Linux/Unix pracuje jako demon), programów .exe (na systemach Windows pracuje jako usługa systemowa) lub wykorzystania z dostępnych dla różnych platform, prekompilowanych binarek.
Można skorzystać także z protokołu SNMP lub ICMP.
Zabbix oferuje także komunikację z Java Management Extensions (JMX), który umożliwia całkiem sensowne monitorowanie aplikacji napisanych w tym języku. W najbliższym czasie planuję właśnie pobawić się w takie rozwiązanie i postaram się znaleźć chwilkę czasu na opisanie moich doświadczeń z tym związanych :-)
Przykład dodania hosta komunikującego się przez agenta
Zaprezentuję prosty przykład dodania hosta na serwerze Zabbixa. Jego komunikacja będzie oparta na agencie zainstalowanym w systemie klienckim. Nie będę opisywał całej procedury instalacji i konfiguracji agenta od podstaw, ponieważ świetnie zostało to zaprezentowane w poniższych artykułach:
- How to Install and Configure Zabbix Agents on Remote Linux Systems
- How to Install Zabbix Agent and Add Windows Host to Zabbix Monitoring ...
W skrócie cała sprawa z agentem sprowadza się do uzupełnienia trzech parametrów w konfiguracji (Server, ServerActive oraz Hostname) i odpalenia agenta.
Następnie po stronie Zabbixa należy ów host dodać, wpisać jego hostname, nazwę, przypisać do grupy, a także podać adres IP agenta.
W zakładce "Szablony" warto także wybrać jeden z dostępnych szablonów, tak aby określić jakie agent ma zbierać dane na systemie klienckim.
Po wybraniu szablonu i dodaniu, zobaczymy obserwowany system na liście monitorowanych hostów.
Status komunikacji z agentem zobaczymy w kolumnie "Dostępność", gdzie zielone podświetlenie skrótu "ZBX" informuje o jej poprawności. W przeciwnym wypadku możemy spodziewać się koloru czerwonego.
Informacje o naszych hostach będziemy mogli zobaczyć także na stronie domyślnej serwera Zabbixa.
Makra, Funkcje i wyrażenia
Im bardziej szablony monitorowania są skrojone do potrzeb użytkownika, tym Zabbix jest skuteczniejszy w działaniu. Posiada on domyślnie sporo szablonów z zaimplementowanymi pozycjami, wyzwalaczami (ang. triggers), wykresami itd..
Wszystko zbudowane jest na makrach, funkcjach i wyrażeniach. Dzięki nim, możliwe jest także tworzenie własnych implementacji, które pozwolą znacznie "spersonalizować" monitoring.
Dla bardziej szczegółowego zapoznania się z ideą wymienionych funkcjonalności, polecam poświęcone im rozdziały w dokumentacji:
- Pozycje – https://www.zabbix.com/documentation/2.2/pl/manual/appendix/items
- Wyrażenia wyzwalacza – https://www.zabbix.com/documentation/2.2/pl/manual/config/triggers/exp... (zaprezentowano tutaj także kilkanaście praktycznych przykładów monitorowania)
- Obsługiwane funkcje wyzwalaczy – https://www.zabbix.com/documentation/2.2/pl/manual/appendix/triggers/f...
- Makra – https://www.zabbix.com/documentation/2.2/pl/manual/appendix/macros/sup...
Dzięki wyżej wymienionym funkcjonalnościom możliwe jest przede wszystkim generowanie wykresów, które przecież są najważniejsze bo wtedy wiadomo, że coś się dzieje :D
Ale ważne są także...
Akcje
To właśnie akcje definiują działania na podstawie wyzwalaczy. Pozwalają ustalić scenariusze powiadomień dla administratorów, np. poprzez wysłanie SMSa lub emaila.
Osobiście z akcjami miałem do czynienia w przypadku takich właśnie powiadomień. Przykładowo, prosty scenariusz: gdy maszyna nagle przestaje pingować – wysyłany jest email. Jeśli ping nie odpowiada przez 15 minut, wysyłka SMS. Zdefiniowane akcje miały dla różnych powiadomień wywoływać odpowiednie skrypty bashowe (maile idą za pośrednictwem ssmtp, a smsy przez smstool).
Warto przećwiczyć dodawanie i konfiguracje akcji, gdyż można sprawić sobie całkiem ciekawą pobudkę w niedzielę o 6.30 rano, gdy w ciągu 20 minut przyszło lekko ponad 100 smsów z komunikatami :D Niestety, mój błąd polegał na tym, że po prostu zapętliłem wykonanie danej akcji... Przynajmniej już wiem, że to skuteczna forma pobudki :P
Poniżej kilka screenów obrazujących dodawanie akcji.
Formularz definiowania treści komunikatu:
Ustalenie warunków realizacji akcji:
Ustalenie ilości kroków, ich szczegółów w postaci czasu wykonywania, adresatów, formy powiadomienia itp.
To jest tylko zalążek wszystkich możliwości Zabbixa!
Prezentowane wyżej przykłady i opisy poszczególnych modułów/funkcjonalności/rozwiązań w Zabbixie, mają charakter jedynie poglądowy. Wszystkie te elementy połączone razem otwierają szerokie spektrum możliwości, które pozwolą na monitorowanie sieci na naprawdę wysokim poziomie. Dlatego jest to jeden z powodów dla którego na pewno przez długi czas nie rozstanę się z Zabbixem. Bliższe poznanie się z tym systemem na pewno nie pójdzie w las :-)
Dodatkowo podoba mi się także przemyślany rozwój tej technologii. Widać, że twórcy mają pomysł, wiedzą czego potrzebuje rynek i klienci, a także potrafią stworzyć całkiem przyjazne i łatwe w obsłudze środowisko do pracy. Zabbix skupia także całkiem dużą społeczność, co zauważyłem nie raz przy okazji szukania rozwiązań różnych problemów via Google.
Także mam nadzieję, że to nie będzie mój ostatni wpis o Zabbixie i starczy mi czasu oraz energii do stworzenia kolejnych wpisów w tej materii :)
PS. Specjalnie linkowałem do dokumentacji Zabbixa w języku polskim, głównie ze względu na charakter wpisu, który jest stricte zapoznawczy i poglądowy ;-)