Si të shkruani një shtesë të personalizuar të kontrollit Nagios
Ky tutorial u testua duke përdorur Debian 9.2
Edhe pse Nagios Exchange ka mijëra shtojca të disponueshme për t'u shkarkuar lirisht, ndonjëherë statusi që duhet të kontrollohet është shumë specifik për skenarin tuaj.
Konsideratat
Supozohet se:
- Ju keni instaluar dhe ekzekutuar Nagios (Mund ta ndiqni këtë tutorial nëse jo).
- Ju i dini bazat e administrimit të Nagios.
Serveri Nagios në këtë shembull është pritur në 192.168.0.150 dhe një klient shembull është pritur në IP 192.168.0.200
Kodet e daljes
Për të identifikuar statusin e një shërbimi të monitoruar, Nagios ekzekuton një shtojcë kontrolli mbi të. Nagios mund të tregojë se cili është statusi i shërbimit duke lexuar kodin e daljes së çekut.
Nagios kupton kodet e mëposhtme të daljes:
- 0 - Shërbimi është në rregull.
- 1 - Shërbimi ka një PARALAJMËRIM.
- 2 - Shërbimi është në një status KRITIK.
- 3 - Statusi i shërbimit është I PANJOHUR.
Një program mund të shkruhet në çdo gjuhë për të funksionuar si një shtesë kontrolli Nagios. Bazuar në gjendjen e kontrolluar, shtojca mund ta bëjë Nagios të ndërgjegjshëm për një shërbim që nuk funksionon.
Shembull Plugin
Unë do të përdor një shembull të thjeshtë. Shkrova një shtojcë në një skript bash për të kontrolluar paralajmërimet aktuale. Le të marrim parasysh se e kam serverin Nagios të konfiguruar për të sinjalizuar vetëm në statusin kritik, kështu që unë dua një alarm nëse kam shumë shërbime në një status paralajmërimi.
Merrni parasysh skriptin e mëposhtëm (check_warnings.sh):
#!/bin/bash
countWarnings=$(/usr/local/nagios/bin/nagiostats | grep "Ok/Warn/Unk/Crit:" | sed 's/[[:space:]]//g' | cut -d"/" -f5)
if (($countWarnings<=5)); then
echo "OK - $countWarnings services in Warning state"
exit 0
elif ((6<=$countWarnings && $countWarnings<=30)); then
# This case makes no sense because it only adds one warning.
# It is just to make an example on all possible exits.
echo "WARNING - $countWarnings services in Warning state"
exit 1
elif ((30<=$countWarnings)); then
echo "CRITICAL - $countWarnings services in Warning state"
exit 2
else
echo "UNKNOWN - $countWarnings"
exit 3
fi
Bazuar në informacionin e dhënë nga mjeti nagiostats, supozoj se gjithçka është në rregull nëse ka pesë ose më pak shërbime në gjendjen Paralajmëruese.
Unë do ta lë këtë skript me të gjitha shtojcat e tjera Nagios brenda /usr/local/nagios/libexec/ (Kjo direktori mund të jetë e ndryshme në varësi të konfigurimit tuaj).
Ashtu si çdo shtojcë Nagios, do të dëshironi të kontrolloni nga linja e komandës përpara se ta shtoni atë në skedarët e konfigurimit.
Mos harroni të lejoni ekzekutimin e skenarit:
sudo chmod +x /usr/local/nagios/libexec/check_warnings.sh
Dhe pastaj ekzekutojeni si çdo skript tjetër:
Rezultati është një mesazh me tekst dhe një kod daljeje:
Vendosni një komandë dhe shërbim të ri kontrolli
Ky hap do të jetë i njëjtë me shtojcat tuaja, dhe nëse shkarkoni një shtojcë të palës së tretë gjithashtu nga interneti.
Së pari ju duhet të përcaktoni një komandë në skedarin commands.cfg. Vendndodhja e skedarit varet nga konfigurimi që keni bërë, në rastin tim është në /usr/local/nagios/etc/objects/commands.cfg.
Kështu që unë do të shtoj në fund të skedarit bllokun e mëposhtëm:
# Custom plugins commands...
define command{
command_name check_warnings
command_line $USER1$/check_warnings.sh
}
Mos harroni se ndryshorja $USER1$, është një variabël lokal Nagios i vendosur në skedarin resource.cfg, në rastin tim duke treguar /usr/local/nagios/libexec.
Pas përcaktimit të komandës, mund ta lidhni atë komandë me një shërbim, dhe më pas me një host. Në këtë shembull ne do të përcaktojmë një shërbim dhe do t'ia caktojmë atë localhost, sepse ky kontroll është në vetë Nagios.
Redaktoni skedarin /usr/local/nagios/etc/objects/localhost.cfg dhe shtoni bllokun e mëposhtëm:
# Example - Check current warnings...
define service{
use local-service
host_name localhost
service_description Nagios Server Warnings
check_command check_warnings
}
Tani jemi gati, e vetmja gjë në pritje është ringarkimi i Nagios për të lexuar përsëri skedarët e konfigurimit.
Gjithmonë mbani mend, përpara se të ringarkoni Nagios, kontrolloni që të mos ketë gabime në konfigurim. Ju e bëni këtë me komandën nagios -v si rrënjë:
sudo /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
Ju duhet të merrni diçka të tillë:
Sigurohuni që të kthejë 0 gabime dhe 0 paralajmërime dhe vazhdoni të ringarkoni shërbimin:
sudo systemctl reload-or-restart nagios.service
Pas ringarkimit të shërbimit, do të shihni kontrollin e lidhur në localhost. Së pari si në pritje:
Dhe pas ekzekutimit me rezultatin e tij:
Përdorni NRPE për të ekzekutuar te klientët
Për të ekzekutuar një skript në një klient në distancë, do t'ju duhet të konfiguroni Nagios Remote Plugin Executor (NRPE)
Meqenëse ky tutorial bazohet në Debian 9, unë do të tregoj si shembull se si ta instaloni atë, por ju mund të gjeni udhëzime për çdo shpërndarje.
Instalim gjenerik në Klientin e bazuar në Debian
Vini re se i gjithë konfigurimi në këtë seksion është bërë në klientin që do të kontrollohet, jo në serverin nagios.
Instaloni shtojcat NRPE dhe Nagios:
sudo apt-get install libcurl4-openssl-dev nagios-plugins nagios-nrpe-server nagios-nrpe-plugin --no-install-recommends
sudo ln -s /usr/lib/nagios/plugins/check_nrpe /usr/bin/check_nrpe
Lejo serverin Nagios të ekzekutojë komanda në klient duke e shtuar atë në hyrjen e lejuar_hosts në /etc/nagios/nrpe.cfg. Linja duhet të duket si kjo:
allowed_hosts=127.0.0.1,::1,192.168.0.150
Përcaktoni kontrollet standarde që do të kryeni për çdo klient me NRPE. Përcaktoni kontrollet në /etc/nagios/nrpe_local.cfg. Për shembull, një model për skedarin mund të jetë:
######################################
# Do any local nrpe configuration here
######################################
#-----------------------------------------------------------------------------------
# Users
command[check_users]=/usr/lib/nagios/plugins/check_users -w 5 -c 10
# Load
command[check_load]=/usr/lib/nagios/plugins/check_load -w 15,10,5 -c 30,25,20
command[check_zombie_procs]=/usr/lib/nagios/plugins/check_procs -w 5 -c 10 -s Z
command[check_total_procs]=/usr/lib/nagios/plugins/check_procs -w 150 -c 200
# Disk
command[check_root]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /
command[check_boot]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /boot
command[check_usr]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /usr
command[check_var]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /var
command[check_tmp]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /tmp
# If you want to add a non-standard mount point:
# command[check_mnt1]=/usr/lib/nagios/plugins/check_disk -w 4% -c 1% -p /export
#-----------------------------------------------------------------------------------
Ideja për të pasur atë skedar gjenerik është që të mund të kontrolloni të njëjtën gjë për çdo klient.
Sigurohuni që skedari lokal dhe drejtoria .d të përfshihen në skedarin kryesor të konfigurimit me:
cat /etc/nagios/nrpe.cfg | grep include | grep -v ^#
Rinisni shërbimin:
sudo systemctl restart nagios-nrpe-server.service
Kontrolloni që shërbimi NRPE po funksionon:
cat /etc/services | grep nrpe
netstat -at | grep nrpe
Tani kontrolloni një nga komandat e përcaktuara më parë NRPE nga serveri Nagios:
Vini re se komanda check_users NRPE u përcaktua në skedarin /etc/nagios/nrpe_local.cfg për të ekzekutuar /usr/lib/nagios/plugins/check_users -w 5 -c 10.
Në rast se nuk e keni shtojcën në serverin Nagios, mund ta instaloni me:
sudo apt-get install nagios-nrpe-plugin
Pra, duke përmbledhur, NRPE do të ekzekutojë një skript në një host të largët dhe do të kthejë kodin e daljes në serverin Nagios.
Konfigurimi për skriptet e personalizuara
Për të përdorur një skript të personalizuar si një shtojcë për të ekzekutuar nga distanca përmes NRPE, fillimisht duhet të shkruani skriptin në server, për shembull në /usr/local/scripts/check_root_home_du.sh:
#!/bin/bash
homeUsage=$(du -s /root/ | cut -f1)
if (($homeUsage<=$((1024*1024)))); then
echo "OK - Root home usage is $(du -sh /root/ | cut -f1)"
exit 0
elif (($((1024*1024))<$homeUsage && $homeUsage<=$((3*1024*1024)))); then
echo "WARNING - Root home usage is $(du -sh /root/ | cut -f1)"
exit 1
elif (($((3*1024*1024))<$homeUsage)); then
echo "CRITICAL - Root home usage is $(du -sh /root/ | cut -f1)"
exit 2
else
echo "UNKNOWN - Value received: $homeUsage"
exit 3
fi
Lejo ekzekutimin e skenarit:
sudo chmod +x /usr/local/scripts/check_root_home_du.sh
Skripti i mëparshëm është një shembull shumë i thjeshtë, duke kontrolluar përdorimin e diskut të drejtorisë /root dhe duke vendosur një prag për ta konsideruar atë në rregull, paralajmërim ose kritik.
Shtoni komandën në skedarin e konfigurimit NRPE në klient (/etc/nagios/nrpe_local.cfg):
# Custom
command[check_root_home_du]=/usr/local/scripts/check_root_home_du.sh
Dhe rinisni dëgjuesin NRPE:
sudo systemctl restart nagios-nrpe-server.service
Tani mund të hyjmë në server dhe ta testojmë atë si çdo shtojcë standarde
Vendosni kontrollin NRPE në skedarët e konfigurimit të serverit
Tani e dimë që shtojca e personalizuar është duke punuar në klient dhe në server, dhe se NRPE po komunikon saktë, ne mund të vazhdojmë dhe të konfigurojmë skedarët Nagios për të kontrolluar pajisjen në distancë. Pra, në server vendosni skedarët:
/usr/local/nagios/etc/objects/commands.cfg:
#...
define command{
command_name check_nrpe
command_line /usr/lib/nagios/plugins/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
/usr/local/nagios/etc/objects/nrpeclient.cfg:
define host{
use linux-server
host_name nrpeclient
alias nrpeclient
address 192.168.0.200
}
define service{
use local-service
host_name nrpeclient
service_description Root Home Usage
check_command check_nrpe!check_root_home_du
}
Vini re se ! Shenja ndan komandën nga argumentet në hyrjen check_command. Kjo përcakton që check_nrpe është komanda dhe check_root_home_du është vlera e $ARG1$.
Gjithashtu, në varësi të konfigurimit tuaj, duhet të shtoni këtë skedar të fundit në skedarin kryesor (/usr/local/nagios/etc/nagios.cfg):
#...
cfg_file=/usr/local/nagios/etc/objects/nrpeclient.cfg
#...
Kontrolloni konfigurimin dhe, nëse nuk ka gabime ose paralajmërime, ringarkoni shërbimin:
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
sudo systemctl reload-or-restart nagios.service
Dhe tani ju keni një kontroll të ri personal në një host:
konkluzioni
Nagios ka një bibliotekë të madhe shtojcash të disponueshme në Nagios Exchange. Megjithatë, në një mjedis të madh ka shumë të ngjarë që të nevojiten disa kontrolle me porosi për përdorime specifike, për shembull: Kontrollimi i një rezultati të caktuar detyre, monitorimi i një aplikacioni të zhvilluar brenda shtëpisë, ndër të tjera.
Fleksibiliteti i ofruar nga Nagios është i përsosur për këto skenarë rasti.