Integracja z systemem Nagios 1. WSTĘP Nagios jest programem do monitorowania sieci, urządzeń sieciowych, aplikacji oraz serwerów działający w systemach Linux i Unix rozpowszechniany na podstawie licencji GPL. Może monitorować hosty oraz usługi według określonych ustawień, dzięki czemu jest możliwe dostosowanie go do swoich potrzeb. W razie wykrycia problemu Nagios może wysłać powiadomienie e mail lub SMS do administratora systemu z informacją o problemie. Nagios posiada budowę modułową, czyli bazuje na tzw. wtyczkach. Niektóre funkcje: monitorowanie usług sieciowych (SMTP, POP3, HTTP, NNTP, ICMP, SNMP, FTP, SSH); monitorowanie użycia zasobów systemowych (procesor, dysk twardy, logi systemowe) w większości systemów operacyjnych, w tym Microsoft Windows; pozwala na definiowanie hierarchii sieci, oraz rozróżnia które hosty są wyłączone, a które nieosiągalne; umożliwia proste projektowanie wtyczek w razie potrzeby monitorowania własnych usług, przy użyciu jednego z wielu języków programowania; powiadamianie w razie wykrycia problemów za pomocą e maila, pagera, SMS lub innych zdefiniowanych metod powiadamiania we wtyczkach. 2. INSTALACJA PLUGINU Plugin został przygotowany do realizacji monitorowania aktywnego, jak i do realizacji monitorowania pasywnego. Archiwum pluginu zawiera następujące pliki: check_itsupervisor skrypt Bash realizujący odczyt i parsowanie danych z kontrolerów dla monitorowania aktywnego; passive_itsupervisor skrypt Bash realizujący parsowanie odebranych komunikatów trap i przekazywania ich za pomocą mechanizmu NSCA dla monitorowania pasywnego; cmd_itsupervisor.cfg definicja komend odczytu danych z kontrolera, które używane są w definicji usług dla monitorowania aktywnego; snmptrapd.conf definicja odbieranych komunikatów trap i akcji dla deamona snmptrapd dla monitorowania pasywnego; itsupervisor.cfg definicja monitorowanego hosta oraz jego usług. W kolejnych rozdziałach opisano szczegółowo konfigurację osobno dla monitorowania aktywnego i dla monitorowania pasywnego. Konfiguracja dotyczy środowiska Debian Wheezy i systemu Nagios w wersji 3.4. Inne dystrybucje systemu Linux mogą zawierać inne lokalizacje komponentów oraz inne nazwy instalowanych pakietów. Jednakże schemat działania jest identyczny. W ostatnim rozdziale opisano konfigurację kontrolera ITSupervisor do współpracy z systemem Nagios.
3. MONITOROWANIE AKTYWNE Monitorowanie aktywne polega na synchronicznym, planowanym wykonywaniu przez system Nagios testów sprawdzających dostępność i stan usług z zewnątrz na monitorowanych hostach. Standardowo Nagios wywołuje wtyczkę (dokonuje testu usługi) co 5 min, jeżeli nastąpił problem z połączeniem lub wtyczka raportuje alarm, następne wywołania wykonywane są co 1 min, jeżeli po skonfigurowanej liczbie wywołań (domyślnie 4) nadal jest alarm, generowany jest komunikat. Interwał czasowy testów oraz liczbę ponowień można dowolnie zmieniać. W przypadku kontrolera ITSupervisor monitorowanymi usługami są stany czujników pomiarowych oraz stany wejść dwustanowych. Na rysunku 1 przedstawiono widok działającego systemu z przykładową konfiguracją kontrolera zawartą w archiwum pluginu. Rys. 1. Działający system Nagios z przykładową konfiguracją (4 czujniki, 4 wejścia dwustanowe) Uruchomienie monitorowania aktywnego sprowadza się do umieszczenia trzech plików z archiwum w miejsca docelowe systemu Nagios: check_itsupervisor główna wtyczka w miejsce przechowywania pluginów Nagiosa (/usr/lib/nagios/plugins); cmd_itsupervisor.cfg definicja komend w miejsce przechowywania plików konfiguracyjnych Nagiosa (/etc/nagios3/conf.d); itsupervisor.cfg definicja monitorowanego hosta oraz jego usług w miejsce przechowywania plików konfiguracyjnych Nagiosa (/etc/nagios3.conf.d).
Możliwa jest inna lokalizacja plików, w takim przypadku należy również zmienić ścieżki w samych plikach konfiguracyjnych (np. w pliku cmd_itsupervisor.cfg gdzie zawarta jest ścieżka bezwzględna dla właściwej wtyczki), jak również w głównym pliku nagios.cfg gdzie zdefiniowane są ścieżki do katalogów z plikami konfiguracyjnymi. Właściwym plikiem z konfiguracją hosta i jego usług jest plik itsupervisor.cfg. Jego strukturę z konfiguracją jednego hosta i dwóch usług (czujnik i wejście dwustanowe) przedstawiono poniżej: *************************************************************** ******************** Controller definition ******************** *************************************************************** define host { use generic-host use sysname from SNMP agent host_name ITSupervisor set correct controller ip address address 192.168.1.148 } *************************************************************** ************** Service definition - SENSOR NO 1 *************** *************************************************************** define service { use generic-service host_name ITSupervisor use sensname from SNMP agent service_description Room temperature set correct agent port, community and sensor number for example below agent port is 161, community is public, sensor no is 1 check_command check_its_sensor!161!public!1 } *************************************************************** *************** Service definition - INPUT NO 1 *************** *************************************************************** define service { use generic-service host_name ITSupervisor service_description Leak detector set correct agent port, community and input number for example below agent port is 161, community is public, input no is 1 check_command check_its_input!161!public!1 } Elementy koloru czerwonego należy ustawić według indywidualnej konfiguracji. Należy zwrócić uwagę na ustawienie poprawnego adresu IP kontrolera, oraz parametrów protokołu SNMP (port agenta, community). Aby dodać kolejne usługi (kolejne czujniki lub wejścia dwustanowe) należy powielić odpowiednią sekcję define service, pamiętając o prawidłowej zmianie numeru czujnika lub wejścia (trzeci parametr komendy check_its_sensor lub check_its_input) oraz nazwie usługi (service_description). Kolejne hosty (kontrolery) można dodać powielając plik itsupervisor.cfg, zmieniając jedynie jego indywidualne parametry. Przed uruchomieniem systemu Nagios należy upewnić się, że w systemie dostępne jest narzędzie snmpget z pakietu snmp lub snmp-utils, ponieważ jest ono wymagane przez wtyczkę check_itsupervisor.
4. MONITOROWANIE PASYWNE Monitorowanie pasywne działa asynchronicznie, komunikaty o zmianie stanu usług zgłaszane są przez hosta za pomocą interfejsu i przetwarzane tak samo jak aktywne. Dzięki dodatkowemu monitorowaniu pasywnemu, system Nagios otrzymuje informację o zmianie stanu usługi niezwłocznie. W przypadku braku dodatkowego monitorowania pasywnego, zmiana stanu usługi będzie zauważona przez Nagiosa dopiero przy kolejnym zaplanowanym teście. Uruchomienie monitorowania pasywnego wymaga zainstalowania usługi snmptrapd (najczęściej występuje wraz z usługą snmpd) oraz usługi nsca (umożliwiającej przekazywanie informacji w bezpieczny sposób) do jądra systemu Nagios. Konfiguracja usługi nsca wymaga określenia hasła oraz algorytmu szyfrowania (zarówno w pliku konfiguracyjnym samej usługi /etc/nsca.cfg jak również w pliku /etc/send_nsca.cfg z którego korzysta skrypt passive_itsupervisor). Konfiguracja usługi snmptrapd wymaga zmiany w domyślnym pliku konfiguracyjnym /etc/default/snmpd parametru, który uruchamia deamona snmptrapd wraz z usługą snmpd oraz dodaje dodatkowy parametr On do linii poleceń uruchomienia usługi snmptrapd. Poniżej przedstawiono prawidłową zmianę tych parametrów: snmptrapd control (yes means start daemon). As of net-snmp version 5.0, master agentx support must be enabled in snmpd before snmptrapd can be run. See snmpd.conf(5) for how to do this. TRAPDRUN=yes snmptrapd options (use syslog). TRAPDOPTS='-Lsd -On -p /var/run/snmptrapd.pid' Dodatkowo należy umieścić z archiwum plik konfiguracyjny snmptrapd.conf w katalogu konfiguracji usługi snmpd (/etc/snmp). Plik ten zawiera listę zdefiniowanych komunikatów trap, które będą podlegały przetwarzaniu przez skrypt passive_itsupervisor. Widok pliku snmptrapd.conf przedstawiono poniżej: EXAMPLE-trap.conf: An example configuration file for configuring the Net-SNMP snmptrapd agent. This file is intended to only be an example. If, however, you want to use it, it should be placed in /etc/snmp/snmptrapd.conf. When the snmptrapd agent starts up, this is where it will look for it. All lines beginning with a '' are comments and are intended for you to read. All other lines are configuration commands for the agent. PLEASE: read the snmptrapd.conf(5) manual page as well! authcommunity execute trap Sensor state changed - High warning start traphandle.1.3.6.1.4.1.32307.1.0.1 /etc/snmp/passive_itsupervisor Sensor state changed - High alarm start traphandle.1.3.6.1.4.1.32307.1.0.2 /etc/snmp/passive_itsupervisor
Sensor state changed - High alarm end traphandle.1.3.6.1.4.1.32307.1.0.3 /etc/snmp/passive_itsupervisor Sensor state changed - High warning end traphandle.1.3.6.1.4.1.32307.1.0.4 /etc/snmp/passive_itsupervisor Sensor state changed - Low warning start traphandle.1.3.6.1.4.1.32307.1.0.5 /etc/snmp/passive_itsupervisor Sensor state changed - Low alarm start traphandle.1.3.6.1.4.1.32307.1.0.6 /etc/snmp/passive_itsupervisor Sensor state changed - Low alarm end traphandle.1.3.6.1.4.1.32307.1.0.7 /etc/snmp/passive_itsupervisor Sensor state changed - Low warning end traphandle.1.3.6.1.4.1.32307.1.0.8 /etc/snmp/passive_itsupervisor Sensor state changed - communication loss traphandle.1.3.6.1.4.1.32307.1.0.9 /etc/snmp/passive_itsupervisor Sensor state changed - communication pass traphandle.1.3.6.1.4.1.32307.1.0.10 /etc/snmp/passive_itsupervisor Input state changed - Active start traphandle.1.3.6.1.4.1.32307.1.0.20 /etc/snmp/passive_itsupervisor Input state changed - Active end traphandle.1.3.6.1.4.1.32307.1.0.21 /etc/snmp/passive_itsupervisor Należy pamiętać również aby w pliku snmptrapd.conf ustawić community identyczne jak w kontrolerze dla komunikatów trap (element koloru czerwonego). Skrypt passive_itsupervisor należy umieścić w katalogu /etc/snmp. Jeśli konieczna jest inna lokalizacja, należy również pamiętać o zmianie ścieżki w pliku snmptrapd.conf. Skrypt passive_itsupervisor po przetworzeniu komunikatu trap, wysyła dane do Nagiosa za pomocą narzędzia send_nsca z parametrem ścieżki do pliku konfiguracyjnego send_nsca.cfg, który powinien znajdować się w katalogu /etc. Jeśli jego lokalizacja jest inna należy również odpowiednio zmienić ścieżkę bezpośrednio w skrypcie passive_itupervisor. Ponieważ identyfikacja hostów i usług w monitorowaniu pasywnym opiera się na ich nazwach, ważne aby konfiguracja nazw była identyczna w kontrolerze jak i w plikach konfiguracyjnych Nagiosa. Jako nazwę hosta (pole host_name w sekcji define host w pliku itsupervisor.cfg) należy przyjąć nazwę parametru MIB SysName, konfigurowalną w zakładce SCADA / NMS kontrolera. Natomiast jako nazwy usług (pola service_description w sekcji define service w pliku itsupervisor.cfg) należy przyjąć nazwy czujników / wejść dwustanowych konfigurowalnych w zakładkach Sensors i Inputs kontrolera.
5. KONFIGURACJA KONTROLERA DO WSPÓŁPRACY Z NAGIOSEM Do prawidłowej współpracy kontrolera ITSupervisor z systemem Nagios, konieczna jest również odpowiednia konfiguracja parametrów kontrolera. Na rysunkach 2, 3 i 4 przedstawiono istotne parametry konfiguracyjne wraz z komentarzem. Agent SNMP musi być włączony Port agenta SNMP, pierwszy parametr komendy check_command w definicji usługi Port na którym nasłuchuje deamon snmptrapd, na ten port kontroler wysyła komunikaty trap Community do odczytu danych z kontrolera, drugi parametr komendy check_command w definicji usług Community dla komunikatów trap, występuje w pliku snmptrapd.conf przy monitorowaniu pasywnym Adres IP serwera gdzie działa deamon snmptrapd (Nagios), tam kierowane są komunikaty trap Przy monitorowaniu pasywnym należy ustawić identyczną nazwę hosta w sekcji define host plik itsupervisor.cfg Rys. 2. Konfiguracja parametrów protokołu SNMP do współpracy z systemem Nagios Przy monitorowaniu pasywnym muszą być aktywne powiadomienia Trap Przy monitorowaniu pasywnym należy ustawić identyczne nazwy usług w sekcji define service w pliku itsupervisor.cfg Rys. 3. Konfiguracja parametrów czujników do współpracy z systemem Nagios Przy monitorowaniu pasywnym muszą być aktywne powiadomienia Trap Przy monitorowaniu pasywnym należy ustawić identyczne nazwy usług w sekcji define service w pliku itsupervisor.cfg Rys. 4. Konfiguracja wejść dwustanowych do współpracy z systemem Nagios