Wie können wir helfen?
Nagios Server vorbereiten
Damit alle Pakete geladen und installiert werden können muss man als ROOT angemeldet sein
sudo -su
Root Passwort eingeben ,damit bleibt man als Root angemeldet
Um zu überprüfen ob man wirklich root ist
pwd
Es sollte nun /root angezeigt werden
Herunterladen und Installieren aller benötigten Pakete
yum install -y wget httpd php gcc glibc glib-common gd gd-devel make net-snmp perl perl-devel openssl nano unzip
Einen Nagios User und die dazugehörige Gruppe erstellen
useradd nagios
groupadd nagcmd
Den gerade erstellten User und auch den apache User der erstellten Nagios Gruppe hinzufügen
usermod -a -G nagcmd nagios
usermod -a -G nagcmd apache
Nagios Quellcode herunterladen und kompilieren
Um die gesamte Centos7 Umgebung sauber zu halten und auch den späteren Verwaltungsaufwand zu reduzieren, empfiehlt es sich ein eigenes Verzeichnis zu erstellen unter welchem die Nagios Daten und im späteren Verlauf auch die Nagios Plugins, wie auch die ERPL Plugins installiert werden
mkdir /usr/local/nagios/instal-files
In das Verzeichnis wechseln
cd /usr/local/nagios/instal-files
Den Source Code herunterladen
wget https://assets.nagios.com/downloads/nagioscore/release/nagios-4.1.1.tar.gz
Du kannst auch vorher google befragen ob es eine aktuellere Version gibt und diese herunterladen, im weitern Verlauf dieser Doku wird statt nagios-4.1.1. nur noch nagios-[Versionsnummer] geschrieben
Den heruntergeladenen Quellcode entpacken
tar zxvf nagios-4.1.1.tar.gz
Du kannst auch mit der Tabulator Taste die automatische Wortverfollständigung verwenden, das vermeidet Tippfehler (spätestens wenn es um den Symlink für die NRPE Tools geht, wirst ud mir dankbar sein, ich habe stundenlang den Fehler gesucht 😉 )
Der Quellcode wurde nun entpackt und es wurde ein Verzeichnis erstellt „nagios-[VERSIONSNUMMER]“. Damit der Quellcode kompiliert und installiert werden kann, musst du in dieses Verzeichnis wechseln, wenn du dir nicht sicher bist, wie das Verzeichnis heist
ls (oder ls -l)
cd nagios-[VERSIONSUMMER]
Den entpackten Quellcode nun kompilieren
./configure --with-command-group=nagcmd --prefix=/usr/local/nagios --sysconfdir=/etc/nagios
Das Paket erstellen
make all
Die kompilierten Pakete installieren
make install
Bei anderen Softwarepaketen wären wir hier fertig, aber Nagios braucht noch ein bisschen mehr um alles installieren zu können 🙂
make install-init Das installiert das init Skript nach /etc/nagios
make install-config Das generiert die Konfig Files für die Software
make install-commandmode Das macht die Anpassungen an das System um den Commandmode zu aktivieren
make instal-webconf Die Webschnittstelle aktivieren
Die Nagios Software ist installiert, nun musst du noch einige Anpassungen vornehmen
Kopieren des Eventhandler Verzeichnisses und die OwnerShip Rechte anpassen
cp -rvf contrib/eventhandlers/ /usr/local/nagios/libexec
libexec wird noch sehr wichtig werden, im speziellen für die NRPE Plugins
Benutzerrechte auf das Verzeichnis ändern
chown -R nagios:nagcmd /usr/local/nagios/libexec
Nagios Admin User erstellen und ein Passwort generieren
htpasswd -c /etc/nagios/htpasswd.users nagiosadmin
>New Password: Passwort eingeben
>Re-type Password: Passwort erneut eingeben
Es wurde nun der Admin User für Nagios erstellt, welcher sich auf der Webschnittstelle anmelden und diese auch verwalten darf
Sollte der User und das Passwort nicht mehr bekannt sein
https://serverfault.com/questions/502862/nagios-new-user-doesnt-get-enabled-permissions
Nun ist alles installiert und konfiguriert, nun musst du das dem System noch klar machen
systemctl daemon-reload
systemctl start httpd
systemctl start nagios
Zu Überprüfung kannst du auch systemctl status [DIENST] eingeben um zu sehen, was mit dem Dienst los ist
Sofern eine Firewall aktiviert ist müssen noch Portfreigaben definiert werden, damit der Server Anfragen und Antworten tätigen kann
firewall-cmd --zone=public --add-port=80/tcp --permanent
fireall-cmd --reload
Bei beiden Eingaben muss als Antwort „success“ zurückkommen
Damit Nagios nun auch überwachen kann, müssen noch die benötigten Plugins installiert werden, das sind standardmäßig etliche Befehle (wie zum Beispiel: hd_check, ssh_check etc.)
Dazu wieder in das Verzeichnis wechseln, wo alle Instal Files liegen
cd instal-files
Monitoring Plugins (Quellcode) laden
wget http://www.nagios-plugins.org/download/nagios-plugins-2.0.3.tar.gz
Die Files entpacken
tar zxvf nagiosplugins-2.0.3.tar.gz
Kompilieren und installieren, daazu in das Verzeichnis wechseln
cd nagios-plugins-2.0.3
./configure --with-nagios-user=nagios --with-nagios-group=nagcmd
make
make install
Die Plugins sind nun ordnungsgemäß installiert
Nagios nun in Aktion sehen, dazu einfach einen beliebigen Webbrowser öffnen und die IP deines Servers eigeben, gefolgt von /nagios
SERVER-IP-ADDRESS/nagios
Mit dem zuvor erstellen nagiosadmin und dem Passwort anmelden
Unter Hosts sieht man nun, dass derzeit nur der localhost überwacht wird (ist ja klar, der Server kennt noch keine Clients)
Am Anfang werden noch Warnungen und Critical Messages angezeigt, das liegt daran, dass der Server einige Zeit braucht, bis alles aktualisiert ist, am besten holst du dir einen Kaffee oder gehst eine Rauchen, bis alles Synchronisiert wurde. Die Daten werden periodisch gesynct!
Weinn bei http eine „403 forbidden“ Warung gelb aufläuchtet, bedeutet das nur dass in dem Verzeichnis keine index.html Datei zu finden ist. Du kannst diese entweder so belassen oder eine indes.html Datei erstellen.
touch /var/www/html/index.html
chmod 755 /var/www/html/index.html
So das schlimmste ist nun geschafft, der Nagios Server ist insalliert, konfiguriert und überwacht sich bereits selbst. Im folgenden zeige ich dir wie du Clients hinzufügst (Drucker, Switches, Clients, etc…)
Nagios vorbereiten, damit dieser Clients aufnehmen kann
NRPE Plugin installieren
Wie funktioniert NRPE eigentlich?
NRPE läuft auf dem remote Server und artet auf Anfragen vom Nagios Server (im späteren verlauf einfach nur noch Client und Server genannt)
Auf dem Server läuft ein Prozess check_nrpe dieser horcht auf den Client und sammelt die angefragten Informationen. Nagios zeigt nun die Informationen an
Um diese diese NRPE Plugins insstallieren zu können, muss du zuerst das epel Repository zu deinem Nagios Server hinzufügen
rpm -Uhv http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
Als nächstes kannst du das Nagios NRPE Plugin Paket laden
yum install -y nagios-plugins-nrpe
Es kann nun sein, dass wie auch immer diese Pakete geladen werden, diese in unterschiedlichen Verzeichnissen liegen, einfaches kopieren der Plugins ins libexec Verzeichnis funktioniert zwar, macht aber keinen Sinn wenn es Updates gibt, da dann alles wieder kopiert werden muss, daher erzeugst du einen Link vonden NRPE Plugins zu libexec (arbeite am besten mit der Tabulator verfollständigung)
ln -s /usr/lib64/nagios/plugins/check_nrpe /usr/local/nagios/libexec/check_nrpe
Nun folgen einige Anpassungen an diversen *.cfg Files
nano /etc/nagios/objects/commands.cfg
In diesem File sind alle Kommandos definiert, welche aber derzeit nur für den localhost (Server) gelten
Du wirst nun eine neue Sektion für NRPE einfügen (ganz am Ende des Files), da Nagios ja noch nichts von diesem Plugin weiß
Um sauberen Code weiter zu behalten, halte dich an das File und schreibe gleichen sauberen Code
################################################################################
#
# Check nrpe
#
##################################################################################
Define command {
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
File Speichern und schließen
CTRL X und mit J bestätigen
Damit alle Clients und Einstellungen überschaubar bleiben, erstellst du ein Verzeichnis wo dann alle zu überwachenden Clients eingetragen werden
mkdir /etc/nagios/servers
Damit Nagios auch checkt dass es dafür eigene Files gibt, musst du das Nagios Konfig File anpassen
nano /etc/nagios/nagios.cfg
Suche nach der Zeile
#cfg_dir=/etc/nagios/servers
Und entferne das „#“ damit diese Zeile wieder zieht. Du siehst auch untenstehend dass es nicht nur für Computer Clients sondern auch für Drucker, Switches und Routers eigene Verzeichnisse gibt, du kannst auc hselber welche anlegen und hier in der Config File ablegen.
Wenn die Zeile aktiviert ist, das File spiechern und schließen
Alle Konfigurationen am Server sind nun abgeschlossen, bevor du den Dienst aber neu startest solltest du unbedingt einen „Sanity Check“ durchführen um etwaige Codierungsfehler oder Fehler in Konfig Dateien auszuschließen und der Server nicht mehr hochfährt
/usr/local/nagios/bin/nagios -v /etc/nagios/nagios.cfg
Dieser Befehl prüft alle Konfiguratioin Files und stellt sicher dass keine (Syntax)Fehler vorhanden sind
Wenn keine Fehler auftauchen
systemctl restart nagios
Noch sieht man afu der Webschnittstelle keinen Unterschied, da noch kein Client hinzugefügt wurde
Hostgroups.cfg erstellen
Prinzipiell sind die Hostgroups schon in der /etc/nagios/objects/localhost.cfg definiert, aber um das ganze System überschaubarer zu halten, wird dieser Teil aus der eigentlichen Konifurationsdatei ausgeschnitten und in eine neue Datei verlagert. Das erleichtert den Verwaltungs bzw. Wartungsaufwand
Hostroups haben den Zweck dass man verschieden Server, die die selben Verwendungszwecke haben, zusammen zu fassen 8Webserver, Datenbankserver, Entwicklungsserver, etc.)
Suche nach der Stelle
#define a host for the local machine
Hier wirst du einen Eintrag hinzufügen damit das System dann auch weiß wo die neue Hostgroup Datei liegt und dass diese nicht mehr direkt aus dieser Datei zu holen ist
Direkt unter
Address 127.0.0.1
hostgroups linux-server
Dann suchst du nach der Setkion „Host Group Definition“ und schneidest den gesamten Bereich aus oder kopierst bzw. öscht diesen. Dieser Bereich wird in die nue Datei (Hostgroups.cfg) gelegt
Anschließend das File speichern und schließen
Ein neues File erstellen
nano /etc/nagios/objects/hostgroups.cfg
Hier in diesem neuen File den soeben ausgeschnittenen Bereich neu einfügen, um sauber zu bleiben sollte das Dokument dann so aussehen.
Anmerkung: Die Zeile „members“ wird gelöscht, da ja nun nicht mher auf den localhost gehorcht werden soll, sondern auf die Clients, diese werden im späterne Verlauf noc verlinkt. Das hat mit dder Hostgroup Datei aber nichts zu tun, diese Datei liestet nur die Gruppen an Server auf, welche selbst Dienste machen. Du aknnst auch eine Gruppe anlggen (z.B. Development Server), die es noch gar nicht gibt, das spielt keine Rolle.
Man könnte die Gruppen auch in der Server Definition hinzufügen, aber ich finde diese Variante schöner und überschaubarer
###################
#
# Hostgroups
#
###################
define hostgroup{
hostgroup_name linux-servers; The name oft he hostgroup
alias Linux Servers; Long name oft he group
}
define hostgroup{
hostgroup_name web-servers; The name oft he hostgroup
alias Web Servers; Long name oft he group
}
Speichern und Schließen
So, Nagios hat noch keine Ahnung, dass es wo anders nachsehen soll, bezüglich den Hostgroups, das passt du jetzt an
nano /etc/nagios/nagios.cfg
Such nach dam Bereich wo die ganzen *.cfg Files aufgeführt sind
# You can specify individual object config files as shown below:
Und füge diese Zeile hinzu
cfg_file=/etc/nagios/objects/hostgroups.cfg
Um wieder sicherzustellen, dass alles richtig läuft wiede einen Sanity Check durchführen
/usr/local/nagios/bin/nagios -v /etc/nagios/nagios.cfg
Sofern keine Fehler auftauchen kann der Nagios Dienst restartet werden
systemctl restart nagios
Bis jetzt siehst du auf der Webschnittstelle immer noch keinen Unterschied, da du bisher nur Änderungen am Backend gemacht hast. Die Clients werden erst im nächsten Schritt hinzugefügt.
Aber bis jetzt hast du eingestellt, wo Nagios seine Gruppen sucht und das sauber und einfach
Centos Client zum Nagios Monitoring hinzufügen
Nachfolgend wird der Nagios Server nur noch Server genannt und der Centos7 Client nur noch Client
Wechsel zum Client
Wechsel auch gleich in den root Modus
sudo -su
Passwort für sudo eingeben
Dem Client ein neues Repositiory hinzufügen
rpm -Uhv http://dl.fedoraproject.org/pub/epel/epel-release-latets-7.noarch.rpm
Nun musst du noch 2 Paket laden und installieren
yum install -y nrpe nagios-plugins-all
Die Paktet sind nun installiert und nun muss die nrpe.cfg Datei noch angepasst werden
nano /etc/nagios/nrpe.cfg
Das ist das Konfiguration File für den NRPE, hier sind alle wesentlichen Einstellungen vorhanden, wenn du das Skript nach unten durchliest, findest du unter anderem auch den Port 5666 der standardmäßig so eingestellt ist.
Aber am allerwichtigsten ist die Zeile
allowed hosts
diese lässt zu welche IP Adressen auf dem Host zugreifen dürfen
suche nach
allowed hosts=127.0.0.1,::1
Ändere diese ab
#allowed_hosts=127.0.01,::1, IP-ADRESSE-DEINES-NAGIOS-MONITORING-SERVERS
Speichern und Schließen
Anschließend nrpe starten
systemctl start nrpe
DAmit nrpe auch nach einem Neustart wieder startet
systemctl enable nrpe
Wenn auf diesem Client eine Firewall ausgeführt wird, musst du die Ports freigeben
firewall-cmd --zone=public --add-port=5666/tcp --permanent
Firewall Regeln neu einlesen lassen
firewall-cmd --reload
Bei beiden Eingaben muss ein success als Antwort kommen
Die IP Adresse vom Client rausfinden
ip addr
oder
ifconfig
Und diese IP Adresse merken, diese brauchen wir gleich am Nagios Server, damit dieser ganz genau weiß, auf welchen Client er horchen muss.
Wechsel zum Nagios Server
Du hast ja unter /etc/nagios ein Verzeichnis namens „Servers“ angelegt, in diesem Verzeichnis wird jede Konfig Detei für jeden einzelnen Server angelegt.
Also legst du in diesem Verzeichnis nun eine neue Konfig File für den Client an
nano /etc/nagios/servers/CLIENTNAME
Als erstes definierst du den Host selber
define host{
use linux-server
host_name Wie der Server benannt ist, das ist ganz unabhängig vom DNS, damit arbeitet nur der Nagios.
alias My Second Server
hostgroups linux-servers, hier kommt die Hostgroups.cfg Datei zum tragen, wenn diese Gruppe darin nicht definiert ist, kommt es zu fehlern!
address DIE IP ADRESSE DEINES CLIENTS
max_check_attempts 5
check_period 24x7
notification_interval 30
notification_period 24x7
}
Prinzipiell sofern du dich nicht vertippt hast, wird der Client schon in der Nagios Server Liste aufgenommen und überwacht, aber es sind noch keine Services definiert worden, was genau überwacht werden soll
Wenn die Datei noch geöffnet ist einen Service definieren, anonsten
nano /etc/nagios/servers/NAMEN DES SERVERS
define service{
use generic-service
host_name Wie der Server benannt ist
service_description SSH
check_command check_ssh
notifications_enabled 0
}
Noch ein Service
define Service {
use generic-service
host_name wie der server benannt ist
service_description CPU Load
check_command check_nrpe!check_load
}
Und genau bei dem zweiten Service kommt die Macht von Nagios zum tragen, durch das NRPE wird der Client angefragt, Infos über seine Infrastruktur abzufragen und diese dem Server zu senden, ohne dass man Benutzerdaten oder gar Passwörter verwenden muss.
Im Gegensatz zum ersten Service, wei welchem nur ein Handshake zum Einsatz kommt
Wenn du zum Beispiel die Festplatten des Clients überwachen möchtest
check_command check_nrpe!disk_HDI etc..)
Speichern und schließen
Undbedint wieder einen Sanity Check durchführen
/usr/local/nagios/bin/nagios -v /etc/nagios/nagios.cfg
Wenn keine Fehler auftauchen
systemctl restart nagios
Und wenn du jetzt deinen Browser startest, wirst du unter hostgroups sehen, dass der Client drinnnen ist
Windows Server der Nagios Überwachung hinzufügen
Verbinde dich zum Windows Client und starte einen Broser und igbt folgende Adresse ein
https://sourceforge.net/projects/nscplus/
Lade dieses Program herunter und installiere es
typical install
allowed hosts: Die IP ADRESSE VOM NAGIOS SERVER
Passwort: Ein Passwort wählen, dieses wird später am Nagios Server gebraucht
Check:
Enable common check plugins
Enable nsclient server (check_nt)
Enalbe nrpe server (check_nrpe) --- sehr wichtig
Enable WMI Checks
Installieren klicken
Wechsel zum Nagios Server
Hier musst du wieder ein wenig anpassen
nano /etc/nagios/objects/commands.cfg
Suche nach check_nt
Da du am Windwos Cleint ja ein Passwort angelegt hast, muss dieses hier iengetragen weden udn zwar direkt nach dem Port -p und vor dem -v
z.b. $HOSTADDRESS$ -p 12489 DEIN GEWÄHLTES PASSWORT -v …
Speichern und Schließen
Als nächstes File das Server Config File, es ist zwar schon ein Template installiert (windows.cfg), aber um alle Clients sauber etrennt zu halten, kopierst du das File ienfach und gibst diesem einen eindeutigen Namen der zu deinem Windows Rechner passt
cp /etc/nagios/objects/windows.cfg /etc/nagios/servers/DEIN WINDOWS CLIENT
Und nun musst du nur noch dieses File bearbeiten
nano /etc/nagios/servers/DEIN WINDOWS CLIENT
Die hostgroup definitions kannst du gleich mal raus kübeln, da du ja die Hostgroups sauber in einer eigenen Datei verwaltest, dazu später
In der Sektion Host Definitions, nach der Zeile address (das müsste normalerweise die letzte sein) fügst du ein
hostgroups windows-servers
Du könntest hier auc hKomma getrennte werte eingebe, wenn dieser Windows Server auch ein Webserver ist
hostgroups windows-servers, web-servers
Anschließend passt du die Zeile Address an, diese muss an den Windows Rechner angepasst werden
Vorher:
address 192.168.0.102
Nachher:
address 10.0.0.204
Ansonten findet der Nagios Server nicht den Weg zum Windows Server
Es obligt dir ob du den Hostnamen anpassen möchtest, dieser wird nur in Nagios verwendet und hat nichts mit DNS zu tun
Aber wenn du diesen änderst, dann muss er in der ganzen DAtei geändert werden!
Speichern und schließen
Wenn diese Datei so cool angepasst wurde, dass diese alles von Windows abdeckt, dann würde ich diese einfach kopieren und für den nachsten verwende, du musst dann lediglich den hostnamen und die ip adresse anpassen, das wars.
Jetzt hast du aber eine windows-servers als hostgroups erstellt und diese gibt es aber noch nicht, also muss diese gruppe noch erstellt werden, ansonsten gibt es kompilierungsfehler und Nagios kann nicht mehr starten
nano /etc/nagios/objects/hosgroups.cfg
Und füge ein
define hostgroup{
hostgroup_name windows-servers ; The name oft he hostgroup
alias Windows Servers ; Long name oft he group
}
Speicher und schließen
Alle Anpassungen am Server sind abgeschlossen, nun noc heinen Sanity Test und fertig
/usr/local/nagios/bin/nagios -v /etc/nagios/nagios.cfg
Wenn keine Fehler
systemctl restart nagios
Schau mal im Webinterface nach, TADA der Windows Client ist da und wird sauber unter den Hostgroups gelistet