Nagios – monitoring wybranych usług na przykładzie przedstawionego scenariusza

 

 

 

Spis treści

Monitoring wybranych usług – wymagane oprogramowanie

Co serwer Nagios będzie monitorować ?

Instalacja serwera Nagios

Instalacja wymaganych pluginów

Uruchomienie usługi Nagios

Dostęp do serwera Nagios za pośrednictwem www

Przedstawiony scenariusz

Zaczynamy konfigurację

Główny plik konfiguracyjny Nagios

Szablon konfiguracji localhosta

Struktura drzewa plików konfiguracyjnych

Zastosowane pluginy

Definicja poleceń w pliku commands

Monitoring zdalnej maszyny (Linux)

Instalacja agenta NRPE

Test połączenia pomiędzy serwerem Nagios, a agentem NRPE

Konfiguracja agenta NRPE

Konfiguracja argumentów – co ma być wykonywane

Konfiguracja dyrektyw NRPE

Test poprawnego działania pluginów na serwerze monitorowanym

Liczba zalogowanych użytkowników

Obciążenie CPU

Test poprawnego działania skryptów na serwerze monitorującym (serwer Nagios)

Liczba zalogowanych użytkowników

Wykorzystanie przestrzeni volumentów / dysków

Liczba uruchomionych procesów

Plik konfiguracyjny

Monitoring pozostałych maszyn (Linux)

Monitoring urządzeń sieciowych (Mikrotik)

Pliki konfiguracyjne

Wykorzystanie pamięci flash

Wykorzystanie CPU

Monitoring pozostałych urządzeń

Plik konfiguracyjny

Monitoring protokołem SNMP maszyny z systemem operacyjnym Windows

Instalacja wymaganych pakietów

Plik konfiguracyjny

Wymagana usługa SNMP Service w systemie Windows

Jakie procesy są uruchomione ?

Obciążenie CPU

Wykorzystanie volumenów

Wykorzystanie pamięci RAM

Obciążenie interfejsu sieciowego

Prezentacja wizualna

Map

Hosts

Services

Host Groups

Host Groups Summary

Host Groups Grid

Service Groups

Service Groups Summary

Service Groups Grid

Problems Services

Pliki konfiguracyjne do pobrania

 

 

 

 

Monitoring wybranych usług – wymagane oprogramowanie

 

1. Serwer Nagios – system operacyjny LINUX dystrybucja CENTOS 7 kompilacja (1708)

 

2. Wykorzystane pakiety zainstalowane oprogramowaniem YUM:

 

nagios (wersja 4.3.4)

nagios-selinux (wersja 4.3.4)

nagios-plugins (wersja 2.2.1)

nagios-plugins-ping (wersja 2.2.1)

nagios-plugins-load (wersja 2.2.1)

nagios-plugins-users (wersja 2.2.1)

nagios-plugins-http (wersja 2.2.1)

nagios-plugins-disk (wersja 2.2.1)

nagios-plugins-ssh (wersja 2.2.1)

nagios-plugins-swap (wersja 2.2.1)

nagios-plugins-procs (wersja 2.2.1)

nagios-plugins-nrpe (wersja 3.2.0)

perl-Switch (wersja 2.16)

perl-Net-SNMP (wersja 6.0.1)

perl-B-Utils (wersja 0.21)

net-snmp (wersja 5.7.2)

net-snmp-utils (wersja 5.7.2)

 

+ zależności

 

3. Pluginy dodatkowe wykorzystujące protokół SNMP pobrane z serwisu https://exchange.nagios.org/directory/Plugins/

 

 

Co serwer Nagios będzie monitorować ?

 

1. Serwer Linux (wykorzystując moduł NRPE)

- dostępność hosta (poleceniem ping)

- obciążenie CPU

- liczba zalogowanych użytkowników

- stan usługi www

- wykorzystanie przestrzeni wolumenów

- stan usługi ssh

- wykorzystanie przestrzeni swap

- liczba procesów w tym procesy „zombie”

- stan usługi rsyslog

 

2. Rutery (wykorzystując protokół SNMP)

- zajętość pamięci flash

- obciążenie CPU

 

3. Serwer Windows (wykorzystując protokół SNMP)

- liczba i fakt uruchomienia wybranych procesów (np. explorer.exe svchost.exe)

- obciążenie CPU

- wykorzystanie pamięci RAM

- wykorzystanie interfejsów sieciowych (aktualna przepustowość)

 

 

Instalacja serwera Nagios

 

 

KONFIGURACJA SERWERA:  nagios_server

 

Ustawienie maszyny przeznaczonej na serwer nagios:

hostname: nagios_server

adres IP: 192.168.7.1

 

Wersja jądra:

 

[root@nagios_server /]# uname -r

3.10.0-693.el7.x86_64

 

Oprogramowanie Nagios wykorzystuje serwer httpd (apache + php)

 

 

Instalacja serwera Nagios wraz z pakietami zależnymi

 

[root@nagios_server /]# yum install epel-release

[root@nagios_server /]# yum install nagios

 

Jeżeli w naszym systemie jest włączony mechanizm SELinux konieczne jest zainstalowanie pakietu  nagios-selinux.

Możemy to sprawdzić wydając polecenie:

 

[root@nagios_server /]# sestatus

SELinux status:                 enabled

SELinuxfs mount:                /sys/fs/selinux

SELinux root directory:         /etc/selinux

Loaded policy name:             targeted

Current mode:                   enforcing

Mode from config file:          enforcing

Policy MLS status:              enabled

Policy deny_unknown status:     allowed

Max kernel policy version:      28

 

Jeśli mamy disabled instalacje pakietu nagios-selinux możemy pominąć.

 

W systemie operacyjnym Linux CentOS7 mechanizm SELinux jest domyślnie włączony.

 

[root@nagios_server /]# yum install nagios-selinux

 

 

Instalacja wymaganych pluginów

 

 

Kolejnym krokiem jest instalacja tzw. pluginów Nagios, które odpowiadają za monitoring wybranych parametrów. Pluginy są oprogramowaniem realizującym konkretne zadania w systemie operacyjnym, najczęściej jest to monitoring wybranej usługi.



 

Instalacja wybranych pluginów, które zostaną wykorzystane w przedstawionej konfiguracji:

 

[root@nagios_server /]# yum install nagios-plugins-ping nagios-plugins-load nagios-plugins-users nagios-plugins-http

[root@nagios_server /]# yum install nagios-plugins-disk nagios-plugins-ssh nagios-plugins-swap nagios-plugins-procs

[root@nagios_server /]# yum install nagios-plugins-nrpe

 

Plugin nrpe jest oprogramowaniem wykonującym polecenia na zdalnych hostach.

 

 

Lista zainstalowanych pluginów z repozytorium:

 

[root@nagios_server /]# ls -l /usr/lib64/nagios/plugins/check*

-rwxr-xr-x. 1 root root  71280 2017-07-21  /usr/lib64/nagios/plugins/check_disk

-rwxr-xr-x. 1 root root 112776 2017-07-21  /usr/lib64/nagios/plugins/check_http

-rwxr-xr-x. 1 root root  53640 2017-07-21  /usr/lib64/nagios/plugins/check_load

-rwxr-xr-x. 1 root root  50696 2017-08-04  /usr/lib64/nagios/plugins/check_nrpe

-rwxr-xr-x. 1 root root  66392 2017-07-21  /usr/lib64/nagios/plugins/check_ping

-rwxr-xr-x. 1 root root  66552 2017-07-21  /usr/lib64/nagios/plugins/check_procs

-rwxr-xr-x. 1 root root  53928 2017-07-21  /usr/lib64/nagios/plugins/check_ssh

-rwxr-xr-x. 1 root root  49520 2017-07-21  /usr/lib64/nagios/plugins/check_swap

-rwxr-xr-x. 1 root root  45344 2017-07-21  /usr/lib64/nagios/plugins/check_users

 

 

Uruchomienie usługi Nagios

 

Zanim przystąpimy do konfiguracji sprawdźmy czy usługa działa poprawnie:

 

[root@nagios_server /]# systemctl start httpd

[root@nagios_server /]# systemctl start nagios

[root@nagios_server /]# systemctl status nagios

nagios.service - Nagios Network Monitoring

   Loaded: loaded (/usr/lib/systemd/system/nagios.service; enabled; vendor preset: disabled)

   Active: active (running) since pon 2018-03-19 19:24:14 CET; 1min 59s ago

     Docs: https://www.nagios.org/documentation/

 Main PID: 6210 (nagios)

   CGroup: /system.slice/nagios.service

           ├─6210 /usr/sbin/nagios -d /etc/nagios/nagios.cfg

           ├─6218 /usr/sbin/nagios --worker /var/spool/nagios/cmd/nagios.qh

           ├─6219 /usr/sbin/nagios --worker /var/spool/nagios/cmd/nagios.qh

           ├─6220 /usr/sbin/nagios --worker /var/spool/nagios/cmd/nagios.qh

           ├─6221 /usr/sbin/nagios --worker /var/spool/nagios/cmd/nagios.qh

           └─6222 /usr/sbin/nagios -d /etc/nagios/nagios.cfg

 

mar 19 19:24:14 nagios_server nagios[6210]: nerd: Channel hostchecks registered successfully

mar 19 19:24:14 nagios_server nagios[6210]: nerd: Channel servicechecks registered successfully

(…)

 

 

Uruchomienie usługi wraz ze startem systemu operacyjnego Linux:

 

[root@nagios_server /]# systemctl enable httpd

Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.

 

[root@nagios_server /]# systemctl enable nagios

Created symlink from /etc/systemd/system/multi-user.target.wants/nagios.service to /usr/lib/systemd/system/nagios.service.

 

 

Dostęp do serwera Nagios za pośrednictwem www

 

Dostęp do serwera Nagios za pośrednictwem serwisu WWW

 

http://127.0.0.1/nagios/

 

login:  nagiosadmin

hasło:  nagiosadmin

 

Zmiana hasła:

 

[root@nagios_server /]# htpasswd -c /etc/nagios/passwd nagiosadmin

New password: <twoje_haslo>

Re-type new password: <twoje_haslo>

Adding password for user nagiosadmin

 

 

Przedstawiony scenariusz

 

 

 
 

 

Urządzenia, które chcemy monitorować znajdują się w dwóch odrębnych fizycznych lokalizacjach. W Każdej lokalizacji znajdują się serwery jak i inne urządzenia świadczące wybrane usługi. Usługi oraz serwery zostaną następnie pogrupowane uwzględniając ich rodzaj i lokalizację.

 

Na potrzeby konfiguracji wykorzystano:

 

Lokalizacja: lodz

bridge202 (urządzenie sieciowe firmy Mikrotik)

nagios_server (komputer z systemem operacyjnym Linux CentOS7 (1708)

linuxserver7_2 (komputer z systemem operacyjnym Linux CentOS7 (1708)

 

Lokalizacja: warsaw

bridge200 (urządzenie sieciowe firmy Mikrotik)

linuxserver7_3 (komputer z systemem operacyjnym Linux CentOS7(1708)

winserver (komputer z systemem operacyjnym Windows 8.1)

 

 

Zaczynamy konfigurację

 

Nazwa hosta nagios_server powinna zostać zdefiniowana w plikach /etc/hostname oraz plik DNS /etc/hosts

Nazwa hosta w plikach konfiguracyjnych nagios oraz w pliku hostname może być inna jednak dla ułatwienia ustawiono takie same.

 

 

[root@nagios_server /]# cat /etc/hostname

nagios_server

 

[root@nagios_server /]# cat /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 nagios_server

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6 nagios_server

 

 

Główny plik konfiguracyjny Nagios

 

Konfiguracja usługi nagios ma strukturę drzewa. Każdy plik jest zależny od drugiego i ma swojego „rodzica”.

Główny plik konfiguracyjny (tzw. korzeń) znajduje się w /etc/nagios/nagios.cfg

 

W tym pliku na uwagę zasługują dyrektywy:

 

cfg_file=

wskazuje na dodatkowy plik konfiguracyjny

 

cfg_dir=

wskazuje na dodatkowy katalog konfiguracyjny

 

Są to parametry które tworzą strukturę drzewa.

Biorąc pod uwagę strukturę drzewiastą nazwy plików konfiguracyjnych i katalogów nie mają znaczenia, przy czym należy zachować rozszerzenie plików konfiguracyjnych *.cfg

Podstawowa konfiguracja wygląda mniej więcej tak:

 

Zasada działania w uproszczeniu:

 

Nagios definiuje pewną grupę ‘szablonów’ → ‘Szablony definiują grupy obiektówObiektami mogą być grupy hostów → Hosty definiują grupy usług → Wybrane usługi mogą być monitorowane przez skrypty Nagios

 

Zawartość pliku /etc/nagios/objects/localhost.cfg zawiera definicję lokalnej maszyny (w tym przypadku będzie to nagios_server)

Wybrany obiekt wykorzystuje jeden z szablonów znajdujących się w pliku /etc/nagios/objects/templates.cfg

nazwa szablonu: linux-server

 

Pierwszy krok to edycja wstępnie przygotowanego pliku localhost.cfg w którym należy skonfigurować sekcję:

define host

define hostgroup (opcjonalnie)

define service

 

W tym przypadku konfigurację przedstawiono poniżej:

 

 

Szablon konfiguracji localhosta

 

[root@nagios_server /]# cat /etc/nagios/objects/localhost.cfg

###############################################################################

# LOCALHOST.CFG - SAMPLE OBJECT CONFIG FILE FOR MONITORING THIS MACHINE

#

#

# NOTE: This config file is intended to serve as an *extremely* simple

#       example of how you can create configuration entries to monitor

#       the local (Linux) machine.

#

###############################################################################

###############################################################################

#

# HOST DEFINITION

#

###############################################################################

###############################################################################

 

# Define a host for the local machine

 

define host{

        use                     linux-server            ; Name of host template to use

       ; This host definition will inherit all variables that are defined

       ; in (or inherited by) the linux-server host template definition.

        host_name               nagios_server

        alias                   nagios_server (lodz)

        address                 127.0.0.1

        parents                        bridge202    ;rodzicem hosta ‘nagios_server’ jest urządzenie o nazwie  ‘bridge202’

        }

 

###############################################################################

###############################################################################

#

# HOST GROUP DEFINITION

#

###############################################################################

###############################################################################

# Define an optional hostgroup for Linux machines

 

define hostgroup{

        hostgroup_name  linux-servers ; The name of the hostgroup

        alias           Linux Servers ; Long name of the group

        members         nagios_server

        }

###############################################################################

###############################################################################

#

# SERVICE DEFINITIONS

#

###############################################################################

###############################################################################

# Define a service to "ping" the local machine

# sprawdza dostępność hosta poleceniem ping

define service{

        use                             local-service         ; Name of service template to use

        host_name                       nagios_server

        service_description             PING

 check_command   check_ping!100.0,20%!500.0,60%

        }

 

# Define a service to check the disk space of the root partition

# on the local machine.  Warning if < 20% free, critical if

# < 10% free space on partition.

# sprawdza wykorzystanie przestrzeni dysku

define service{

        use                             local-service         ; Name of service template to use

        host_name                       nagios_server

        service_description             Root Partition

 check_command   check_local_disk!20%!10%!/

        }

 

# Define a service to check the number of currently logged in

# users on the local machine.  Warning if > 20 users, critical

# if > 50 users.

# monitoruje liczbę zalogowanych użytkowników

define service{

        use                             local-service         ; Name of service template to use

        host_name                       nagios_server

        service_description             Current Users

 check_command   check_local_users!20!50

        }

 

# Define a service to check the number of currently running procs

# on the local machine.  Warning if > 250 processes, critical if

# > 400 processes.

# monitoruje liczbę uruchomionych procesów

define service{

        use                             local-service         ; Name of service template to use

        host_name                       nagios_server

        service_description             Total Processes

 check_command   check_local_procs!250!400!RSZDT

        }

 

# Define a service to check the load on the local machine.

# monitoruje obciążenie systemu tak jak możemy to podejrzeć w pliku ‘cat /proc/loadavg’

define service{

        use                             local-service         ; Name of service template to use

        host_name                       nagios_server

        service_description             Current Load

 check_command   check_local_load!5.0,4.0,3.0!10.0,6.0,4.0

        }

 

# Define a service to check the swap usage the local machine.

# Critical if less than 10% of swap is free, warning if less than 20% is free

# sprawdza wykorzystanie przestrzeni swap dysku

define service{

        use                             local-service         ; Name of service template to use

        host_name                       nagios_server

        service_description             Swap Usage

 check_command   check_local_swap!20!10

        }

 

# Define a service to check SSH on the local machine.

# Disable notifications for this service by default, as not all users may have SSH enabled.

# sprawdza dostępność usługi SSH

define service{

        use                             local-service         ; Name of service template to use

        host_name                       nagios_server

        service_description             SSH

 check_command   check_ssh

 notifications_enabled  0

        }

 

# Define a service to check HTTP on the local machine.

# Disable notifications for this service by default, as not all users may have HTTP enabled.

# sprawdza dostępność usługi HTTP

define service{

        use                             local-service         ; Name of service template to use

        host_name                       nagios_server

        service_description             HTTP

 check_command   check_http

 notifications_enabled  0

        }

 

 

Struktura drzewa plików konfiguracyjnych

 

Pozostała struktura plików konfiguracyjnych wygląda następująco:

 

[root@nagios_server /]# tree /etc/nagios/conf.d/

/etc/nagios/conf.d/

├── host_grouts.cfg

├── lodz

│   ├── bridge

│   │   └── bridge202.cfg

│   └── servers

│       └── linuxserver7_2.cfg

├── service_groups.cfg

└── warsaw

    ├── bridge

    │   └── bridge200.cfg

    ├── routers

    │   └── router_provider.cfg

    └── servers

        ├── linuxserver7_3.cfg

        └── winserver.cfg

 

 

Dodatkowo w pliku /etc/nagios/objects/templates.cfg dokonano modyfikacji szablonu windows-server

 

 

define host{

 name    windows-server

 use    generic-host

 check_period   24x7

 check_interval  5

 retry_interval  1

 max_check_attempts  10

 check_command   check-host-alive

 notification_period  24x7

 notification_interval 30

 notification_options d,r

 contact_groups  admins

# hostgroups   windows-servers

 register   0

 }

 

 

Zastosowane pluginy

 

Nagios wykorzystuje tzw. skrypty (plugins) znajdując się w katalogu /usr/lib64/nagios/plugins/

Są to pliki (programy) określone słowem najczęściej check_*

Na chwilę obecną w samym repozytorium YUM jest dostępnych ponad 80 takich plików, które mogą monitorować wybrane aspekty systemu operacyjnego.

Dodatkowo pozostałe pluginy znajdują się w serwisie https://exchange.nagios.org/directory/Plugins/

 

Na potrzeby tego opracowania ze strony internetowej exchange.nagios.org zostało wybranych 6 dodatkowych pluginów, które do monitorowania usług wykorzystują protokół SNMP.

Dodatkowe pobrane pliki zostały umieszczone w katalogu /usr/lib64/nagios/plugins/ (wyróżnione kolorem)

 

[root@nagios_server /]# ls -l /usr/lib64/nagios/plugins/

razem 800

-rwxr-xr-x. 1 root   root    71280 2017-07-21  check_disk

-rwxr-xr-x. 1 root   root   112776 2017-07-21  check_http

-rwxr-xr-x. 1 root   root    53640 2017-07-21  check_load

-rwxr-xr-x. 1 root   root    50696 2017-08-04  check_nrpe

-rwxr-xr-x. 1 root   root    66392 2017-07-21  check_ping

-rwxr-xr-x. 1 root   root    66552 2017-07-21  check_procs

-rwxr-xr-x. 1 root   root    33646 2012-02-06  check_snmp_int.pl

-rwxr-xr-x. 1 root   root    25148 02-18 01:53 check_snmp_load.pl

-rwxr-xr-x. 1 root   root    25230 02-18 09:12 check_snmp_memory

-rwxr-xr-x. 1 root   root    53928 2017-07-21  check_ssh

-rwxr-xr-x. 1 root   root    49520 2017-07-21  check_swap

-rwxr-xr-x. 1 root   root    45344 2017-07-21  check_users

-rwxr-xr-x. 1 root   root     2348 02-17 23:30 check_win_processes

-rwxr-xr-x. 1 root   root     7067 02-18 02:53 check_win_snmp_disk.pl

-rwxr-xr-x. 1 root   root     4433 02-18 02:44 check_win_snmp_storage.pl

drwxr-xr-x. 2 root   root     4096 2017-09-20  eventhandlers

-rwxr-xr-x. 1 root   root    45328 2017-07-21  negate

-rwxr-xr-x. 1 root   root    45104 2017-07-21  urlize

-rwxr-xr-x. 1 root   root     2791 2017-07-21  utils.sh

 

 

 

Definicja poleceń w pliku commands

 

Następnie pobrane pliki skonfigurowano w usłudze Nagios (konfiguracja przedstawiona poniżej).

Plik commands.cfg definiuje polecenia wykonywane przez usługę nagios (co określony czas).

 

[root@nagios_server /]# cat /etc/nagios/objects/commands.cfg

(…)

# monitoruje fakt uruchomienia dowolnego procesu w systemie Windows

# może to być np. proces explorer.exe lub np. sqlservr.exe (odpowiada za uruchomienie serwera MS SQL)

define command{

 command_name check_win_processes

 command_line $USER1$/check_win_processes -H $HOSTADDRESS$ public sqlservr.exe

 }

 

# monitoruje obciążenie systemu operacyjnego

# -w 80 oraz -c 90 wartości liczbowe odpowiednio WARNING i CRITICAL wyrażone w %

define command{

 command_name check_snmp_load.pl

 command_line $USER1$/check_snmp_load.pl -H $HOSTADDRESS$ -C public -w 80 -c 90

 }

 

# monitoruje wykorzystaną przestrzeń dysk twardego

# wartość 1 oznacza pierwszy dysk twardy który ma być monitorowany

# 80 oraz 90 wartości liczbowe odpowiednio WARNING i CRITICAL wyrażone w %

define command{

 command_name check_win_snmp_disk.pl

 command_line $USER1$/check_win_snmp_disk.pl $HOSTADDRESS$ public 1 80 90

 }

 

# monitoruje wykorzystaną przestrzeń dysk twardego (inna wersja skryptu)

# wartość d oznacza literę dysku którą skrypt ma monitorować (najczęściej dotyczy to systemu windows)

# 80 oraz 90 wartości liczbowe odpowiednio WARNING i CRITICAL wyrażone w %

define command{

 command_name check_win_snmp_storage.pl

 command_line $USER1$/check_win_snmp_storage.pl $HOSTADDRESS$ public d 80 90

 }

 

# monitoruje wykorzystanie pamięci RAM

# -w 70 oraz -c 80 wartości liczbowe odpowiednio WARNING i CRITICAL wyrażone w %

define command{

 command_name check_snmp_memory

 command_line $USER1$/check_snmp_memory -H $HOSTADDRESS$ -C public -w 70 -c 80

 }

 

# Skrypt monitoruje wykorzystanie interfejsu sieciowego (transfer)

# -w1,1 wartości liczbowe definiujące WARNING

# Pierwsza cyfra to jest „download” druga cyfra „upload” odpowiednio 2Mbps (download) , 2Mbps (upload)

# -c2,2 wartości liczbowe definiujące CRITICAL

# Pierwsza cyfra to jest „download” druga cyfra „upload” odpowiednio 3Mbps (download) , 3Mbps (upload)

# przekroczenie tych wartości na interfejsie wywoła alarm

#

# Można również skonfigurować wartości graniczne w kbps wtedy należy odpowiednio wyznaczyć wartość i zrezygnować z przełącznika -M

# -n "Ethernet Connection I217-LM"  (nazwa interfejsu w systemie windows – pomijamy nazwę Intel(R) w nazwie interfejsu)

# interfejs który chcemy monitorować możemy też oznaczyć gwiazdką np.  -n "Ethernet Connection*"

define command{

 command_name check_snmp_int.pl

 command_line $USER1$/check_snmp_int.pl -H $HOSTADDRESS$ -C public -k -M -w1,1 -c2,2 -n "Ethernet Connection I217-LM-WFP 802.3"

 }

 

# wykonuje dowolne polecenie na zdalnej maszynie z systemem Linux (wymaga uruchomionej usługi NRPE na zdalnej maszynie)

define command{

command_name check_nrpe

command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$

}

 

Parametr -H $HOSTADDRESS$ jest to wewnętrzna zmienna Nagios określa adres IP hosta, który ma być monitorowany.

Parametr -C public określa „hasło” (w tym przypadku hasłem jest słowo: „public”) społeczności tzw. „SNMP Community string”

 

 

Monitoring zdalnej maszyny (Linux)

 

 

Na chwilę skonfigurowaliśmy monitoring wybranych usług lokalnej maszyny, która stanowi jednocześnie serwer Nagios. Najczęściej jednak zależy nam na monitorowaniu zdalnych maszyn. Usługa Nagios do monitoringu zdalnych serwerów (pracujących pod kontrolą systemu operacyjnego Linux) wykorzystuje moduł check_nrpe oraz agenta nrpe, przy czym agent stanowi usługę przyjmującą żądania na porcie TCP/5666, zainstalowaną na komputerze zdalnym. W dalszej części skupimy się na jej konfiguracji i zastosowaniu na przykładzie przedstawionym na rysunku.

 

 

 
 

 

Scenariusz przedstawia moduł check_nrpe zainstalowany na serwerze nagios_server oraz agenta nrpe zainstalowanego na serwerze zdalnym w tym przypadku linuxserver7_2, który wykonuje z góry zdefiniowane polecenia.

 

 

 

KONFIGURACJA SERWERA:  CENTOS7_2

 

Instalacja agenta NRPE

Serwer monitorowany:

hostname: CENTOS7_2

adres IP: 192.168.7.2

nazwa serwera w systemie Nagios: linuxserver7_2

 

 

Instalację wykonujemy na maszynie, którą chcemy monitorować  (linuxserver7_2)

 

[root@CENTOS7_2 /]# yum install nrpe

 

Następnie należy edytować plik konfiguracyjny /etc/nagios/nrpe.cfg i zezwolić na przyjmowanie żądań z serwera Nagios (dyrektywa allowed_hosts).

 

[root@CENTOS7_2 /]# cat /etc/nagios/nrpe.cfg | grep allowed_hosts

allowed_hosts=127.0.0.1,::1,192.168.7.1

 

[root@CENTOS7_2 /]# systemctl start nrpe

[root@CENTOS7_2 /]# systemctl status nrpe

nrpe.service - Nagios Remote Program Executor

   Loaded: loaded (/usr/lib/systemd/system/nrpe.service; disabled; vendor preset: disabled)

   Active: active (running) since śro 2018-02-21 23:55:49 CET; 1 months 12 days ago

     Docs: http://www.nagios.org/documentation

  Process: 23389 ExecStart=/usr/sbin/nrpe -c /etc/nagios/nrpe.cfg -d $NRPE_SSL_OPT (code=exited, status=0/SUCCESS)

 Main PID: 23390 (nrpe)

   CGroup: /system.slice/nrpe.service

           └─23390 /usr/sbin/nrpe -c /etc/nagios/nrpe.cfg -d

 

lut 21 23:55:49 CENTOS7_2 systemd[1]: Starting Nagios Remote Program Executor...

lut 21 23:55:49 CENTOS7_2 systemd[1]: Started Nagios Remote Program Executor.

lut 21 23:55:49 CENTOS7_2 nrpe[23390]: Starting up daemon

lut 21 23:55:49 CENTOS7_2 nrpe[23390]: Server listening on 0.0.0.0 port 5666.

lut 21 23:55:49 CENTOS7_2 nrpe[23390]: Server listening on :: port 5666.

lut 21 23:55:49 CENTOS7_2 nrpe[23390]: Listening for connections on port 5666

lut 21 23:55:49 CENTOS7_2 nrpe[23390]: Allowing connections from: 127.0.0.1,::1,192.168.7.1

 

 

Uruchomienie usługi wraz ze startem systemu

[root@CENTOS7_2 /]# systemctl enable nrpe

Created symlink from /etc/systemd/system/multi-user.target.wants/nrpe.service to /usr/lib/systemd/system/nrpe.service.

 

 

 

Test połączenia pomiędzy serwerem Nagios, a agentem NRPE

 

Przechodzimy na serwer Nagios (nagios_server) i wykonujemy polecenie:

 

[root@nagios_server /]# /usr/lib64/nagios/plugins/check_nrpe -H 192.168.7.2

NRPE v3.2.0

 

Wykonanie polecenia powinno zwrócić nam wersję zainstalowanego agenta na maszynie zdalnej. Inny komunikat może oznaczać błąd konfiguracji i brak połączenia.

Zapora sieciowa na zdalnym serwerze (linuxserver7_2) powinna umożliwić przyjmowanie żądań na porcie TCP/5666.

 

Na tym etapie konfiguracji zestawiono połączenie pomiędzy serwerem Nagios a serwerem, który ma być monitorowany.

 

 

Konfiguracja agenta NRPE

 

Agent NRPE podobnie jak usługa Nagios korzysta z pluginów znajdujących się w katalogu /usr/lib64/nagios/plugins/, które odpowiadają za monitoring wybranej usługi w systemie operacyjnym.

 

Zasada działania w skrócie.

 

Usługa Nagios (nagios_server)uruchamia skrypt /usr/lib64/nagios/plugins/check_nrpe (+ argumenty) → który wysyła żądanie do agenta NRPE (zdalny serwer linuxserver7_2) → agent NRPE odczytuje żądanie i wykonuje argumenty.

Argumentami są:

- adres IP zdalnego serwera / hosta

- ścieżka do pliku / programu, który ma zostać uruchomiony (najczęściej jest to plugin z katalogu /usr/lib64/nagios/plugins) na zdalnym serwerze.

 

 

Konfiguracja argumentów – co ma być wykonywane

 

Na potrzeby tego opracowania będziemy monitorować:

 

(za pośrednictwem pluginu: check_http, check_ssh, check_ping )

- dostępność usługi www

- dostępność usługi ssh

- dostępność serwera (programem ping)

 

(za pośrednictwem pluginu: check_nrpe)

- wykorzystanie przestrzeni dysku (check_disk)

- wykorzystanie przestrzeni swap (check_swap)

- obciążenie procesora (check_load)

- wykorzystanie pamięci (check_mem)

- liczba zalogowanych użytkowników (check_users)

- liczba uruchomionych procesów (check_procs)

- liczba uruchomionych procesów „zombie” (check_procs)

- stan uruchomionej usługi rsyslog (check_services)

- stan uruchomionej usługi ssh (check_services)

 

 

Dostępność i poprawność działania usług www, ssh na potrzeby tego opracowania będzie monitorowana zdalnie (w przypadku www tylko dostępność usługi).

 

Instalacja wymaganych pakietów.

 

[root@CENTOS7_2 /]# yum install nagios-plugins

[root@CENTOS7_2 /]# yum install nagios-plugins-disk

[root@CENTOS7_2 /]# yum install nagios-plugins-swap

[root@CENTOS7_2 /]# yum install nagios-plugins-load

[root@CENTOS7_2 /]# yum install nagios-plugins-users

[root@CENTOS7_2 /]# yum install nagios-plugins-procs

[root@CENTOS7_2 /]# yum install perl-Switch

 

Dodatkowo ze strony https://exchange.nagios.org/ pobrano pluginy takie jak: check_services oraz check_mem.

Całość została zainstalowana i umieszczona w katalogu:

 

[root@CENTOS7_2 /]# ls -l /usr/lib64/nagios/plugins/

razem 412

-rwxr-xr-x 1 root root 71280 2017-07-21  check_disk

-rwxr-xr-x 1 root root 53640 2017-07-21  check_load

-rwxr-xr-x 1 root root 66552 2017-07-21  check_procs

-rwxr-xr-x 1 root root  9560 02-17 22:54 check_services

-rwxr-xr-x 1 root root 49520 2017-07-21  check_swap

-rwxr-xr-x 1 root root 45344 2017-07-21  check_users

-rwxr-xr-x 1 root root  3420 02-17 14:18 check_mem

-rwxr-xr-x 1 root root 45328 2017-07-21  negate

-rwxr-xr-x 1 root root 45104 2017-07-21  urlize

-rwxr-xr-x 1 root root  2791 2017-07-21  utils.sh

 

 

Wymienione pliki są uruchamiane przez agenta NRPE wraz z odpowiednimi argumentami.

Konfiguracja obejmuje zdefiniowanie dyrektywy command w pliku /etc/nagios/nrpe.cfg

 

Konfiguracja dyrektyw NRPE

 

Przykład konfiguracji dyrektywy command przedstawiono poniżej:

[root@CENTOS7_2 /]# cat /etc/nagios/nrpe.cfg | grep ^command

command_timeout=60

command[check_users]=/usr/lib64/nagios/plugins/check_users -w 5 -c 10

command[check_load]=/usr/lib64/nagios/plugins/check_load -r -w .15,.10,.05 -c .30,.25,.20

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

command[check_zombie_procs]=/usr/lib64/nagios/plugins/check_procs -w 5 -c 10 -s Z

command[check_total_procs]=/usr/lib64/nagios/plugins/check_procs -w 150 -c 200

command[check_swap]=/usr/lib64/nagios/plugins/check_swap -w 20% -c 10%

command[check_mem]=/usr/lib64/nagios/plugins/check_mem -w 70 -c 80

command[check_services_ssh]=/usr/lib64/nagios/plugins/check_services -o linux -s sshd

command[check_services_rsyslog]=/usr/lib64/nagios/plugins/check_services -o linux -s rsyslog

 

 

parametry -w (WARNING) -c (CRITICAL) definiują wartości graniczne po przekroczeniu których system Nagios będzie sygnalizował nieprawidłowość.

 

 

 

Test poprawnego działania pluginów na serwerze monitorowanym

 

Liczba zalogowanych użytkowników

 

[root@CENTOS7_2 /]# /usr/lib64/nagios/plugins/check_users -w 8 -c 10

USERS OK - 5 users currently logged in |users=5;8;10;0

 

Definicja wartości -w oraz -c odpowiada liczbie użytkowników.

Skrypt zwrócił wartość (OK). Tym samym zostaliśmy poinformowani, że w systemie jest zalogowanych obecnie 5 użytkowników. Nasz limit został ustawiony następująco: (WARNING) powyżej 8 użytkowników i jest to wartość ostrzegawcza,(CRITICAL) powyżej 10 użytkowników i jest to wartość krytyczna.

 

[root@CENTOS7_2 /]# /usr/lib64/nagios/plugins/check_users -w 3 -c 10

USERS WARNING - 5 users currently logged in |users=5;3;10;0

 

Skrypt zwrócił wartość (WARNING). Tym samym zostaliśmy poinformowani, że w systemie jest zalogowanych obecnie 5 użytkowników, jednak nasz limit ustawiliśmy na maksymalnie 3 zalogowanych użytkowników – limit został przekroczony.

 

[root@CENTOS7_2 /]# /usr/lib64/nagios/plugins/check_users -w 2 -c 4

USERS CRITICAL - 5 users currently logged in |users=5;2;4;0

 

Skrypt zwrócił wartość (CRITICAL). Tym samym zostaliśmy poinformowani, że w systemie jest zalogowanych obecnie 5 użytkowników, jednak nasz limit ustawiliśmy powyżej 2  zalogowanych użytkowników (wartość ostrzegawcza) oraz 4 powyżej zalogowanych użytkowników (wartość krytyczna).

 

Obciążenie CPU

 

[root@CENTOS7_2 /]# /usr/lib64/nagios/plugins/check_load -r -w .15,.10,.05 -c .30,.25,.20

OK - load average per CPU: 0.00, 0.01, 0.03|load1=0.000;0.150;0.300;0; load5=0.005;0.100;0.250;0; load15=0.025;0.050;0.200;0;

 

Definicja wartości -w oraz -c odpowiada wartości dziesiętnej, która przedstawia obciążenie systemu i porównuje z wartością aktualną obciążenia. Aktualną wartość obciążenia systemu możemy sprawdzić w pliku:

 

[root@CENTOS7_2 /]# cat /proc/loadavg

0.08 0.03 0.05 1/336 1596

 

0.08 – obciążenie systemu w ostatniej 1 minusie

0.03 – obciążenie systemu z ostatnich 5 minut

0.05 – obciążenie systemu z ostatnich 15 minut

Wartości wyrażone w %, przy czym wartość 1.00 najczęściej oznacza pełne obciążenie systemu, jednak nie zawsze może to być prawdą – zależy od liczny zainstalowanych jednostek przetwarzających. Przyjmuje się, że 1.00 = 1 rdzeń / jednostka przetwarzająca (ew. 1 CPU) = 100%

 

Analogia konfiguracyjna wartości -w(WARNING) i -c(CRITICAL) pozostałych skryptów jest podobna.

 

 

Test poprawnego działania skryptów na serwerze monitorującym (serwer Nagios)

 

Liczba zalogowanych użytkowników

 

Założenie: sprawdźmy liczbę zalogowanych użytkowników na zdalnym serwerze linuxserver7_2

 

[root@nagios_server /]# /usr/lib64/nagios/plugins/check_nrpe -H 192.168.7.2 -c check_users

USERS OK - 5 users currently logged in |users=5;5;10;0

 

 

Wykorzystanie przestrzeni volumentów / dysków

 

Założenie: sprawdźmy wykorzystanie dysku twardego na zdalnym serwerze

 

[root@nagios_server /]# /usr/lib64/nagios/plugins/check_nrpe -H 192.168.7.2 -c check_disk

DISK OK - free space: /boot 354 MB (78.33% inode=99%);| /boot=97MB;389;438;0;487

 

 

Liczba uruchomionych procesów

 

Założenie: sprawdźmy liczbę uruchomionych procesów na zdalnym serwerze

 

[root@nagios_server /]# /usr/lib64/nagios/plugins/check_nrpe -H 192.168.7.2 -c check_total_procs

PROCS WARNING: 189 processes | procs=189;150;200;0;

 

 WAŻNE

Należy zwrócić uwagę, że parametr -c nie określa nazwy pliku !, a jedynie wywołuje zdefiniowany parametr (tzw. nazwę) i tak w przypadku na przykład polecenia:

(……) -c check_total_procs

wywołuje parametr

command[check_total_procs]=/usr/lib64/nagios/plugins/check_procs -w 150 -c 200

z pliku /etc/nagios/nrpe.cfg

 

 

Plik konfiguracyjny

 

W przedstawionym rozdziale zaprezentowałem koncepcję i założenia monitoringu serwera CENTOS7_2 (linuxserver7_2).

Przedstawione dyrektywy command powinny mieć swoje odzwierciedlenie na maszynie, na której działa usługa Nagios (nagios_server).

 

 

[root@nagios_server /]# cat /etc/nagios/conf.d/lodz/servers/linuxserver7_2.cfg

define host{

        use   linux-server

        host_name               linuxserver7_2

        alias                   linuxserver7_2 (lodz)

        address                 192.168.7.2

        parents                        bridge202

        }

define service{

        use                             generic-service

        host_name                       linuxserver7_2

        service_description             CHECK_PING

 check_command   check_ping!100.0,20%!500.0,60%

        }

define service{

        use                             generic-service

        host_name                       linuxserver7_2

        service_description             CHECK_ONLINE_SSH

 check_command   check_ssh

 notifications_enabled  0

        }

define service{

        use                             generic-service

        host_name                       linuxserver7_2

        service_description             CHECK_ONLINE_HTTP

 check_command   check_http

 notifications_enabled  0

        }

define service{

        use                             generic-service

        host_name                       linuxserver7_2

        service_description             NRPE_CHECK_LOAD_CPU

 check_command   check_nrpe!check_load

        }

define service{

        use                             generic-service

        host_name                       linuxserver7_2

        service_description             NRPE_CHECK_DISK_USAGE

 check_command   check_nrpe!check_disk

        }

define service{

        use                             generic-service

        host_name                       linuxserver7_2

        service_description             NRPE_CHECK_ONLINE_USERS

 check_command   check_nrpe!check_users

        }

define service{

        use                             generic-service

        host_name                       linuxserver7_2

        service_description             NRPE_CHECK_PROC_TOTAL

 check_command   check_nrpe!check_total_procs

        }

define service{

        use                             generic-service

        host_name                       linuxserver7_2

        service_description             NRPE_CHECK_PROC_ZOMBIE

 check_command   check_nrpe!check_zombie_procs

        }

define service{

        use                             generic-service

        host_name                       linuxserver7_2

        service_description             NRPE_CHECK_DISK_USAGE_SWAP

 check_command   check_nrpe!check_swap

        }

define service{

        use                             generic-service

        host_name                       linuxserver7_2

        service_description             NRPE_CHECK_LOAD_MEMORY

 check_command   check_nrpe!check_mem

        }

define service{

        use                             generic-service

        host_name                       linuxserver7_2

        service_description             NRPE_CHECK_SERVICES_SSH

 check_command   check_nrpe!check_services_ssh

        }

define service{

        use                             generic-service

        host_name                       linuxserver7_2

        service_description             NRPE_CHECK_SERVICES_RSYSLOG

 check_command   check_nrpe!check_services_rsyslog

        }

 

 

Na uwagę zasługuje dyrektywa parents, która mówi, że „rodzicem” serwera linuxserver7_2 jest urządzenie o nazwie bridge202 (zerknij na schemat), przy czym urządzenie o takiej nazwie musi być zdefiniowane w pozostałych plikach konfiguracyjnych *.cfg usługi Nagios. Dlaczego akurat bridge202 ? ponieważ serwer  linuxserver7_2 jest do takiego urządzenia podłączony – zerknij na schemat. Dyrektywa  parents jest opcjonalna jednak jej poprawna konfiguracja umożliwi odzwierciedlenie logicznego SCHEMATU sieci jak na przedstawionym schemacie sieci.

 

 

Monitoring pozostałych maszyn (Linux)

 

 

KONFIGURACJA SERWERA (przykład): linuxserver7_3

 

Konfiguracja maszyny  linuxserver7_3 jest analogiczna jak w przypadku linuxserver7_2, przy czym na potrzeby monitoringu wybrano tylko trzy usługi (do monitorowania) co przedstawiono na listingu poniżej:

 

[root@nagios_server /]# cat /etc/nagios/conf.d/warsaw/servers/linuxserver7_3.cfg

define host{

        use   linux-server

        host_name               linuxserver7_3

        alias                   linuxserver7_3 (warszawa)

        address                 192.168.7.3

        parents   bridge200

        }

define service{

        use                             generic-service

        host_name                       linuxserver7_3

        service_description             CHECK_PING

 check_command   check_ping!100.0,20%!500.0,60%

        }

define service{

        use                             generic-service

        host_name                       linuxserver7_3

        service_description             CHECK_ONLINE_SSH

 check_command   check_ssh

 notifications_enabled  0

        }

define service{

        use                             generic-service

        host_name                       linuxserver7_3

        service_description             CHECK_ONLINE_HTTP

 check_command   check_http

 notifications_enabled  0

        }

 

 

 

Monitoring urządzeń sieciowych (Mikrotik)

 

 

KONFIGURACJA URZĄDZEŃ (przykład): bridge200, bridge202

 

Do tej pory przedstawiono monitoring różnych aspektów na serwerach pracujących pod kontrolą systemu operacyjnego Linux – zarówno monitoring lokalnej maszyny jak i zdalnej z wykorzystaniem usługi NRPE.

 

A co w przypadku innych platform sprzętowych jak i innych systemów operacyjnych ?

Tutaj z pomocą przychodzi nam protokół SNMP, który zostanie wykorzystany w dalszej części opracowania.

 

Pliki konfiguracyjne

 

[root@nagios_server /]# cat /etc/nagios/conf.d/warsaw/bridge/bridge200.cfg

define host{

 use  generic-router

 name  bridge200-template

 parents  router_provider

 register 0

 }

define host{

 use  bridge200-template

 host_name bridge200

 alias  bridge200 (warszawa)

 address  192.168.1.200

 }

define service{

 use   generic-service

 host_name  bridge200

 service_description SNMP_CHECK_DISK_USAGE

 check_command  check_win_snmp_storage.pl

 }

define service{

 use   generic-service

 host_name  bridge200

 service_description SNMP_CHECK_LOAD_CPU

 check_command  check_snmp_load.pl

 }

 

 

[root@nagios_server /]# cat /etc/nagios/conf.d/lodz/bridge/bridge202.cfg

define host{

 use  generic-router

 name  bridge202-template

 parents  bridge200

 register 0

 }

define host{

 use  bridge202-template

 host_name bridge202

 alias  bridge202 (lodz)

 address  192.168.1.202

 parents  bridge200

 }

define service{

 use   generic-service

 host_name  bridge202

 service_description SNMP_CHECK_DISK_USAGE

 check_command  check_win_snmp_storage.pl

 }

define service{

 use   generic-service

 host_name  bridge202

 service_description SNMP_CHECK_LOAD_CPU

 check_command  check_snmp_load.pl

 }

 

 

Powyżej przedstawiono listingi plików konfiguracyjnych w usłudze Nagios, zawierające konfiguracyjne urządzeń  bridge200 oraz bridge202, z wykorzystaniem protokołu SNMP (a właściwie skryptów wykorzystujących protokół SNMP). Nazwy skryptów SNMP zostały wyróżnione kolorem zielonym.

 

Wyróżnione skrypty zostały pobrane z witryny https://exchange.nagios.org/ i umieszczone w katalogu /usr/lib64/nagios/plugins/ na serwerze Nagios.

Definicja tych plików (parametry i opcje wykonania) zostały skonfigurowane w pliku /etc/nagios/objects/commands.cfg

Plik commands.cfg opisałem w pierwszej części.

 

Dodatkowo należy zainstalować pakiet perl-Net-SNMP wraz z pozostałymi zależnościami.

 

[root@nagios_server /]# yum install perl-Net-SNMP

(…)

 

 

W ramach tego opracowania wykorzystano urządzenia:

 

host: bridge200

platforma sprzętowa: RB133(mipsle) firmy Mikrotik

wersja firmware: 5.26

 

host: bridge202

platforma sprzętowa: RB433(mipsbe) firmy Mikrotik

wersja firmware: 5.26

 

W urządzeniach Mikrotik włączono protokół SNMP i ustawiono:

Trap Community: public

Trap Version: 2

 

 

Wykorzystanie pamięci flash

 

1. Sprawdźmy wykorzystanie pamięci flash w ruterze - urządzeniu Mikrotik  (bridge200):

 

[root@nagios_server /]# /usr/lib64/nagios/plugins/check_win_snmp_storage.pl 192.168.1.200 public c 80 90

UNKNOWN: Driveletter [C] not found

 

Literę dysku należy wybrać doświadczalnie, najczęściej jest to ‘d’ i kolejne wzwyż.

 

[root@nagios_server /]# /usr/lib64/nagios/plugins/check_win_snmp_storage.pl 192.168.1.200 public d 80 90

OK : Storage Used 51% : Total 62914560 bytes : Used 32231424 bytes : Type Disk D

 

 

Wykorzystanie CPU

 

2. Sprawdźmy wykorzystanie procesora CPU w urządzeniu Mikrotik (bridge200 i bridge202):

 

[root@nagios_server /]# /usr/lib64/nagios/plugins/check_snmp_load.pl -H 192.168.1.200 -C public -w 80 -c 90

1 CPU, load 2.0% < 80% : OK

 

drugie urządzenie:

 

[root@nagios_server /]# /usr/lib64/nagios/plugins/check_snmp_load.pl -H 192.168.1.202 -C public -w 80 -c 90

1 CPU, load 1.0% < 80% : OK

 

 

 

Monitoring pozostałych urządzeń

 

 

KONFIGURACJA URZĄDZENIA (przykład):  router_provider

 

 

Plik konfiguracyjny

 

[root@nagios_server /]# cat /etc/nagios/conf.d/warsaw/routers/router_provider.cfg

define host{

 use  generic-router

 host_name router_provider

 alias  router_provider (warszawa)

 address  192.168.1.1

 }

define service{

 use   generic-service

 host_name  router_provider

 service_description CHECK_PING

 check_command  check_ping!100.0,20%!500.0,60%

 }

define service{

 use   generic-service

 host_name  router_provider

 service_description SNMP_CHECK_LOAD_CPU

 check_command  check_snmp_load.pl

 }

 

W tym przypadku monitorujemy dostępność hosta poleceniem ping oraz obciążenie CPU.

 

 

 

Monitoring protokołem SNMP maszyny z systemem operacyjnym Windows

KONFIGURACJA (przykład):  winserver

 

 

Instalacja wymaganych pakietów

 

Na serwerze Nagios należy doinstalować wymagane pakiety:

 

[root@nagios_server /]# yum install perl-B-Utils

[root@nagios_server /]# yum install net-snmp

[root@nagios_server /]# yum install net-snmp-utils

 

Domyślna lokalizacja biblioteki Utils

 

[root@nagios_server /]# rpm -ql perl-B-Utils

/usr/lib64/perl5/vendor_perl/B

/usr/lib64/perl5/vendor_perl/B/Utils

/usr/lib64/perl5/vendor_perl/B/Utils.pm

/usr/lib64/perl5/vendor_perl/B/Utils/Install

/usr/lib64/perl5/vendor_perl/B/Utils/Install/BUtils.h

/usr/lib64/perl5/vendor_perl/B/Utils/Install/Files.pm

/usr/lib64/perl5/vendor_perl/B/Utils/Install/typemap

/usr/lib64/perl5/vendor_perl/B/Utils/OP.pm

/usr/lib64/perl5/vendor_perl/auto/B

/usr/lib64/perl5/vendor_perl/auto/B/Utils

/usr/lib64/perl5/vendor_perl/auto/B/Utils/Utils.so

/usr/share/doc/perl-B-Utils-0.21

/usr/share/doc/perl-B-Utils-0.21/Changes

/usr/share/doc/perl-B-Utils-0.21/LICENSE

/usr/share/doc/perl-B-Utils-0.21/README

/usr/share/man/man3/B::Utils.3pm.gz

/usr/share/man/man3/B::Utils::OP.3pm.gz

 

Utworzenie linku symbolicznego do biblioteki Utils.pm (w systemie CentOS7 w tej wersji wymagane)

 

[root@nagios_server /]# ln -s /usr/lib64/perl5/vendor_perl/B/Utils.pm /usr/lib64/perl5/vendor_perl/utils.pm

 

 

Plik konfiguracyjny

 

Przykład pliku konfiguracyjnego serwera Windows

 

[root@nagios_server /]# cat /etc/nagios/conf.d/warsaw/servers/winserver.cfg

define host{

 use  windows-server

 host_name winserver

 alias  winserver (warszawa)

 address  192.168.1.27

 parents  bridge200

 }

define service{

 use   generic-service

 host_name  winserver

 service_description SNMP_CHECK_SQLSERVER

 check_command  check_win_processes

 }

define service{

 use   generic-service

 host_name  winserver

 service_description SNMP_CHECK_LOAD_CPU

 check_command  check_snmp_load.pl

 }

define service{

 use   generic-service

 host_name  winserver

 service_description SNMP_CHECK_DISK_USAGE

 check_command  check_win_snmp_disk.pl

 }

define service{

 use   generic-service

 host_name  winserver

 service_description SNMP_CHECK_LOAD_MEMORY

 check_command  check_snmp_memory

 }

define service{

 use   generic-service

 host_name  winserver

 service_description SNMP_CHECK_ONLINE_INTERFACE

 check_command  check_snmp_int.pl

 }

 

 

Tym razem z poziomu serwera Nagios (Linux) monitorujemy maszynę pracującą pod kontrolą systemu Windows, wykorzystując protokół SNMP.

 

- sam fakt uruchomienia dowolnego procesu (w tym przykładzie proses odpowiedzialny za usługę MSSQL)

- obciążenie CPU w systemie Windows

- zajętość dysku

- zajętość pamięci RAM

- obciążenie interfejsu sieciowego w systemie Windows

 

Wymagana usługa SNMP Service w systemie Windows

 

W systemie Windows została uruchomiona usługa SNMP Service. Jako nazwę społeczności wpisano  public  z prawami tylko do odczytu. Ustawiono możliwość przychodzących pakietów SNMP od dowolnego hosta. Zaletą monitoringu z pośrednictwem protokołu SNMP w odróżnieniu od usługi NRPE jest fakt, że nie musimy instalować dodatkowych pakietów w systemie Windows. Jedyna czynność to włączenie usługi SNMP Service i odpowiednie skonfigurowanie zapory sieciowej, zezwalającej ruch przychodzący SNMP.

 

 

Przykłady użycia:

gdzie:

- adres IP 192.168.1.27 jest adresem serwera Windows

- nazwa public jest nazwą społeczności ustawioną w usłudze SNMP Service w systemie Windows

 

 

Jakie procesy są uruchomione ?

 

Sprawdzamy czy na serwerze Windows są uruchomione procesy explorer.exe oraz virtualbox.exe

 

[root@nagios_server /]# /usr/lib64/nagios/plugins/check_win_processes 192.168.1.27 public explorer.exe virtualbox.exe

OK: 2 running process(es)

 

 

Obciążenie CPU

 

Sprawdzamy obciążenie CPU w systemie Windows, przy czym wartość WARNING oraz CRITICAL ustawiono odpowiednio na 80% i 90%

 

[root@nagios_server objects]# /usr/lib64/nagios/plugins/check_snmp_load.pl -H 192.168.1.27 -C public -w 80 -c 90

2 CPU, average load 10.0% < 80% : OK

 

(aktualne obciążenie 10%)

 

 

Wykorzystanie volumenów

 

Sprawdzamy zajętość dysków w systemie Windows (liczny 1,2,3,4,5 oznaczają kolejne dyski fizyczne w systemie bądź partycje)

 

[root@nagios_server objects]# /usr/lib64/nagios/plugins/check_win_snmp_disk.pl 192.168.1.27 public 1 80 90

CRITICAL : Percent Used : 92.5%, Total : 931.5 GiB, Used : 862.5 GiB,  Free : 69 GiB

 

[root@nagios_server objects]# /usr/lib64/nagios/plugins/check_win_snmp_disk.pl 192.168.1.27 public 2 80 90

CRITICAL : Percent Used : 99.8%, Total : 465.7 GiB, Used : 465.1 GiB,  Free : 602.7 MiB

 

[root@nagios_server objects]# /usr/lib64/nagios/plugins/check_win_snmp_disk.pl 192.168.1.27 public 3 80 90

WARNING : Percent Used : 85.3%, Total : 464.9 GiB, Used : 396.7 GiB,  Free : 68.2 GiB

 

[root@nagios_server objects]# /usr/lib64/nagios/plugins/check_win_snmp_disk.pl 192.168.1.27 public 4 80 90

OK : Percent Used : 23.9%, Total : 18.2 GiB, Used : 4.3 GiB,  Free : 13.9 GiB

 

[root@nagios_server objects]# /usr/lib64/nagios/plugins/check_win_snmp_disk.pl 192.168.1.27 public 5 80 90

OK : Percent Used : 26.8%, Total : 15.9 GiB, Used : 4.2 GiB,  Free : 11.6 GiB

 

 

 WAŻNE

Monitoring dysków odbywa się za pośrednictwem usługi SNMP Service w systemie Windows i nie ma znaczenia pod kontrolą jakiego systemu operacyjnego pracują dyski (np. jeśli mamy wirtualizację).

Przykład: System operacyjny gospodarza może pracować pod kontrolą systemu Linux, natomiast system gościa może być na Windowsie (i na odwrót). Monitorowane dyski nie muszą być widoczne z poziomu Windows’a (nawet jeśli są zainstalowane na tej samej fizycznej maszynie), mogą mieć również inny system plików.

 

Jeżeli chcemy monitorować przestrzeń konkretnej partycji np. C:\ możemy użyć następującego polecenia:

 

[root@nagios_server /]# /usr/lib64/nagios/plugins/check_win_snmp_storage.pl 192.168.1.27 public c 80 90

CRITICAL : Storage Used 92% : Total 1000203087872 bytes : Used 926104596480 bytes : Type Disk C

 

Pojemność partycji C w systemie Windows stanowi 1TB z czego 92% jest zajęte.

 

Wykorzystanie pamięci RAM

 

Sprawdzamy wykorzystanie pamięci RAM w systemie Windows

 

[root@nagios_server /]# /usr/lib64/nagios/plugins/check_snmp_memory -H 192.168.1.27 -C public -w 80 -c 90

Virtual Memory: 24% Physical Memory: 27% (<80%) : OK | 'Virtual_Memory'=4479.5625MB;14979;16852;0;18724 'Physical_Memory'=4374.1250MB;;;0;16292

 

W systemie zainstalowano 16GB pamięci z czego 27% jest zajęte.

 

 

Obciążenie interfejsu sieciowego

 

Monitoring interfejsu sieciowego w systemie Windows za pośrednictwem protokołu SNMP

 

[root@nagios_server /]# /usr/lib64/nagios/plugins/check_snmp_int.pl -H 192.168.1.27 -C public -k -M -w1,1 -c2,2 -n "Ethernet Connection I217-LM-WFP 802.3"

Intel(R) Ethernet Connection I217-LM-WFP 802.3 MAC Layer LightWeight Filter-0000:UP (0.0MBps/0.0MBps):1 UP: OK

 

gdzie:

 

"Ethernet Connection I217-LM-WFP 802.3" jest nazwą interfejsu w systemie Windows, przy czym w nazwie można również posługiwać się gwiazdką (*) wskazując grupę interfejsów np. "Ethernet Connection*"

 

-w2,2  wartość określająca tzw. WARNING

Pierwsza cyfra to jest „download” druga cyfra „upload” odpowiednio 2Mbps (download) , 2Mbps (upload)

-c3,3  wartość określająca tzw. CRITICAL

Pierwsza cyfra to jest „download” druga cyfra „upload” odpowiednio 3Mbps (download) , 3Mbps (upload)

 

Można również konfigurować wartości graniczne w kbps wtedy należy odpowiednio wyznaczyć wartość i zrezygnować z przełącznika „-M”

Przekroczenie zdefiniowanych wartości na interfejsie wywoła odpowiednie zdarzenie.

 

 

Pozostałe przykładowe listingi badania obciążenia interfejsu sieciowego zdalnej maszyny za pośrednictwem protokołu SNMP:

 

[root@nagios_server /]# /usr/lib64/nagios/plugins/check_snmp_int.pl -H 192.168.1.27 -C public -k -M -w2,2 -c3,3 -n "Ethernet Connection I217-LM"

Intel(R) Ethernet Connection I217-LM-WFP Native MAC Layer LightWeight Filter-0000:UP (0.0MBps/WARN 2.3MBps), Intel(R) Ethernet Connection I217-LM-QoS Packet Scheduler-0000:UP (0.0MBps/WARN 2.3MBps), Intel(R) Ethernet Connection I217-LM:UP (0.0MBps/WARN 2.3MBps), Intel(R) Ethernet Connection I217-LM-VirtualBox NDIS Light-Weight Filter-0000:UP (0.0MBps/WARN 2.3MBps), Intel(R) Ethernet Connection I217-LM-WFP 802.3 MAC Layer LightWeight Filter-0000:UP (0.0MBps/WARN 2.3MBps):(5 UP): WARNING |

 

[root@nagios_server /]# /usr/lib64/nagios/plugins/check_snmp_int.pl -H 192.168.1.27 -C public -k -M -w1,1 -c3,3 -n "Ethernet Connection I217-LM-WFP"

Intel(R) Ethernet Connection I217-LM-WFP Native MAC Layer LightWeight Filter-0000:UP (WARN 2.1MBps/0.0MBps), Intel(R) Ethernet Connection I217-LM-WFP 802.3 MAC Layer LightWeight Filter-0000:UP (WARN 2.1MBps/0.0MBps):(2 UP): WARNING |

 

[root@nagios_server /]# /usr/lib64/nagios/plugins/check_snmp_int.pl -H 192.168.1.27 -C public -k -M -w1,1 -c3,3 -n "Ethernet Connection I217-LM-WFP 802.3"

Intel(R) Ethernet Connection I217-LM-WFP 802.3 MAC Layer LightWeight Filter-0000:UP (CRIT 3.7MBps/0.1MBps):(1 UP): CRITICAL |

 

 

 

Prezentacja wizualna

 

Map

 

 

 

Hosts

 

 

 

Services

 

 

 

Host Groups

 

 

 

Host Groups Summary