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 који смо мењали:
Провера рада команди из командне линије
Пре него што дефинишемо сервисе требало би да проверимо рад команди из командне линије. Одемо на путању где се налазе команде…
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, меморије и хард диска.