Nagios je jedan od najboljih i najviše korišćenih open source softverskih alata namenjenih za nadgledanje stanja sistemskih i mrežnih resursa i komponenti.
Nagios nadgleda  servere, svičeve, rutere, aplikacije, servise, procese, portove,…

Pravovremeno upozorava System Administratore kada nešto u sistemu nije u redu a takođe ima i notifikaciju i kada se servis oporavi.

Sa Nagios-om možemo da nadgledamo udaljene host-ove i njihove servise sve u jednom prozoru. Pokazuje nam upozorenja (warnings), što može pomoći u otkrivanju, sprečavanju i rešavanju problema u sistemu dok se još nisu desili ili nisu napravili veću štetu u sistemu.
Pomaže nam da smanjimo vreme otkaza (downtime) i poslovnih gubitaka (business losses).
Originalno razvijen za rad pod Linux platforom, pri čemu odlično radi i pod ostalim UNIX  kompatibilnim platformama. Licenciran je pod uslovima GNU GPL licence verzija 2 koju je objavila Free Software Foundation.

Pregled važnijih mogućnosti

  • nadgledanje dostupnosti mrežnih servisa (PING, DNS, HTTP, SSH, SMTP, POP3, IMAP, itd.);
  • nadgledanje sistemskih resursa hostova (opterećenje procesora, iskorišćenost RAM memorije, opterećenje hard diskova, stanje mrežnih interfejsa, status vitalnih procesa, error ili warning logove u Event Logu,  itd;
  • jednostavni plagin (plug-in) koncept koji dozvoljava korisniku da lako razvija i implementira sopstvenove plaginove za nadgledanje specifičnih servisa;
  • otkrivanje i razlikovanje hostova koji su nedostupni od onih koji su pali pomoću ugrađenig koncepta roditeljskih hostova i mrežne hijerarhije;
  • obaveštavanje u slučaju pojave neregularnog rada hostova ili servisa i njihovog oporavka (putem e-maila, SMS-a ili nekom drugom korisničkom metodom(software Nagstamon));
  • mogućnost da se definišu unapred poznati događaja (event handlers) koji su aktivni za vreme izvršavanja servisa ili dešavanja događaja na hostu i koji mogu da rešavaju probleme proaktivno;
  • podrška za implementaciju redundantnih servera za nadgledanje IT infrastrukture;
  • podrška za implementaciju distribuiranog nadgledanja IT infrastrukture;
  • informativan web interfejs za uvid u tekući status mreže, poslata obaveštenja, istoriju problema, log datoteke, itd;
  • Brza identifikacija problema u IT sistemu pre nego što se ugrozi rad sistema;
  • pomaže nam u planiranju budžeta za IT nadogradnju;
  • Smanjuje vreme otkaza kao i cenu poslovnog gubitka usled otkaza određenog servisa ili usluge.

Na kraju instalacije dobićemo sledeće:

  1. Nagios i plaginovi biće instalirani na putanji /usr/local/nagios .
  2. Nagios će biti konfigurisan za nadgledanje nekoliko servisa lokalne mašine, samog servera (Disk Usage, CPU Load, Current Users, Total Processes, itd.)
  3. Nagios web interface biće dostupan na adresi http://IP-Address-Nagios-Servera/nagios

Nagios server

Operativni sistem: CentOS 7 minimal server
IP Address: IP-Address-Nagios-Servera
Hostname: NAGIOS

Korak 1: Instalacija neophodnih pomoćnih programa

Na početku potrebno je da instaliramo web servis Apache. Koristimo yum – podrazumevani paket instaler za CentOS. Pretpostavka je da smo preko ssh ulogovani preko nekog terminala (preporučujem putty ili Tera Term) kao root na naš server.

Prvo, očistimo yum:

yum clean all

Vodeći se uobičajenom praksom radimo i ažuriranje paketa:

yum -y update

Instalaciju Apache startujemo samo sa jednom komandom:

yum -y install httpd

Dozvoljavamo podrazumevane (default) HTTP i HTTPS portove, 80 i 443, kroz zaštitni zid firewalld komandama:

firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp

I reinicijalizujemo opet zaštitni zid posle promena komandom:

firewall-cmd --reload

Na kraju startujemo Apache:

systemctl start httpd

Proveravamo i postavljamo da se Apache startuje pri pokretanju servera:

systemctl enable httpd

Proveru statusa Apache servisa postižemo komandom:

systemctl status httpd

Komanda za stopiranje Apache-a:

systemctl stop httpd

Ako je sve u redu sa instalacijom potrebno je da dobijemo sledeću sliku kada u željeni internet pretraživač (web browser) ukucamo adresu našeg servera: http://IP-Address-Nagios-Servera/

Apache11

Instalacija ostalih pomoćnih i potrebnih programa (required dependencies)

Potrebno je da instaliramo PHP i još neke biblioteke kao što su gcc, glibc, glibc-common i GD bibilioteke kao i neke razvojne biblioteke pre nego što krenemo sa instalacijom Nagios 4.1.1. Komanda za instalaciju je sledeća:

yum install -y php gcc glibc glibc-common gd gd-devel make net-snmp nano unzip wget

Korak 2: Kreiranje Nagios korisnika i grupe

Kreiramo novog korisnika nagios i korisničku grupu nagcmd

useradd nagios
groupadd nagcmd

Sledeće, dodajemo i nagios i apache korisnika u korisničku grupu nagcmd.

usermod -G nagcmd nagios
usermod -G nagcmd apache

Korak 3: Preuzimanje i raspakivanje Nagios Core-a i Nagios Plugins paketa

Kreiramo direktorijum nagios za Nagios instalaciju i za sva buduća preuzimanja.

mkdir /root/nagios
cd /root/nagios

Pomoću komande wget preuzimamo poslednju verziju Nagios Core i Nagios plugins paketa.

wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-4.1.1.tar.gz
wget https://www.nagios-plugins.org/download/nagios-plugins-2.1.1.tar.gz

Potrebno je da raspakujemo preuzete pakete sa interneta pomoću komande tar na sledeći način:

tar -xvf nagios-4.1.1.tar.gz
tar -xvf nagios-plugins-2.1.1.tar.gz

Posle raspakivanja pojaviće se dva nova direktorijuma što proveravamo komandom ll
listdirnagios

Korak 4: Konfiguracija i instalacija Nagios Core- a

Prvo ćemo konfigurisati Nagios Core, a da bi to odradili idemo u Nagios direktorijum i pokrenemo komandu configure i definišemo komandnu grupu. Ovde sad koristimo osnovnu formu ove komande bez dodatnih opcija.

cd nagios-4.1.1
 ./configure --with-command-group=nagcmd

U punom obliku komanda configure glasi:
./configure –prefix=/usr/local/nagios –with-cgiurl=/nagios/cgi-bin –with-htmurl=/nagios/ –with-nagios-user=nagios –with-nagios-group=nagcmd –with-command-group=nagcmd
gde je:
–prefix=/usr/local/nagios – Nagios root folder
–with-cgiurl=/nagios/cgi-bin – Nagios CGI folder
–with-htmurl=/nagios/ – Nagios HTML/Website folder
–with-nagios-user=nagios – Nagios korisnik
–with-nagios-group=nagcmd – Nagios grupa
–with-command-group=nagcmd – Nagios command group u kojoj su članovi webserver korisnik apache i nagios korisnik.

Ako je konfiguracija prošla bez problema prikazaće se na kraju Configuration summary kao na sledećoj slici:
confsummarynagios
Posle konfiguracije potrebno je da kompajliramo i instaliramo binarne fajlove sa komandama make all i make install. Ovim instaliramo sve potrebne biblioteke i možemo da nastavimo dalju konfiguraciju.

make all
make install

Izlaz posle komandi je sledeći:
mainnagios

Sledeća komanda make install-init instaliraće init skripte u direktorijum /etc/rc.d/init.d za Nagios.

make install-init

Da bi omogućili da nagios radi i iz komandne linije potrebno je da instaliramo command-mode.

make install-commandmode

Sledeće je instalacija uobičajenih nagios fajlova u direktorijum /usr/local/nagios/etc sa sledećom komandom:

make install-config

Na ekranu dobijamo sledeći prikaz ako je sve proteklo u redu:
confsummarynagios2

Korak 5: Prilagođavanje Nagios konfiguracije

Otvorimo fajl “contacts.cfg” sa nekim tekst editorom i treba da postavimo mejl adresu za korisnika nagiosadmin u samoj definiciji kontakta da bi primali notifikaciju preko mejla za otkaz i/ili oporavak servisa ili hosta.

nano /usr/local/nagios/etc/objects/contacts.cfg

Ekranski prikaz:
menjamo liniju
email nagios@localhost ; <<****** CHANGE TO YOUR EMAIL ADDRESS ********
contact

Restartujemo Apache:

systemctl restart httpd

Korak 6: Instalacija i konfiguracija Web Interface za Nagios

Sada je potrebno da konfigurišemo Web Interface za Nagios. Sledeće komande će konfigurisati Web interface za Nagios kao i web admin korisnika “nagiosadmin”.

make install-webconf

Sledeće je da promenimo fajl nagios.conf na putanji /etc/httpd/conf.d/.

nano /etc/httpd/conf.d/nagios.conf

Menjamo linije ako želimo da pristupimo nagios administrative console iz tačno definisanih IP opsega.

nagioscfg

U sledećem koraku kreiramo lozinku za web admin korisnika “nagiosadmin”. Posle sledeće komande upisujemo lozinku koju ćemo koristiti pri logovanju na Nagios Web interface pa ju je potrebno zapamtiti.

htpasswd -s -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

httpasswdnagiosadmin

Restart Apache da bi promene koje smo uradili imali efekta

systemctl restart httpd

Korak 7: Kompajliranje i instalacija Nagios Plugin-a

Sa interneta smo već preuzeli nagios plugins i smestili u direktorijum /root/nagios. Idemo u taj direktorijum i sa već poznatim komandama radimo konfiguraciju i instalaciju plaginova:

cd /root/nagios
cd nagios-plugins-2.1.1
 ./configure --with-nagios-user=nagios --with-nagios-group=nagcmd
make
make install

Korak 8: Verifikacija (proveravanje) ispravnosti Nagios konfiguracionoh fajlova

Na kraju posle instalacije i konfiguracije Nagios-a potrebno je proveriti njegovu ispravnost i to radimo sledećom komandom:

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

Ako je sve prošlo bez problema i grešaka dobićemo sledeći ekran:
nagioscore

Korak 9: Dodavanje Nagios servisa u System Startup

Da bi obezbedili da se Nagios podigne i radi posle restarta mašine potrebno je da dodamo nagios servis u startup sa komandom chkconfig.

chkconfig --add nagios
chkconfig --level 35 nagios on

Restartujemo Nagios da bi promene koje smo uradili imali efekta.

systemctl start nagios

Adjust SELinux Settings

Podrazumevana vrednost za SELinux je enforcing mode i možemo da dobijemo grešku sa porukom “Internal Server Error” kada pokušamo da pristupimo Nagios CGIs.
Da bi izbegli ovu grešku, menjamo fajl config na putanji /etc/selinux/:

nano /etc/selinux/config

Setujemo SELinux na permissive mode kao na sledećoj slici.
selinux

Restartujemo server kako bi promene koje smo napravili imali efekta ili umesto restarta startujemo komandu

setenforce 0

Korak 10: Prijavljivanje na Nagios Web Interface

Nagios je spreman za rad i prijavljujemo se preko web browser-a ukucavanjem adrese “http://Your-server-IP-address/nagios” i dobijamo prozor u kome treba da unesemo korisničko ime “nagiosadmin” i lozinku.

Nagios Login – prozor za prijavu na web interface
Login

Nagios Web Interface
WebInterface

Host View – pregled nadgledanih host-ova
HostView

Nagios Overview – prozor za opšti prikaz šta se sve nadgleda (monitoriše)
Overview

Service View – pregled nadgledanih service-a
ServiceView

Process View – pregled samog Nagios Process-a i informacija o njemu
Process

Čestitamo. Ovim smo uspešno instalirali i konfigurisali Nagios i njegove dodatke – Plugins. Ovo je tek početak u procesu nadgledanja i monitorisanja sa Nagios-om. Nastaviće se…