Nagios 4 на ЦентОС 7 – мониторинг Виндовс хоста (3/3)

Настављамо са изменама у конфигурацији Nagios-а. Други, претходни део овог упутства можете видети овде а за основну инсталацију Nagios Core и Nagios plugin видети упутство на овде. У овом трећем и завршном делу туторијала дефинисаћемо команде и сервисе које ћемо надгледати.

Пре него што дефинишемо команде и помоћу њих и сервисе које желимо да надгледамо прво да направимо списак шта би желели да надгледамо:

  • Ping – аутоматски са додавањем хоста имамо и надгледање и провера пинг хоста
  • Провера FTP порта 21 – FTP сервер (заменом у команди 21 са било којим портом можемо да надгледамо да ли је отворен било који порт који нас занима)
  • Провера 1 Виндовс процеса
  • Провера 1 Виндовс сервиса
  • Заузетост процесора
  • Заузетост меморије
  • Заузетост C:\ партиције хард диска
  • Провера EventLog-а на грешке у задњих X сати

За прве две одабране ставке већ постоје дефинисане команде у фајлу /usr/local/nagios/etc/objects/commands.cfg док је за остале потребно да преузмемо Nagios додатке и да их сместимо (или инсталирамо) на путању /usr/local/nagios/libexec/.

Прво да преузмемо следеће потребне Nagios додатке:

За проверу Виндовс процеса користимо следећи Nagios plugin са овог линка.

mkdir nagios-plugins
cd nagios-plugins
wget –O check_win_processes “https://exchange.nagios.org/components/com_mtree/attachment.php?link_id=947/&cf_id=24”
cp /root/nagios-plugins/check_win_processes /usr/local/nagios/libexec/
chown nagios /usr/local/nagios/libexec/check_win_processes
chmod 777 /usr/local/nagios/libexec/check_win_processes

За проверу windows сервиса користимо сајт nagios.manubulon.com и додатак check_snmp_win.pl.

wget http://nagios.manubulon.com/check_snmp_win.pl
cp /root/nagios-plugins/check_snmp_win.pl /usr/local/nagios/libexec/
chown nagios /usr/local/nagios/libexec/check_snmp_win.pl
chmod 777 /usr/local/nagios/libexec/check_snmp_win.pl

За проверу заузетости CPU користимо сајт nagios.manubulon.com и додатак check_snmp_load.pl

wget http://nagios.manubulon.com/check_snmp_load.pl
cp /root/nagios-plugins/check_snmp_load.pl /usr/local/nagios/libexec/
chmod 777 /usr/local/nagios/libexec/check_snmp_load.pl

За проверу заузетости меморије и заузетост партиције хард диска користимо сајт nagios.manubulon.com и додатак check_snmp_storage.pl

wget http://nagios.manubulon.com/check_snmp_storage.pl
cp /root/nagios-plugins/check_snmp_storage.pl /usr/local/nagios/libexec/
chown nagios /usr/local/nagios/libexec/check_snmp_storage.pl
chmod 777 /usr/local/nagios/libexec/check_snmp_storage.pl

• ДЕФИНИСАЊЕ КОМАНДИ

Крећемо са дефинисањем команди

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

Већ имамо дефинисану команду за проверу хоста преко пинга

# 'check-host-alive' command definition
define command{
command_name check-host-alive
command_line $USER1$/check_ping -H $HOSTADDRESS$ -w 3000.0,80% -c 5000.0,100% -p 5
}

…где је:

  • $HOSTADDRESS$ – hostname или IP адреса хоста који се проверава
  • $USER1$ – ову променљиву смо дефинисали у фајлу resource.cfg и означава путању /usr/local/nagios/libexec/ где се налазе Nagios извршне команде
  • -w 3000 0,80% – warning ако је одзив преко 3s или ако је 80% packet lost
  • -c 5000 0,100% – critical ако је одзив преко 5s или ако имамо 100% packet lost
  • -p број ICMP ECHO пакета који се шаљу

Дефинишемо команду за проверу TCP порта – (проверити да ли већ постоји)
У оквиру дела SAMPLE SERVICE CHECK COMMANDS додајемо следећу дефиницију:

# 'check_tcp' command definition
define command{
command_name check_tcp
command_line $USER1$/check_tcp -H $HOSTADDRESS$ -p $ARG1$ $ARG2$
}

Где је…

  • $HOSTADDRESS$ – hostname или IP адреса хоста који се проверава
  • -p $ARG1$ $ARG2$ – број порта који проверавамо

Дефинишемо команду за проверу Виндовс процеса
У оквиру дела SAMPLE SERVICE CHECK COMMANDS додајемо следећу дефиницију:

define command {
command_name check_win_process
command_line $USER1$/check_win_processes $HOSTADDRESS$ $ARG1$ $ARG2$
}

Где је…

  • $HOSTADDRESS$ – hostname или IP адреса хоста који се проверава
  • $ARG1$ – community string Windows Server-a
  • $ARG2$ – тачно име процеса које проверавамо

Дефинишемо команду за проверу Виндовс сервиса
У оквиру дела SAMPLE SERVICE CHECK COMMANDS додајемо следећу дефиницију:

define command {
command_name check_win_servis
command_line $USER1$/check_snmp_win.pl -H $HOSTADDRESS$ $USER7$ -n $ARG1$ -N $ARG2$
}

Где је…

  • $HOSTADDRESS$ – hostname или IP адреса хоста који се проверава
  • $USER7$ – community string Windows Server-a
  • -n – име сервиса под знацима навода
  • -N – број колико се пута појављује сервис у Services

Дефинишемо команду за проверу заузетости CPU
У оквиру дела SAMPLE SERVICE CHECK COMMANDS додајемо следећу дефиницију:

# 'check_snmp_load_v1' command definition
define command{
command_name check_snmp_load_v1
command_line $USER1$/check_snmp_load.pl -H $HOSTADDRESS$ $USER7$ -w $ARG1$ -c $ARG2$ $ARG3$
}

Где је

  • $HOSTADDRESS$ – hostname или IP адреса хоста који се проверава
  • $USER7$ – community string Windows Server-a
  • -w $ARG1$ – $ARG1$- warning број који изражава проценте
  • -c $ARG2$ – $ARG2$ – critical број који изражава проценте

Дефинишемо команду за проверу заузетости меморије и заузетост партиције хард диска
У оквиру дела SAMPLE SERVICE CHECK COMMANDS додајемо следећу дефиницију:

# 'check_snmp_storage_v1' command definition
define command{
command_name check_snmp_storage_v1
command_line $USER1$/check_snmp_storage.pl -H $HOSTADDRESS$ $USER7$ -m $ARG1$ -w $ARG2$ -c $ARG3$ $ARG4$
}

Где је…

  • $HOSTADDRESS$ – hostname или IP адреса хоста који се проверава
  • $USER7$ – community string Windows Server-a
  • -m $ARG1$ – arg1 је име шта надгледамо, почиње са специјалним знаком ^ и иза иде или лабела партиције за коју се проверава заузетост или име за коју меморију проверавамо заузетост (Virtual Memory, RealMemory, RAM) што дефинишемо у оквиру дефиниције самог сервиса
  • -w $ARG2$ – $ARG2$- warning број који изражава проценте
  • -c $ARG3$ – $ARG3$ – critical број који изражава проценте

Приказ дела фајла commands.cfg који смо мењали:

commands

Провера рада команди из командне линије

Пре него што дефинишемо сервисе требало би да проверимо рад команди из командне линије. Одемо на путању где се налазе команде…
cd /usr/local/nagios/libexec/

# Provera pinga
./check_ping -H WinServer1 -w 3000.0,80% -c 5000.0,100% -p 5

WinServer1 – име нашег сервера које смо дефинисали у фајлу hosts.cfg, треба да добијемо нешто слично као:

PING OK - Packet loss = 0%, RTA = 0.47 ms|rta=0.471000ms;3000.000000;5000.000000;0.000000 pl=0%;80;100;0

Провера TCP портова

Ако су на серверу „WinServer1“ подигнути mysql, apache и ftp можемо да надгледамо одговарајуће портове..

Провера ftp порта

./check_tcp -H WinServer1 -p 21
TCP OK - 0.002 second response time on WinServer1 port 21|time=0.002343s;;;0.000000;10.000000

Провера mysql порта

./check_tcp -H WinServer1 -p 3306
TCP OK - 0.001 second response time on WinServer1 port 3306|time=0.001026s;;;0.000000;10.000000

Провера веб порта 8080

./check_tcp -H WinServer1 -p 8080
TCP OK - 0.001 second response time on WinServer1 port 8080|time=0.001034s;;;0.000000;10.000000

Провера Виндовс процеса

Ако на серверу WinServer1 имамо јако битан процес који мора да буде активан нoн-стоп онда њега можемо да надгледамо.
Претпоставка је да је омогућен SNMP сервис на серверу, да је дефинисан community string и додата IP адреса Nagiosа. Укратко, отићи у Control Panel – Services, наћи SNMP Service, десни клик Properties, у табу Traps додати community string и у оквиру Trap destinations додати IP адресу Nagios сервера. У табу Agent чекирати све опције у оквиру Service. У табу Security чекирати Send authentication trap и додати community string, и чекирати Accept SNMP packets from these hosts и ту додати IP адресу Nagios сервера.

Провере процеса mysqld.еxе

./check_win_processes WinServer1 communitystring mysqld.exe
OK: 1 running process(es)

Провера процеса tomcat7.exe (потребно је навести тачно име процеса какво је у оквиру таба Processes Task Manager-а)

./check_win_processes WinServer1 communitystring tomcat7.exe
OK: 1 running process(es)

или

./check_win_processes WinServer1 communitystring mysqld.exe tomcat7.exe
OK: 2 running process(es)

Провера Виндовс сервиса

Ако на серверу WinServer1 имамо јако битне сервисе који морају да буду стартовани и да буду активни нон-стоп онда њих можемо да надгледамо.
Пре провере сервиса потребно је преко cpan- инсталирати модул Net::SNMP.

perl -MCPAN -e shell
install Net::SNMP
exit
Потребно је додатно инсталирати perl-NET-SNMP
Команде су:
yum install net-snmp-perl
yum install epel-release
yum install perl-NET-SNMP

Провера сервиса
Пре саме провере сервиса потребно је додатно изменити Perl скрипт,
У линији 259 и 317 где стоји
$resultat = (Net::SNMP->VERSION < 4) ?
уместо знака < треба ставити оператер lt тако да линија изгледа $resultat = (Net::SNMP->VERSION lt 4) ?
cd /usr/local/nagios/libexec/
nano check_snmp_win.pl
То мењамо да не би добили упозорења при извршавању команде
Argument „v6.0.1“ isn’t numeric in numeric lt (<) at ./check_snmp_win.pl line 259.
Argument „v6.0.1“ isn’t numeric in numeric lt (<) at ./check_snmp_win.pl line 317

Provera MySQL56 servisa ./check_snmp_win.pl -H WinServer1 –C communitystring -n MySQL56 -N 1 1 services active (matching „MySQL56“) : OK
Provera Apache servisa ./check_snmp_win.pl -H WinServer1 -C communitystring -n „Apache Tomcat 7“ -N 1 1 services active (matching „Apache Tomcat 7“) : OK

Провера заузетости CPU

На серверу WinServer1 проверавамо оптерећеност процесора – CPU load. Пре саме провере оптерећености CPU потребно је додатно изменити Perl скрипт, У линији 681 где стоји „my $resultat = (Net::SNMP->VERSION < 4) ?“ уместо знака < треба ставити оператер lt тако да линија изгледа „my $resultat = (Net::SNMP->VERSION lt 4) ?“
cd /usr/local/nagios/libexec/
nano check_snmp_load.pl
То мењамо да не би добили упозорења при извршавању команде
Argument „v6.0.1“ isn’t numeric in numeric lt (<) at ./check_snmp_load.pl line 681.

./check_snmp_load.pl -H WinServer1 -C communitystring -w 70 -c 95
1 CPU, load 6.0% < 70% : OK

Провера заузетости меморије
На серверу WinServer1 проверавамо оптерећеност меморије.
Пре саме провере оптерећености меморије потребно је додатно изменити Perl скрипт, У линији 420 и 494 где стоји if (Net::SNMP->VERSION < 4) {
уместо знака < треба ставити оператер lt тако да линија изгледа if (Net::SNMP->VERSION lt 4) {
cd /usr/local/nagios/libexec/
nano check_snmp_storage.pl
То мењамо да не би добили упозорења при извршавању команде
Argument „v6.0.1“ isn’t numeric in numeric lt (<) at ./check_snmp_storage.pl line 420.
Argument „v6.0.1“ isn’t numeric in numeric lt (<) at ./check_snmp_storage.pl line 494.

./check_snmp_storage.pl -H WinServer1 -C communitystring -m "Virtual Memory" -w 70 -c 95
Virtual Memory: 50%used(3066MB/6141MB) (<70%) : OK

Провера заузетости партиција хард диска
На серверу WinServer1 проверавамо заузетост партиција хард диска
Провера C:\ партиције

./check_snmp_storage.pl -H WinServer1 -C communitystring -m ^C: -w 80 -c 95
C:\ Label: Serial Number fa685589: 68%used(174495MB/255896MB) (<80%) : OK

Провера D:\ партиције

./check_snmp_storage.pl -H WinServer1 -C communitystring -m ^D: -w 80 -c 95
D:\ Label:Podaci Serial Number 98c534f0: 58%used(149285MB/255997MB) (<80%) : OK

Када смо успешно проверили команде које ћемо користити у дефинисању сервиса време је да дефинишемо и сервисе.

 

• ДЕФИНИСАЊЕ СЕРВИСА
Креирамо фајл и допунимо га доле дефинисаним параметрима
cd /usr/local/nagios/etc/objects/
nano /usr/local/nagios/etc/objects/services.cfg

########################################################################
###############################################################################
#
# SERVICE DEFINITIONS
#
###############################################################################
###############################################################################

# Definisanje servisa ping za grupu hostova windows-servers, ostale se dodaju iza zaresa po potrebi
define service{
use generic-service,Service-graph
hostgroup_name windows-servers
service_description PING
check_command check_ping!500.0,20%!1500.0,60%
}


# Definisanje servisa provere TCP porta MySQL – 3306, novi hostovi se dodaju iza
# WinServer1 odvojeno zarezom (WinServer1, WinServer2)
define service{
use generic-service
host_name WinServer1
service_description MySQL-port
check_command check_tcp!3306
}


# Definisanje servisa provere TCP porta Apache-a – 8080
define service{
use generic-service
host_name WinServer1
service_description Apache-port
check_command check_tcp!8080
}


# Definisanje servisa provere TCP porta FTP-a – 21
define service{
use generic-service
host_name WinServer1
service_description FTP-port
check_command check_tcp!21
}


#Definisanje servisa provere MySQL procesa mysqld.exe
define service{
use generic-service
host_name WinServer1
service_description MySQL proces
check_command check_win_process!communitystring!mysqld.exe
}


# Definisanje servisa provere Apache Tomcat servisa
define service{
use generic-service
host_name WinServer1
service_description Provera Apache Tomcat servisa
check_command check_win_servis!'Apache Tomcat 7'!1
}


# Definisanje servisa provere zauzetosti CPU
define service{
use generic-service,Service-graph
host_name WinServer1
service_description Zauzetost CPU
check_command check_snmp_load_v1!70!95
}


# Definisanje servisa zauzetosti memorije
define service{
use generic-service,Service-graph
host_name WinServer1
service_description Zauzetost memorije
check_command check_snmp_storage_v1!^Virtual Memory$!85!95
}


# Definisanje servisa zauzetosti C particije hard diska
define service{
use generic-service,Service-graph
host_name WinServer1
service_description Zauzetost particije C hard diska
check_command check_snmp_storage_v1!^C:!85!95!
}


# Definisanje servisa zauzetosti D particije hard diska
define service{
use generic-service,Service-graph
host_name WinServer1
service_description Zauzetost particije D hard diska
check_command check_snmp_storage_v1!^D:!85!95!
}

 

На крају сачувамо фајл service.cfg и прво проверавамо конфигурацију Nagios-a па онда рестарт Nagios-a.
Провера исправности конфигурације Nagios-a

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

Рестарт Nagios-a
/etc/init.d/nagios restart

За наш сервер WinServer1 треба да добијемо следећу слику за service статус

Наместили смо мониторинг најважнијих портова, процеса и сервиса као и мониторинг CPU, меморије и хард диска.

<<< ПОВРАТАК НА 2. ДЕО