🔍 Jak używać Nagios do monitorowania Twojego serwera

Efektywny monitoring serwera jest kluczowy dla zapewnienia stabilności i wysokiej dostępności usług. Nagios, jako jeden z najpopularniejszych systemów monitorujących, oferuje potężne narzędzia do śledzenia stanu serwerów, sieci i aplikacji. W tym kompleksowym przewodniku dowiesz się, jak zainstalować, skonfigurować i wykorzystać Nagios do monitorowania infrastruktury, wykrywania problemów zanim wpłyną na Twoich użytkowników oraz automatycznego powiadamiania właściwych osób w przypadku awarii.

⚡ Ekspresowe Podsumowanie:

  1. Nagios to zaawansowany system monitorowania pozwalający na śledzenie stanu serwerów, usług, aplikacji i infrastruktury sieciowej.
  2. Instalacja i konfiguracja Nagios Core obejmuje przygotowanie serwera, instalację wymaganych pakietów i konfigurację podstawowych ustawień.
  3. Monitorowanie serwerów i usług wymaga odpowiedniego skonfigurowania hostów, grup i usług w plikach konfiguracyjnych Nagios.
  4. System powiadomień Nagios umożliwia automatyczne alertowanie administratorów o problemach za pomocą e-maili, SMS-ów i innych kanałów komunikacji.

🗺️ Spis Treści - Twoja Mapa Drogowa


🔎 Co to jest Nagios i dlaczego warto go używać?

Nagios to jeden z najstarszych i najbardziej uznanych systemów monitorowania infrastruktury IT na świecie. Pierwotnie znany jako NetSaint, został stworzony przez Ethana Galstada i od tego czasu stał się standardem w monitorowaniu serwerów, usług sieciowych, aplikacji i infrastruktury.

Kluczowe funkcje Nagios:

  • Monitorowanie serwerów - śledzenie obciążenia CPU, zużycia pamięci, miejsca na dysku i innych parametrów
  • Monitorowanie usług - sprawdzanie dostępności i wydajności usług takich jak HTTP, SMTP, POP3, SSH, FTP
  • Monitorowanie urządzeń sieciowych - routery, przełączniki, firewalle
  • Zaawansowany system powiadomień - alerty przez e-mail, SMS, komunikatory
  • Eskalacja problemów - automatyczne przekazywanie alertów do odpowiednich osób
  • Raportowanie i wizualizacja - przejrzysty interfejs webowy i szczegółowe raporty
  • Rozszerzalność - tysiące dostępnych wtyczek i możliwość tworzenia własnych
  • Historia i trendy - śledzenie wydajności w czasie i przewidywanie problemów

Dlaczego warto używać Nagios?

1. Wczesne wykrywanie problemów

Jedną z największych zalet Nagios jest możliwość wykrywania problemów zanim wpłyną one na użytkowników końcowych. System może monitorować wiele parametrów jednocześnie i wyzwalać alarmy, gdy tylko przekroczą one zdefiniowane progi. Przykładowo, Nagios może wykryć, że pamięć operacyjna serwera osiąga krytyczny poziom, zanim doprowadzi to do spowolnienia lub awarii usług.

2. Kompleksowy monitoring

Nagios może monitorować praktycznie wszystkie aspekty infrastruktury IT:

  • Parametry systemowe: CPU, pamięć, dyski, procesy
  • Usługi sieciowe: HTTP, FTP, SMTP, POP3, IMAP, SSH
  • Zasoby sieciowe: wykorzystanie łącza, opóźnienia, utrata pakietów
  • Aplikacje: bazy danych, serwery aplikacji, systemy biznesowe

3. Elastyczność i rozszerzalność

Dzięki architekturze wtyczek Nagios można dostosować do praktycznie każdego środowiska IT:

  • NRPE (Nagios Remote Plugin Executor) - do monitorowania zdalnych hostów
  • Check_MK - rozszerzenie ułatwiające konfigurację i zwiększające wydajność
  • Tysiące gotowych wtyczek dostępnych w repozytorium społeczności
  • Możliwość pisania własnych wtyczek w dowolnym języku

4. Centralne zarządzanie i widoczność

Nagios zapewnia scentralizowany widok całej infrastruktury:

  • Dashboardy statusu - szybki przegląd stanu wszystkich monitorowanych elementów
  • Mapa topologii - wizualizacja zależności między komponentami
  • Historia zdarzeń - śledzenie problemów i ich rozwiązań w czasie
  • Raporty dostępności - statystyki dostępności usług i systemów

✨ Pro Tip: Choć istnieją nowsze systemy monitorowania (jak Prometheus, Zabbix czy Grafana), Nagios wciąż pozostaje popularny ze względu na stabilność, rozbudowaną dokumentację i ogromną bazę wtyczek. Dla wielu administratorów jest on "złotym standardem", z którym porównywane są inne rozwiązania.

🛠️ Instalacja i konfiguracja Nagios Core

Instalacja Nagios Core wymaga pewnej wiedzy technicznej, ale krok po kroku proces jest stosunkowo prosty. Poniżej znajdziesz instrukcje dla najpopularniejszych dystrybucji Linux.

Przygotowanie do instalacji

Przed rozpoczęciem instalacji upewnij się, że Twój serwer spełnia minimalne wymagania:

  • System operacyjny: Linux (preferowane Ubuntu, Debian, CentOS)
  • RAM: Minimum 2GB (zalecane 4GB lub więcej)
  • CPU: Co najmniej 2 rdzenie
  • Dysk: Minimum 20GB wolnego miejsca
  • Stały adres IP
  • Uprawnienia root lub sudo

Instalacja Nagios Core na Ubuntu/Debian

# Aktualizacja systemu
sudo apt update
sudo apt upgrade -y

# Instalacja wymaganych pakietów
sudo apt install -y build-essential apache2 php libapache2-mod-php php-gd libgd-dev unzip curl

# Tworzenie użytkownika i grupy Nagios
sudo useradd nagios
sudo groupadd nagcmd
sudo usermod -a -G nagcmd nagios
sudo usermod -a -G nagcmd www-data

# Pobieranie najnowszej wersji Nagios Core
cd /tmp
curl -L -O https://github.com/NagiosEnterprises/nagioscore/releases/download/nagios-4.4.6/nagios-4.4.6.tar.gz
tar xzf nagios-4.4.6.tar.gz
cd nagios-4.4.6

# Kompilacja i instalacja Nagios
./configure --with-httpd-conf=/etc/apache2/sites-available
make all
sudo make install
sudo make install-init
sudo make install-commandmode
sudo make install-config
sudo make install-webconf

# Aktywacja modułu rewrite i CGI w Apache
sudo a2enmod rewrite
sudo a2enmod cgi

# Tworzenie użytkownika dla interfejsu webowego
sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

# Restart Apache
sudo systemctl restart apache2

# Pobieranie i instalacja Nagios Plugins
cd /tmp
curl -L -O https://github.com/nagios-plugins/nagios-plugins/releases/download/release-2.3.3/nagios-plugins-2.3.3.tar.gz
tar xzf nagios-plugins-2.3.3.tar.gz
cd nagios-plugins-2.3.3
./configure --with-nagios-user=nagios --with-nagios-group=nagios
make
sudo make install

# Konfiguracja Nagios jako usługi systemowej
sudo systemctl enable nagios
sudo systemctl start nagios

# Sprawdzenie statusu
sudo systemctl status nagios

Instalacja Nagios Core na CentOS/RHEL

# Aktualizacja systemu
sudo yum update -y

# Instalacja wymaganych pakietów
sudo yum install -y gcc glibc glibc-common wget httpd php gd gd-devel perl perl-devel perl-Net-SNMP make gettext automake autoconf openssl-devel net-snmp net-snmp-utils epel-release

# Instalacja dodatkowych pakietów z EPEL
sudo yum install -y perl-Net-SNMP

# Tworzenie użytkownika i grupy Nagios
sudo useradd nagios
sudo groupadd nagcmd
sudo usermod -a -G nagcmd nagios
sudo usermod -a -G nagcmd apache

# Pobieranie najnowszej wersji Nagios Core
cd /tmp
curl -L -O https://github.com/NagiosEnterprises/nagioscore/releases/download/nagios-4.4.6/nagios-4.4.6.tar.gz
tar xzf nagios-4.4.6.tar.gz
cd nagios-4.4.6

# Kompilacja i instalacja Nagios
./configure --with-httpd-conf=/etc/httpd/conf.d
make all
sudo make install
sudo make install-init
sudo make install-commandmode
sudo make install-config
sudo make install-webconf

# Tworzenie użytkownika dla interfejsu webowego
sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

# Konfiguracja zapory sieciowej
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --reload

# Włączanie i uruchamianie Apache
sudo systemctl enable httpd
sudo systemctl start httpd

# Pobieranie i instalacja Nagios Plugins
cd /tmp
curl -L -O https://github.com/nagios-plugins/nagios-plugins/releases/download/release-2.3.3/nagios-plugins-2.3.3.tar.gz
tar xzf nagios-plugins-2.3.3.tar.gz
cd nagios-plugins-2.3.3
./configure --with-nagios-user=nagios --with-nagios-group=nagios
make
sudo make install

# Konfiguracja SELinux (opcjonalnie)
sudo setsebool -P httpd_can_network_connect 1
sudo chcon -R -t httpd_sys_content_t /usr/local/nagios/sbin/
sudo chcon -R -t httpd_sys_content_t /usr/local/nagios/share/

# Konfiguracja Nagios jako usługi systemowej
sudo systemctl enable nagios
sudo systemctl start nagios

# Sprawdzenie statusu
sudo systemctl status nagios

Pierwsze logowanie do interfejsu Nagios

Po zakończeniu instalacji możesz zalogować się do interfejsu webowego Nagios:

  1. Otwórz przeglądarkę i przejdź do http://adres-ip-serwera/nagios
  2. Wprowadź nazwę użytkownika nagiosadmin i hasło, które ustawiłeś podczas instalacji
  3. Powinieneś zobaczyć główny dashboard Nagios

Uwaga: Ze względów bezpieczeństwa zalecane jest skonfigurowanie HTTPS dla interfejsu Nagios. Możesz użyć Let's Encrypt do uzyskania darmowego certyfikatu SSL.

✨ Pro Tip: Po instalacji Nagios monitoruje tylko serwer lokalny. W kolejnych krokach musisz skonfigurować monitoring dodatkowych serwerów i usług, aby w pełni wykorzystać możliwości systemu.

📋 Podstawowa konfiguracja Nagios

Konfiguracja Nagios opiera się na plikach tekstowych, które definiują monitorowane hosty, usługi, kontakty i inne elementy. Pliki te znajdują się w katalogu /usr/local/nagios/etc/.

Struktura plików konfiguracyjnych

Głównym plikiem konfiguracyjnym jest nagios.cfg, który określa ogólne ustawienia i wskazuje na inne pliki konfiguracyjne. Standardowa struktura obejmuje:

  • /usr/local/nagios/etc/nagios.cfg - główna konfiguracja
  • /usr/local/nagios/etc/objects/commands.cfg - definicje komend
  • /usr/local/nagios/etc/objects/contacts.cfg - kontakty i grupy kontaktów
  • /usr/local/nagios/etc/objects/timeperiods.cfg - okresy czasu
  • /usr/local/nagios/etc/objects/templates.cfg - szablony dla hostów i usług
  • /usr/local/nagios/etc/objects/localhost.cfg - definicje hosta lokalnego

Dodawanie nowego serwera do monitorowania

Aby dodać nowy serwer do monitoringu, należy utworzyć plik konfiguracyjny dla tego serwera. Przykładowo, dla serwera o nazwie "webserver":

sudo nano /usr/local/nagios/etc/objects/webserver.cfg

Treść pliku:

define host {
    use                     linux-server    ; Użycie szablonu linux-server
    host_name               webserver       ; Nazwa hosta
    alias                   Web Server      ; Opis
    address                 192.168.1.10    ; Adres IP serwera
    max_check_attempts      5               ; Liczba prób sprawdzenia
    check_period            24x7            ; Kiedy sprawdzać
    notification_interval   30              ; Jak często powiadamiać (min)
    notification_period     24x7            ; Kiedy powiadamiać
    notification_options    d,u,r           ; Powiadomienia dla: down, unreachable, recovery
    contact_groups          admins          ; Grupa kontaktów do powiadomień
}

# Definicja usługi HTTP
define service {
    use                     generic-service
    host_name               webserver
    service_description     HTTP
    check_command           check_http
    notifications_enabled   1
    check_interval          5               ; Sprawdzaj co 5 minut
    retry_interval          1               ; Ponów co 1 minutę w przypadku błędu
}

# Definicja usługi SSH
define service {
    use                     generic-service
    host_name               webserver
    service_description     SSH
    check_command           check_ssh
    notifications_enabled   1
}

# Monitorowanie obciążenia CPU
define service {
    use                     generic-service
    host_name               webserver
    service_description     CPU Load
    check_command           check_nrpe!check_load
    notifications_enabled   1
}

# Monitorowanie dysku
define service {
    use                     generic-service
    host_name               webserver
    service_description     Disk Space
    check_command           check_nrpe!check_disk
    notifications_enabled   1
}

Następnie musisz dodać ten plik do głównej konfiguracji Nagios:

sudo nano /usr/local/nagios/etc/nagios.cfg

Dodaj linię:

cfg_file=/usr/local/nagios/etc/objects/webserver.cfg

Konfiguracja kontaktów i powiadomień

Aby otrzymywać powiadomienia o problemach, musisz skonfigurować kontakty:

sudo nano /usr/local/nagios/etc/objects/contacts.cfg

Przykładowa konfiguracja:

define contact {
    contact_name            nagiosadmin
    use                     generic-contact
    alias                   Nagios Admin
    email                   your-email@example.com
    service_notification_commands   notify-service-by-email
    host_notification_commands      notify-host-by-email
}

define contactgroup {
    contactgroup_name       admins
    alias                   Nagios Administrators
    members                 nagiosadmin
}

Sprawdzanie konfiguracji i restart Nagios

Po wprowadzeniu zmian w konfiguracji, zawsze sprawdź jej poprawność:

sudo /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

Jeśli konfiguracja jest poprawna, zrestartuj Nagios:

sudo systemctl restart nagios

✨ Pro Tip: Przechowuj pliki konfiguracyjne Nagios w repozytorium git lub innym systemie kontroli wersji. Pozwoli to na śledzenie zmian i łatwe cofanie do działającej konfiguracji w przypadku problemów.

🖥️ Monitorowanie zdalnych serwerów z Nagios

Aby skutecznie monitorować zdalne serwery, potrzebujesz zainstalować agenta lub wykorzystać wtyczki do monitorowania przez sieć. Dwa najpopularniejsze podejścia to:

  1. NRPE (Nagios Remote Plugin Executor) - agent instalowany na zdalnym serwerze
  2. Monitoring przez sieć - sprawdzanie usług dostępnych z zewnątrz bez agenta

Konfiguracja NRPE dla zdalnych serwerów Linux

Instalacja NRPE na monitorowanym serwerze (Ubuntu/Debian):

# Instalacja NRPE i wtyczek
sudo apt update
sudo apt install -y nagios-nrpe-server nagios-plugins

# Konfiguracja NRPE
sudo nano /etc/nagios/nrpe.cfg

# Zmień linię allowed_hosts by uwzględnić adres IP serwera Nagios:
allowed_hosts=127.0.0.1,192.168.1.5  # 192.168.1.5 to adres IP serwera Nagios

# Restart usługi NRPE
sudo systemctl restart nagios-nrpe-server
sudo systemctl enable nagios-nrpe-server

# Sprawdzenie, czy NRPE nasłuchuje
sudo netstat -tlpn | grep nrpe

Instalacja NRPE na monitorowanym serwerze (CentOS/RHEL):

# Instalacja EPEL i NRPE
sudo yum install -y epel-release
sudo yum install -y nrpe nagios-plugins-all

# Konfiguracja NRPE
sudo nano /etc/nagios/nrpe.cfg

# Zmień linię allowed_hosts by uwzględnić adres IP serwera Nagios:
allowed_hosts=127.0.0.1,192.168.1.5  # 192.168.1.5 to adres IP serwera Nagios

# Konfiguracja firewall
sudo firewall-cmd --permanent --add-port=5666/tcp
sudo firewall-cmd --reload

# Restart usługi NRPE
sudo systemctl restart nrpe
sudo systemctl enable nrpe

# Sprawdzenie, czy NRPE nasłuchuje
sudo netstat -tlpn | grep nrpe

Instalacja wtyczki NRPE na serwerze Nagios:

cd /tmp
curl -L -O https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe-4.0.3/nrpe-4.0.3.tar.gz
tar xzf nrpe-4.0.3.tar.gz
cd nrpe-4.0.3
./configure --enable-command-args
make check_nrpe
sudo make install-plugin

Testowanie połączenia NRPE:

/usr/local/nagios/libexec/check_nrpe -H 192.168.1.10

Powinieneś zobaczyć wersję NRPE, co oznacza, że połączenie działa.

Dodanie komend NRPE do konfiguracji Nagios:

sudo nano /usr/local/nagios/etc/objects/commands.cfg

Dodaj definicję komendy:

define command {
    command_name    check_nrpe
    command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}

Konfiguracja monitorowania przez sieć

Dla niektórych usług nie potrzebujesz agenta - możesz monitorować je bezpośrednio przez sieć.

Przykłady komend do monitorowania sieciowego:

# Sprawdzenie dostępności HTTP
define command {
    command_name    check_http_site
    command_line    $USER1$/check_http -H $ARG1$ -u $ARG2$ -s $ARG3$
}

# Sprawdzenie bazy danych MySQL
define command {
    command_name    check_mysql
    command_line    $USER1$/check_mysql -H $HOSTADDRESS$ -u $ARG1$ -p $ARG2$
}

# Sprawdzenie czasu odpowiedzi PING
define command {
    command_name    check_ping
    command_line    $USER1$/check_ping -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$ -p 5
}

Użycie tych komend w definicji usługi:

# Monitorowanie strony WWW
define service {
    use                     generic-service
    host_name               webserver
    service_description     Website Status
    check_command           check_http_site!www.example.com!/!Welcome
}

# Monitorowanie PING
define service {
    use                     generic-service
    host_name               webserver
    service_description     PING
    check_command           check_ping!100.0,20%!500.0,60%
}

✨ Pro Tip: Dla większych środowisk rozważ użycie narzędzi do automatyzacji konfiguracji Nagios, takich jak NagiosQL lub Centreon. Pozwalają one na zarządzanie konfiguracją przez interfejs webowy, co znacznie ułatwia pracę z dużą liczbą hostów i usług.

📊 Monitorowanie zasobów i usług serwera

Nagios oferuje szerokie możliwości monitorowania różnych aspektów serwerów i usług. Poniżej przedstawiamy najważniejsze elementy, które warto monitorować.

Monitorowanie podstawowych parametrów systemowych

1. Obciążenie CPU

define service {
    use                    generic-service
    host_name              webserver
    service_description    CPU Load
    check_command          check_nrpe!check_load
}

Konfiguracja na kliencie NRPE (/etc/nagios/nrpe.cfg):

command[check_load]=/usr/lib/nagios/plugins/check_load -w 5,4,3 -c 10,8,6

Wartości -w (warning) i -c (critical) określają progi dla średniego obciążenia w ciągu 1, 5 i 15 minut.

2. Wykorzystanie pamięci

define service {
    use                    generic-service
    host_name              webserver
    service_description    Memory Usage
    check_command          check_nrpe!check_mem
}

Konfiguracja na kliencie NRPE:

command[check_mem]=/usr/lib/nagios/plugins/check_mem.pl -w 80 -c 90

Wartości określają procent wykorzystania pamięci dla stanów warning (80%) i critical (90%).

3. Miejsce na dysku

define service {
    use                    generic-service
    host_name              webserver
    service_description    Disk Space
    check_command          check_nrpe!check_disk
}

Konfiguracja na kliencie NRPE:

command[check_disk]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /

Monitoruje wykorzystanie partycji głównej z ostrzeżeniem przy 80% zapełnienia (20% wolnego miejsca) i stanem krytycznym przy 90% zapełnienia.

Monitorowanie kluczowych usług

1. Serwer HTTP (Apache/Nginx)

define service {
    use                    generic-service
    host_name              webserver
    service_description    HTTP Service
    check_command          check_http
}

Dla bardziej zaawansowanego monitoringu HTTP:

define service {
    use                    generic-service
    host_name              webserver
    service_description    Website Content
    check_command          check_http!-u /index.html -s "Welcome to Example"
}

2. Baza danych MySQL/MariaDB

define service {
    use                    generic-service
    host_name              dbserver
    service_description    MySQL Service
    check_command          check_nrpe!check_mysql
}

Konfiguracja na kliencie NRPE:

command[check_mysql]=/usr/lib/nagios/plugins/check_mysql -H localhost -u nagios -p password

3. Usługa SSH

define service {
    use                    generic-service
    host_name              webserver
    service_description    SSH Service
    check_command          check_ssh
}

Monitorowanie procesów i aplikacji

1. Sprawdzanie procesów

define service {
    use                    generic-service
    host_name              webserver
    service_description    Apache Process
    check_command          check_nrpe!check_apache_proc
}

Konfiguracja na kliencie NRPE:

command[check_apache_proc]=/usr/lib/nagios/plugins/check_procs -c 1: -w 1: -C apache2

Sprawdza, czy działa co najmniej jeden proces Apache. Status critical jeśli nie ma procesów, warning jeśli jest ich mniej niż oczekiwano.

2. Monitorowanie określonego portu

define service {
    use                    generic-service
    host_name              appserver
    service_description    App Port 8080
    check_command          check_tcp!8080
}

Monitorowanie wydajności i czasu odpowiedzi

1. Czas odpowiedzi strony WWW

define service {
    use                    generic-service
    host_name              webserver
    service_description    Website Response Time
    check_command          check_http!-w 2 -c 5 -u /index.html
}

Parametry -w i -c określają próg czasowy w sekundach dla warning i critical.

2. Opóźnienie sieci (latency)

define service {
    use                    generic-service
    host_name              webserver
    service_description    Network Latency
    check_command          check_ping!100.0,20%!500.0,60%
}

Pierwszy argument określa próg warning (100ms, 20% packet loss), drugi argument to próg critical (500ms, 60% packet loss).

Monitorowanie logów systemowych

Aby monitorować logi, możesz użyć wtyczki check_logfiles:

define service {
    use                    generic-service
    host_name              webserver
    service_description    Error Logs
    check_command          check_nrpe!check_error_logs
}

Konfiguracja na kliencie NRPE:

command[check_error_logs]=/usr/lib/nagios/plugins/check_logfiles --logfile /var/log/syslog --pattern 'error|critical|failed' --criticalpattern 'kernel panic'

✨ Pro Tip: Nie przesadzaj z częstotliwością sprawdzania usług - zbyt częste sprawdzanie może niepotrzebnie obciążać monitorowane serwery. Dla większości usług wystarczy sprawdzanie co 5-10 minut, a dla mniej krytycznych nawet co 30 minut.

🔔 Konfiguracja powiadomień i alertów

Jedną z najważniejszych funkcji Nagios jest system powiadomień, który informuje administratorów o problemach z monitorowanymi usługami i serwerami.

Podstawowa konfiguracja powiadomień e-mail

Aby skonfigurować powiadomienia e-mail, musisz najpierw upewnić się, że serwer ma prawidłowo skonfigurowany MTA (Mail Transfer Agent, np. Postfix lub Sendmail).

1. Sprawdzenie definicji komend powiadomień

Standardowe komendy powiadomień są zdefiniowane w pliku /usr/local/nagios/etc/objects/commands.cfg:

define command {
    command_name    notify-host-by-email
    command_line    /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /usr/bin/mail -s "** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **" $CONTACTEMAIL$
}

define command {
    command_name    notify-service-by-email
    command_line    /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$\n" | /usr/bin/mail -s "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" $CONTACTEMAIL$
}

2. Konfiguracja kontaktów i grup kontaktów

W pliku /usr/local/nagios/etc/objects/contacts.cfg zdefiniuj kontakty i grupy kontaktów:

define contact {
    contact_name            sysadmin
    use                     generic-contact
    alias                   System Administrator
    email                   sysadmin@example.com
    service_notification_commands   notify-service-by-email
    host_notification_commands      notify-host-by-email
    service_notification_period     24x7
    host_notification_period        24x7
    service_notification_options    w,u,c,r,f
    host_notification_options       d,u,r,f
}

define contactgroup {
    contactgroup_name       sysadmins
    alias                   System Administrators
    members                 sysadmin
}

Opcje powiadomień oznaczają:

  • Dla usług: w (warning), u (unknown), c (critical), r (recovery), f (flapping)
  • Dla hostów: d (down), u (unreachable), r (recovery), f (flapping)

3. Przypisanie kontaktów do hostów i usług

Dodaj odpowiednie grupy kontaktów do hostów i usług:

define host {
    use                    linux-server
    host_name              webserver
    alias                  Web Server
    address                192.168.1.10
    contact_groups         sysadmins
}

define service {
    use                    generic-service
    host_name              webserver
    service_description    HTTP
    check_command          check_http
    contact_groups         sysadmins
}

Konfiguracja powiadomień SMS

Aby skonfigurować powiadomienia SMS, możesz użyć bramki SMS lub usługi zewnętrznej:

1. Definicja komendy powiadomień SMS

define command {
    command_name    notify-host-by-sms
    command_line    /usr/local/bin/send_sms.sh "$CONTACTPAGER$" "Host $HOSTNAME$ is $HOSTSTATE$ at $SHORTDATETIME$"
}

define command {
    command_name    notify-service-by-sms
    command_line    /usr/local/bin/send_sms.sh "$CONTACTPAGER$" "Service $SERVICEDESC$ on $HOSTNAME$ is $SERVICESTATE$ at $SHORTDATETIME$"
}

2. Skrypt do wysyłania SMS-ów (przykład z curl i bramką SMS)

Utwórz plik /usr/local/bin/send_sms.sh:

#!/bin/bash
# Skrypt wysyłający SMS przez API
# $1 - numer telefonu
# $2 - treść wiadomości

API_KEY="twój_klucz_api"
API_URL="https://api.sms-service.com/send"

curl -X POST \
  -d "apikey=$API_KEY" \
  -d "to=$1" \
  -d "message=$2" \
  "$API_URL"

Nie zapomnij nadać uprawnień wykonawczych:

sudo chmod +x /usr/local/bin/send_sms.sh

3. Aktualizacja kontaktów o numery telefonów

define contact {
    contact_name            sysadmin
    use                     generic-contact
    alias                   System Administrator
    email                   sysadmin@example.com
    pager                   +48123456789
    service_notification_commands   notify-service-by-email,notify-service-by-sms
    host_notification_commands      notify-host-by-email,notify-host-by-sms
    service_notification_period     24x7
    host_notification_period        24x7
    service_notification_options    w,u,c,r
    host_notification_options       d,u,r
}

Konfiguracja powiadomień przez Slack lub Discord

Możesz również skonfigurować powiadomienia przez komunikatory jak Slack czy Discord:

1. Skrypt do wysyłania powiadomień na Slack

Utwórz plik /usr/local/bin/notify_slack.sh:

#!/bin/bash
# Skrypt wysyłający powiadomienia na Slack
# $1 - typ powiadomienia (host/service)
# $2-$n - parametry powiadomienia

WEBHOOK_URL="https://hooks.slack.com/services/XXXXXXXXX/YYYYYYYYY/ZZZZZZZZZZZZZZZZZZZZZZZZ"
TYPE="$1"
shift

if [ "$TYPE" == "host" ]; then
    NOTIFICATION_TYPE="$1"
    HOSTNAME="$2"
    HOSTSTATE="$3"
    HOSTADDRESS="$4"

    MESSAGE="*Host Alert*: $HOSTNAME is $HOSTSTATE\nAddress: $HOSTADDRESS\nType: $NOTIFICATION_TYPE"
else
    NOTIFICATION_TYPE="$1"
    SERVICEDESC="$2"
    HOSTNAME="$3"
    SERVICESTATE="$4"
    SERVICEOUTPUT="$5"

    MESSAGE="*Service Alert*: $SERVICEDESC on $HOSTNAME is $SERVICESTATE\nType: $NOTIFICATION_TYPE\nOutput: $SERVICEOUTPUT"
fi

curl -X POST \
  -H "Content-type: application/json" \
  --data "{\"text\":\"$MESSAGE\"}" \
  "$WEBHOOK_URL"

Nadaj uprawnienia wykonawcze:

sudo chmod +x /usr/local/bin/notify_slack.sh

2. Definicja komend powiadomień Slack

define command {
    command_name    notify-host-by-slack
    command_line    /usr/local/bin/notify_slack.sh host "$NOTIFICATIONTYPE$" "$HOSTNAME$" "$HOSTSTATE$" "$HOSTADDRESS$"
}

define command {
    command_name    notify-service-by-slack
    command_line    /usr/local/bin/notify_slack.sh service "$NOTIFICATIONTYPE$" "$SERVICEDESC$" "$HOSTNAME$" "$SERVICESTATE$" "$SERVICEOUTPUT$"
}

3. Aktualizacja kontaktów o powiadomienia Slack

define contact {
    contact_name            slackbot
    alias                   Slack Notifications
    service_notification_commands   notify-service-by-slack
    host_notification_commands      notify-host-by-slack
    service_notification_period     24x7
    host_notification_period        24x7
    service_notification_options    w,u,c,r
    host_notification_options       d,u,r
}

define contactgroup {
    contactgroup_name       slack-alerts
    alias                   Slack Alert Channel
    members                 slackbot
}

Eskalacja powiadomień

Eskalacja pozwala na zwiększanie intensywności powiadomień w miarę trwania problemu:

# Eskalacja dla usługi HTTP - najpierw powiadom standardowego administratora,
# po 30 minutach dodaj kierownika, po 60 minutach powiadom dyrektora IT
define serviceescalation {
    host_name               webserver
    service_description     HTTP
    first_notification      2
    last_notification       0
    notification_interval   30
    contact_groups          sysadmins
}

define serviceescalation {
    host_name               webserver
    service_description     HTTP
    first_notification      4
    last_notification       6
    notification_interval   30
    contact_groups          managers
}

define serviceescalation {
    host_name               webserver
    service_description     HTTP
    first_notification      7
    last_notification       0
    notification_interval   60
    contact_groups          directors
}

✨ Pro Tip: Unikaj nadmiernej liczby powiadomień, która może prowadzić do "zmęczenia alertami" i ignorowania ważnych powiadomień. Skonfiguruj powiadomienia tylko dla krytycznych usług i hostów, a także używaj okresów powiadomień, aby unikać budzenia ludzi w środku nocy dla nieistotnych problemów.

📱 Rozszerzenia i wtyczki do Nagios

Jedną z największych zalet Nagios jest jego rozszerzalność poprzez wtyczki i dodatki. Poniżej przedstawiamy niektóre z najpopularniejszych rozszerzeń.

Nagios Exchange - repozytorium wtyczek

Nagios Exchange to oficjalne repozytorium wtyczek, gdzie możesz znaleźć tysiące dodatków do monitorowania praktycznie wszystkiego.

Najpopularniejsze wtyczki

1. Check_MK

Check_MK to kompleksowe rozszerzenie, które znacznie upraszcza konfigurację Nagios i zwiększa jego wydajność.

# Instalacja Check_MK (Ubuntu/Debian)
sudo apt install -y check-mk-raw-2.0.0p9

# Tworzenie nowej instancji
sudo su - cmk
check_mk -v

Główne zalety Check_MK:

  • Automatyczne wykrywanie usług
  • Bardziej wydajny silnik sprawdzania
  • Uproszczona konfiguracja
  • Nowoczesny interfejs webowy

2. PNP4Nagios

PNP4Nagios to dodatek do tworzenia wykresów z danych wydajnościowych zebranych przez Nagios.

# Instalacja PNP4Nagios (Ubuntu/Debian)
sudo apt install -y pnp4nagios

# Konfiguracja integracji z Nagios
sudo nano /usr/local/nagios/etc/nagios.cfg

# Dodaj linię:
process_performance_data=1

# Skonfiguruj komendy do przetwarzania danych wydajnościowych:
sudo nano /usr/local/nagios/etc/objects/commands.cfg

# Dodaj definicje:
define command {
    command_name    process-host-perfdata
    command_line    /usr/bin/printf "%t|%s|%h|%a|%e\n" > /usr/local/pnp4nagios/var/host-perfdata.dump
}

define command {
    command_name    process-service-perfdata
    command_line    /usr/bin/printf "%t|%s|%h|%a|%e\n" > /usr/local/pnp4nagios/var/service-perfdata.dump
}

3. Nagiosgraph

Nagiosgraph to kolejne narzędzie do generowania wykresów wydajnościowych.

# Pobranie i instalacja Nagiosgraph
cd /tmp
wget https://sourceforge.net/projects/nagiosgraph/files/nagiosgraph/1.5.2/nagiosgraph-1.5.2.tar.gz
tar xzf nagiosgraph-1.5.2.tar.gz
cd nagiosgraph-1.5.2
./install.pl --layout standalone --prefix /usr/local/nagiosgraph

4. Nagstamon

Nagstamon to aplikacja desktopowa, która wyświetla status Nagios na pasku zadań, umożliwiając szybki podgląd stanu monitorowanych usług bez konieczności otwierania interfejsu webowego.

Możesz pobrać ją z oficjalnej strony: Nagstamon

Konfiguracja wtyczek niestandardowych

Możesz tworzyć własne wtyczki do monitorowania specyficznych aspektów Twojej infrastruktury. Oto prosty przykład własnej wtyczki w bash:

Utwórz plik /usr/local/nagios/libexec/check_custom_service.sh:

#!/bin/bash
# Przykładowa wtyczka do sprawdzania własnej usługi

# Sprawdź, czy usługa jest uruchomiona
SERVICE_STATUS=$(systemctl status myservice | grep "Active:" | awk '{print $2}')

if [[ "$SERVICE_STATUS" == "active" ]]; then
    echo "OK - Usługa myservice działa prawidłowo"
    exit 0
elif [[ "$SERVICE_STATUS" == "inactive" ]]; then
    echo "CRITICAL - Usługa myservice nie jest uruchomiona"
    exit 2
else
    echo "WARNING - Nieznany stan usługi myservice: $SERVICE_STATUS"
    exit 1
fi

Nadaj uprawnienia wykonawcze:

sudo chmod +x /usr/local/nagios/libexec/check_custom_service.sh

Dodaj definicję komendy:

define command {
    command_name    check_custom_service
    command_line    $USER1$/check_custom_service.sh
}

I użyj w definicji usługi:

define service {
    use                    generic-service
    host_name              appserver
    service_description    Custom Service Status
    check_command          check_custom_service
}

Wtyczki do monitorowania specyficznych platform

1. Monitoring aplikacji Java (JMX)

# Instalacja wtyczki check_jmx
cd /usr/local/nagios/libexec
wget https://github.com/nagios-plugins-jmx/check_jmx/releases/download/jmx-2.0.0/check_jmx-2.0.0.jar

Definicja komendy:

define command {
    command_name    check_jmx
    command_line    java -jar $USER1$/check_jmx-2.0.0.jar -U service:jmx:rmi:///jndi/rmi://$HOSTADDRESS$:9999/jmxrmi -O java.lang:type=Memory -A HeapMemoryUsage -K used -w 800000000 -c 900000000
}

2. Monitoring kontenerów Docker

# Instalacja wtyczki check_docker
cd /usr/local/nagios/libexec
wget https://raw.githubusercontent.com/timdaman/check_docker/master/check_docker.py
chmod +x check_docker.py

Definicja komendy:

define command {
    command_name    check_docker_container
    command_line    $USER1$/check_docker.py container -n $ARG1$
}

✨ Pro Tip: Przy tworzeniu własnych wtyczek, zawsze pamiętaj o zwracaniu odpowiednich kodów wyjścia: 0 (OK), 1 (WARNING), 2 (CRITICAL), 3 (UNKNOWN) - Nagios używa tych kodów do określenia stanu monitorowanej usługi.

📈 Widoki i dashboardy w Nagios

Standardowy interfejs Nagios jest funkcjonalny, ale niezbyt nowoczesny. Na szczęście istnieją rozszerzenia, które znacznie poprawiają warstwę wizualną i użyteczność dashboardów.

Podstawowy interfejs Nagios Core

Domyślny interfejs Nagios zawiera kilka podstawowych widoków:

  • Tactical Overview - ogólny przegląd stanu monitorowanych hostów i usług
  • Service Detail - szczegółowy widok wszystkich monitorowanych usług
  • Host Detail - szczegółowy widok wszystkich monitorowanych hostów
  • Service Problems - lista usług w stanie innym niż OK
  • Host Problems - lista hostów w stanie innym niż UP
  • Network Map - mapa zależności między hostami

Konfiguracja mapy statusu

Mapa statusu pozwala na wizualizację monitorowanych hostów i ich relacji:

# Definicja obrazu mapy
define hostgroup {
    hostgroup_name      network-servers
    alias               Network Servers
    members             router,switch,firewall
}

# Konfiguracja dla statusmap.cgi
define hostextinfo {
    host_name           router
    icon_image          router.png
    icon_image_alt      Router
    statusmap_image     router.gd2
    2d_coords           100,100
    3d_coords           100,100,100
}

define hostextinfo {
    host_name           switch
    icon_image          switch.png
    icon_image_alt      Switch
    statusmap_image     switch.gd2
    2d_coords           200,100
    3d_coords           200,100,100
}

Nagios XI - płatne rozszerzenie z zaawansowanymi dashboardami

Nagios XI to komercyjne rozszerzenie Nagios Core, które oferuje znacznie bogatszy interfejs użytkownika, z możliwością tworzenia niestandardowych dashboardów.

Funkcje Nagios XI:

  • Konfigurowalne dashboardy z widgetami
  • Raportowanie wydajności
  • Zaawansowane widoki i wykresy
  • Zarządzanie konfiguracją przez interfejs web
  • Planowanie pojemności i trendy

Alternatywne interfejsy webowe

1. Thruk

Thruk to nowoczesny interfejs dla Nagios, który jest zgodny z różnymi silnikami monitorowania.

# Instalacja Thruk (Ubuntu/Debian)
sudo apt install -y thruk

# Konfiguracja połączenia z Nagios
sudo nano /etc/thruk/thruk_local.conf

# Dodaj konfigurację:
<Component Thruk::Backend>
    <peer>
        name    = Nagios Core
        type    = livestatus
        options = "backend=/var/cache/nagios3/livestatus.socket"
    </peer>
</Component>

2. NagVis

NagVis to narzędzie do tworzenia niestandardowych wizualizacji stanu monitorowanej infrastruktury:

# Instalacja NagVis
cd /tmp
wget https://github.com/NagVis/nagvis/releases/download/1.9.21/nagvis-1.9.21.tar.gz
tar xzf nagvis-1.9.21.tar.gz
cd nagvis-1.9.21
./install.sh

Podczas instalacji wybierz odpowiednie opcje, aby zintegrować NagVis z istniejącą instalacją Nagios.

3. Grafana z integracją Nagios

Grafana to potężne narzędzie do wizualizacji danych, które można zintegrować z Nagios:

  1. Zainstaluj Grafana:
    
    # Dodanie repozytorium Grafana
    sudo apt install -y apt-transport-https software-properties-common
    sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"
    wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
    sudo apt update
    sudo apt install -y grafana

Uruchomienie Grafana

sudo systemctl enable grafana-server sudo systemctl start grafana-server


2. Zainstaluj wtyczkę Nagios dla Grafana:
```bash
sudo grafana-cli plugins install briangann-nagios-panel
sudo systemctl restart grafana-server
  1. Dodaj źródło danych InfluxDB (jeśli używasz go do przechowywania danych Nagios)

Tworzenie niestandardowych widoków w Nagios Core

Nawet w standardowym Nagios Core możesz tworzyć niestandardowe widoki za pomocą CGI:

# Niestandardowy widok w cgi.cfg
define servicegroup {
    servicegroup_name        critical-services
    alias                    Critical Business Services
    members                  webserver,HTTP,dbserver,MySQL
}

Następnie możesz przeglądać tę grupę usług przez interfejs Nagios.

✨ Pro Tip: Dla większych organizacji warto rozważyć inwestycję w Nagios XI lub inne komercyjne rozwiązanie, które oferuje bardziej zaawansowany interfejs i możliwości raportowania. Oszczędność czasu administratorów szybko zrównoważy koszt licencji.

🏁 Podsumowanie - efektywne zarządzanie monitoringiem z Nagios

Nagios to potężne narzędzie do monitorowania, które może znacząco zwiększyć niezawodność i wydajność Twojej infrastruktury IT. Po wdrożeniu i odpowiedniej konfiguracji, zapewnia szeroki wgląd w stan serwerów, sieci i aplikacji, pomagając wykrywać problemy zanim wpłyną na użytkowników końcowych.

Kluczowe punkty do zapamiętania:

  1. Planowanie wdrożenia - Rozpocznij od identyfikacji krytycznych usług i serwerów, które wymagają monitorowania w pierwszej kolejności
  2. Stopniowe rozszerzanie - Zacznij od podstawowej konfiguracji i stopniowo dodawaj kolejne elementy monitoringu
  3. Regularna konserwacja - Utrzymuj Nagios i wtyczki zaktualizowane, oraz regularnie przeglądaj konfigurację
  4. Odpowiednie progi alertów - Ustaw realistyczne progi dla alertów, aby uniknąć fałszywych alarmów
  5. Dokumentacja - Prowadź szczegółową dokumentację Twojej konfiguracji Nagios, szczególnie niestandardowych wtyczek i ustawień

Najlepsze praktyki dla efektywnego monitoringu:

  • Monitoruj to, co najważniejsze - Skup się na usługach krytycznych dla biznesu
  • Unikaj nadmiernego monitorowania - Zbyt wiele alertów prowadzi do ich ignorowania
  • Wykorzystaj warstwy monitoringu - Od podstawowego (czy host odpowiada) po szczegółowy (jak szybko wykonuje się zapytanie SQL)
  • Ustanów procedury reagowania - Zdefiniuj jasne kroki postępowania w przypadku alarmów
  • Automatyzuj rutynowe działania - Wykorzystaj skrypty do rutynowych zadań konserwacyjnych
  • Regularnie analizuj trendy - Wykorzystaj dane historyczne do identyfikacji wzorców i przewidywania problemów

✅ Checklista wdrożeniowa Nagios:

  • [ ] Instalacja i podstawowa konfiguracja Nagios Core
  • [ ] Konfiguracja monitorowania serwerów lokalnych
  • [ ] Wdrożenie NRPE na zdalnych serwerach
  • [ ] Konfiguracja monitorowania kluczowych usług
  • [ ] Konfiguracja powiadomień (e-mail, SMS, komunikatory)
  • [ ] Instalacja dodatkowych wtyczek
  • [ ] Wdrożenie wizualizacji i dashboardów
  • [ ] Konfiguracja automatycznych raportów
  • [ ] Dokumentacja rozwiązania
  • [ ] Szkolenie zespołu

Dalsze kroki i rozwój

Po wdrożeniu podstawowej konfiguracji, możesz rozwinąć swój system monitoringu o:

  • Automatyzację konfiguracji - Przy użyciu narzędzi takich jak Ansible, Puppet czy Chef
  • Integrację z systemami ticketowymi - Automatyczne tworzenie zgłoszeń w przypadku problemów
  • Predictive monitoring - Wykorzystanie danych historycznych do przewidywania problemów
  • Business Process Monitoring - Monitorowanie całych procesów biznesowych, nie tylko pojedynczych usług
  • Monitorowanie aplikacji - Głębsze monitorowanie własnych aplikacji przez integrację API

Nagios, mimo że jest jednym z najstarszych systemów monitoringu, pozostaje popularnym wyborem dzięki swojej stabilności, elastyczności i ogromnej społeczności. Niezależnie od tego, czy zarządzasz małą infrastrukturą, czy dużym środowiskiem korporacyjnym, Nagios może być dostosowany do Twoich potrzeb, zapewniając skuteczny monitoring i szybkie wykrywanie problemów.

🚀 Potrzebujesz profesjonalnego hostingu dla Twoich serwerów?

Sprawdź ofertę hostingu w IQHost.pl

Nasze serwery VPS i dedykowane są idealne do hostowania Nagios i innych systemów monitoringu. Oferujemy wysoką wydajność, niezawodność i profesjonalne wsparcie techniczne.

Czy ten artykuł był pomocny?

Wróć do listy wpisów

Twoja strona WordPress działa wolno?

Sprawdź nasz hosting WordPress z ultraszybkimi dyskami NVMe i konfiguracją serwera zoptymalizowaną pod kątem wydajności. Doświadcz różnicy już dziś!

Sprawdź ofertę hostingu
30-dniowa gwarancja zwrotu pieniędzy