Jak przewidzieć awarię? Nagios cz. 1

 

 


 

Zgodnie z prawami Murphy’ego awarii przewidzieć się nie da. Poprzestanie jednak na tym stwierdzeniu niczego dobrego administratorowi nie wróży. Pozostaje uważne monitorowanie systemu i wyszukiwanie oznak złego. Czym (bezpłatnym) monitorować systemy? Mnie dobrym rozwiązaniem wydaje się Nagios i  The Dude. Ale o nich później.

W jaki sposób można monitorować systemy? Można robić to na piechotę i co jakiś czas sprawdzać, czy na każdym z nich wszystkie usługi działają i czy w dziennikach nie pojawiają się niepokojące wpisy. Takie rozwiązanie na dłuższą metę jednak wypada zautomatyzować. Pomoże w tym odpowiednie oprogramowanie (a jest go wiele). Dla własnych potrzeb poszukuję najlepszego z nich. Najlepszego, to znaczy chcę, aby:

  • był niezawodny,
  • można było go łatwo i szybko wdrożyć,
  • był bezpłatny także do zastosowań komercyjnych,
  • nie „spamował” w sieci,
  • nie był agresywny i nie wymagał (dużych) zmian w polityce bezpieczeństwa,
  • w miarę możliwości by nie wymagał instalowania agentów po stronie monitorowanych hostów/usług.

Wiele dobrego słyszałem o Nagiosie, ale ze względu na jego nieco surowy wygląd/konfigurację, chciałem znaleźć coś prostszego we wdrożeniu. Próbowałem różnych narzędzi, które pozwolę sobie wrzucić do jednego worka:

  1. The Dude - (Windows) bardzo udany program, automatycznie skanuje sieć w poszukiwaniu hostów i monitoruje je bez potrzeby instalowania na nich agentów. Minusy - w przypadku dużych sieci (kilkaset hostów) ruch generowany przez program jest duży (kilkaset kib/s) a ograniczenie go zmniejsza użyteczność aplikacji. Mimo to, w przypadku monitorowania mniejszej liczby systemów lub na dobry początek - super narzędzie.
  2. Spiceworks - (Windows) podobnie jak The Dude automatycznie skanuje sieć i poszukuje hostów. Jest bardzo prosty w obsłudze przez webowy interfejs, niby ma wszystko co potrzebne, ale w pracy dopatruję się minusów - przede wszystkim problemów z konfiguracją skanowanych hostów Windowsowych (konieczność rekonfiguracji WMI, modyfikacji firewalli itd. w sposób, który w wielu firmach może naruszać polityki bezpieczeństwa). Ponadto, aktualizacja spiceworksa pociąga konieczność rekonfiguracji hostów. Dla mnie więc - odpada.
  3. Shinken - (Linux) podobnie jak dalej opisywane systemy jest narzędziem linuxowym. W zasadzie jest to całkowicie przepisany do Pythona nagios, uzupełniony o brakujące w nagiosie funkcjonalności. Byłoby pięknie, okazuje się jednak (może ze względu na stosunkowo młody wiek narzędzia), że brakuje mu dokumentacji, nie jest dostępny w repozytoriach domyślnych debiana/ubuntu. Instalacja sprawiła mi problemy, okazało się w trakcie, że do działania w zasadzie trzeba i tak zainstalować nagiosa (o czym nie dowiedziałem się z dokumentacji)… Ogólnie poczułem się zniechęcony. A do tego dostępna maszyna wirtualna posiada zabytkową wersję shinkena.
  4. Icinga - to z kolei bazujący na nagiosie projekt, uzupełniający nagiosa o dodatkowe funkcjonalności. Podobnie jak w przypadku shinkena zniechęciłem się trudnościami w instalacji systemu. Być może ktoś, kto ma ochotę zgłębiać się w dokumentację i spełnianie zależności nie opisanych w dokumentacji stwierdzi, że narzędzie to jest dobre. Ja póki co się wstrzymałem.

Wreszcie - Nagios. Jak podają twórcy - „Nagios Is The Industry Standard In IT Infrastructure Monitoring”. Dużo powiedziane, jest to jednak narzędzie z długim stażem i dużym zapleczem. Ku mojemu miłemu zaskoczeniu nagiosa można z sukcesem zainstalować ze standardowych repozytoriów Ubuntu 11.10 (pakiet nagios3) i działa. To bardzo dobrze. Jeśli chodzi o jego funkcjonalność, to posiada cechy które mi odpowiadają:

  1. Jest konfigurowalny przez tekstowe pliki a wtyczki są samodzielnymi programami,
  2. nie skanuje sieci sam,
  3. posiada duży zasób wtyczek służących do monitorowania różnego rodzaju systemów (hostów windows i linux, switchy, routerów, drukarek itd.) oraz usług (SSH, HTTP, FTP, …).

Widząc pkt. 1 nie pukaj się w głowę. Konfigurowanie przez pliki tekstowe ma dużą zaletę - jeżeli coś nie działa, to możesz to naprawić (niemal zawsze). Automatycznie konfigurujące się narzędzia zwykle działają tylko w zakresie takim, w jakim przewidział ich twórca. Czyli - najprawdopodobniej w Twojej sieci nie wszystko uda się nimi monitorować. Zastosowanie plików tekstowych pozwala na dużą elastyczność. A dzięki temu, że wtyczki są zwykłymi programami konsolowymi to możesz dodać nagiosowi dowolną funkcjonalność pisząc program w Twoim ulubionym języku.

Brak automatycznego skanowania (pkt. 2) także może wydawać się zbyt purystyczny. Jednak dzięki takiemu rozwiązaniu całkowicie unikamy zbędnego ruchu w sieci, nie ryzykujemy naruszania polityk bezpieczeństwa i nie musimy polegać na zawodnych metodach automatycznych. Jeżeli znamy adres IP (lub nazwę) hosta, który chcemy monitorować (a tak jest, prawda?) to musimy tylko utworzyć odpowiedni plik tekstowy opisujący tego hosta i możemy rozpocząć monitorowanie.

Podsumowując - jest wiele programów do monitorowania serwerów, stacji roboczych, przełączników i tym podobnych. Niektóre z nich działają automatycznie w zakresie skanowania sieci i (teoretycznie) łatwo je skonfigurować. Jak na razie jednak nie znalazłem wśród nich takiego, który by spełniał moje oczekiwania. Spełnił je dopiero nagios, który choć wymaga podstawowej wiedzy o działaniu systemów linux, to pozwala na dużą elastyczność i jak wydaje mi się - niezawodność monitorowania.

W kolejnym poście krótko opiszę, jak skonfigurować nagiosa, by rozpoczął monitorowanie sieci. Na razie powiem tylko tyle, że jest to naprawdę proste.