🔍 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:
- Nagios to zaawansowany system monitorowania pozwalający na śledzenie stanu serwerów, usług, aplikacji i infrastruktury sieciowej.
- Instalacja i konfiguracja Nagios Core obejmuje przygotowanie serwera, instalację wymaganych pakietów i konfigurację podstawowych ustawień.
- Monitorowanie serwerów i usług wymaga odpowiedniego skonfigurowania hostów, grup i usług w plikach konfiguracyjnych Nagios.
- 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:
- Otwórz przeglądarkę i przejdź do
http://adres-ip-serwera/nagios
- Wprowadź nazwę użytkownika
nagiosadmin
i hasło, które ustawiłeś podczas instalacji - 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:
- NRPE (Nagios Remote Plugin Executor) - agent instalowany na zdalnym serwerze
- 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:
- 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
- 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:
- Planowanie wdrożenia - Rozpocznij od identyfikacji krytycznych usług i serwerów, które wymagają monitorowania w pierwszej kolejności
- Stopniowe rozszerzanie - Zacznij od podstawowej konfiguracji i stopniowo dodawaj kolejne elementy monitoringu
- Regularna konserwacja - Utrzymuj Nagios i wtyczki zaktualizowane, oraz regularnie przeglądaj konfigurację
- Odpowiednie progi alertów - Ustaw realistyczne progi dla alertów, aby uniknąć fałszywych alarmów
- 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?
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