Nagios 4 na CentOS 7 – monitoring Vindovs hosta (3/3)

Nastavljamo sa izmenama u konfiguraciji Nagios-a. Drugi, prethodni deo ovog uputstva možete videti ovde a za osnovnu instalaciju Nagios Core i Nagios plugin videti uputstvo na ovde. U ovom trećem i završnom delu tutorijala definisaćemo komande i servise koje ćemo nadgledati.

Pre nego što definišemo komande i pomoću njih i servise koje želimo da nadgledamo prvo da napravimo spisak šta bi želeli da nadgledamo:

  • Ping – automatski sa dodavanjem hosta imamo i nadgledanje i provera ping hosta
  • Provera FTP porta 21 – FTP server (zamenom u komandi 21 sa bilo kojim portom možemo da nadgledamo da li je otvoren bilo koji port koji nas zanima)
  • Provera 1 Vindovs procesa
  • Provera 1 Vindovs servisa
  • Zauzetost procesora
  • Zauzetost memorije
  • Zauzetost C:\ particije hard diska
  • Provera EventLog-a na greške u zadnjih X sati

Za prve dve odabrane stavke već postoje definisane komande u fajlu /usr/local/nagios/etc/objects/commands.cfg dok je za ostale potrebno da preuzmemo Nagios dodatke i da ih smestimo (ili instaliramo) na putanju /usr/local/nagios/libexec/.

Prvo da preuzmemo sledeće potrebne Nagios dodatke:

Za proveru Vindovs procesa koristimo sledeći Nagios plugin sa ovog linka.

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

Za proveru windows servisa koristimo sajt nagios.manubulon.com i dodatak 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

Za proveru zauzetosti CPU koristimo sajt nagios.manubulon.com i dodatak 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

Za proveru zauzetosti memorije i zauzetost particije hard diska koristimo sajt nagios.manubulon.com i dodatak 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

• DEFINISANJE KOMANDI

Krećemo sa definisanjem komandi

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

Već imamo definisanu komandu za proveru hosta preko pinga

# '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 }

…gde je:

  • $HOSTADDRESS$ – hostname ili IP adresa hosta koji se proverava
  • $USER1$ – ovu promenljivu smo definisali u fajlu resource.cfg i označava putanju /usr/local/nagios/libexec/ gde se nalaze Nagios izvršne komande
  • -w 3000 0,80% – warning ako je odziv preko 3s ili ako je 80% packet lost
  • -c 5000 0,100% – critical ako je odziv preko 5s ili ako imamo 100% packet lost
  • -p broj ICMP ECHO paketa koji se šalju

Definišemo komandu za proveru TCP porta – (proveriti da li već postoji)
U okviru dela SAMPLE SERVICE CHECK COMMANDS dodajemo sledeću definiciju:

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

Gde je…

  • $HOSTADDRESS$ – hostname ili IP adresa hosta koji se proverava
  • -p $ARG1$ $ARG2$ – broj porta koji proveravamo

Definišemo komandu za proveru Vindovs procesa
U okviru dela SAMPLE SERVICE CHECK COMMANDS dodajemo sledeću definiciju:

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

Gde je…

  • $HOSTADDRESS$ – hostname ili IP adresa hosta koji se proverava
  • $ARG1$ – community string Windows Server-a
  • $ARG2$ – tačno ime procesa koje proveravamo

Definišemo komandu za proveru Vindovs servisa
U okviru dela SAMPLE SERVICE CHECK COMMANDS dodajemo sledeću definiciju:

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

Gde je…

  • $HOSTADDRESS$ – hostname ili IP adresa hosta koji se proverava
  • $USER7$ – community string Windows Server-a
  • -n – ime servisa pod znacima navoda
  • -N – broj koliko se puta pojavljuje servis u Services

Definišemo komandu za proveru zauzetosti CPU
U okviru dela SAMPLE SERVICE CHECK COMMANDS dodajemo sledeću definiciju:

# '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$ }

Gde je

  • $HOSTADDRESS$ – hostname ili IP adresa hosta koji se proverava
  • $USER7$ – community string Windows Server-a
  • -w $ARG1$ – $ARG1$- warning broj koji izražava procente
  • -c $ARG2$ – $ARG2$ – critical broj koji izražava procente

Definišemo komandu za proveru zauzetosti memorije i zauzetost particije hard diska
U okviru dela SAMPLE SERVICE CHECK COMMANDS dodajemo sledeću definiciju:

# '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$ }

Gde je…

  • $HOSTADDRESS$ – hostname ili IP adresa hosta koji se proverava
  • $USER7$ – community string Windows Server-a
  • -m $ARG1$ – arg1 je ime šta nadgledamo, počinje sa specijalnim znakom ^ i iza ide ili labela particije za koju se proverava zauzetost ili ime za koju memoriju proveravamo zauzetost (Virtual Memory, RealMemory, RAM) što definišemo u okviru definicije samog servisa
  • -w $ARG2$ – $ARG2$- warning broj koji izražava procente
  • -c $ARG3$ – $ARG3$ – critical broj koji izražava procente

Prikaz dela fajla commands.cfg koji smo menjali:

commands

Provera rada komandi iz komandne linije

Pre nego što definišemo servise trebalo bi da proverimo rad komandi iz komandne linije. Odemo na putanju gde se nalaze komande…
cd /usr/local/nagios/libexec/

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

WinServer1 – ime našeg servera koje smo definisali u fajlu hosts.cfg, treba da dobijemo nešto slično kao:

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

Provera TCP portova

Ako su na serveru „WinServer1“ podignuti mysql, apache i ftp možemo da nadgledamo odgovarajuće portove..

Provera ftp porta

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

Provera mysql porta

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

Provera veb porta 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

Provera Vindovs procesa

Ako na serveru WinServer1 imamo jako bitan proces koji mora da bude aktivan non-stop onda njega možemo da nadgledamo.
Pretpostavka je da je omogućen SNMP servis na serveru, da je definisan community string i dodata IP adresa Nagiosa. Ukratko, otići u Control Panel – Services, naći SNMP Service, desni klik Properties, u tabu Traps dodati community string i u okviru Trap destinations dodati IP adresu Nagios servera. U tabu Agent čekirati sve opcije u okviru Service. U tabu Security čekirati Send authentication trap i dodati community string, i čekirati Accept SNMP packets from these hosts i tu dodati IP adresu Nagios servera.

Provere procesa mysqld.exe

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

Provera procesa tomcat7.exe (potrebno je navesti tačno ime procesa kakvo je u okviru taba Processes Task Manager-a)

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

ili

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

Provera Vindovs servisa

Ako na serveru WinServer1 imamo jako bitne servise koji moraju da budu startovani i da budu aktivni non-stop onda njih možemo da nadgledamo.
Pre provere servisa potrebno je preko cpan- instalirati modul Net::SNMP.

perl -MCPAN -e shell install Net::SNMP exit Potrebno je dodatno instalirati perl-NET-SNMP Komande su: yum install net-snmp-perl yum install epel-release yum install perl-NET-SNMP

Provera servisa
Pre same provere servisa potrebno je dodatno izmeniti Perl skript,
U liniji 259 i 317 gde stoji
$resultat = (Net::SNMP->VERSION < 4) ?
umesto znaka < treba staviti operater lt tako da linija izgleda $resultat = (Net::SNMP->VERSION lt 4) ?
cd /usr/local/nagios/libexec/
nano check_snmp_win.pl
To menjamo da ne bi dobili upozorenja pri izvršavanju komande
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

Provera zauzetosti CPU

Na serveru WinServer1 proveravamo opterećenost procesora – CPU load. Pre same provere opterećenosti CPU potrebno je dodatno izmeniti Perl skript, U liniji 681 gde stoji „my $resultat = (Net::SNMP->VERSION < 4) ?“ umesto znaka < treba staviti operater lt tako da linija izgleda „my $resultat = (Net::SNMP->VERSION lt 4) ?“
cd /usr/local/nagios/libexec/
nano check_snmp_load.pl
To menjamo da ne bi dobili upozorenja pri izvršavanju komande
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

Provera zauzetosti memorije
Na serveru WinServer1 proveravamo opterećenost memorije.
Pre same provere opterećenosti memorije potrebno je dodatno izmeniti Perl skript, U liniji 420 i 494 gde stoji if (Net::SNMP->VERSION < 4) {
umesto znaka < treba staviti operater lt tako da linija izgleda if (Net::SNMP->VERSION lt 4) {
cd /usr/local/nagios/libexec/
nano check_snmp_storage.pl
To menjamo da ne bi dobili upozorenja pri izvršavanju komande
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

Provera zauzetosti particija hard diska
Na serveru WinServer1 proveravamo zauzetost particija hard diska
Provera C:\ particije

./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

Provera D:\ particije

./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

Kada smo uspešno proverili komande koje ćemo koristiti u definisanju servisa vreme je da definišemo i servise.

 

• DEFINISANJE SERVISA
Kreiramo fajl i dopunimo ga dole definisanim parametrima
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! }

 

Na kraju sačuvamo fajl service.cfg i prvo proveravamo konfiguraciju Nagios-a pa onda restart Nagios-a.
Provera ispravnosti konfiguracije Nagios-a

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

Restart Nagios-a
/etc/init.d/nagios restart

Za naš server WinServer1 treba da dobijemo sledeću sliku za service status

Namestili smo monitoring najvažnijih portova, procesa i servisa kao i monitoring CPU, memorije i hard diska.

<<< POVRATAK NA 2. DEO

Ukoliko želite i vi da podelite sa zajednicom svoja iskustva, zapažanja, razmišljanja, uputstva ili bilo šta vezano za IT - dobrodošli ste na Kompjuteraš blogu. Više na ovom linku