Zum Hauptinhalt springen

Du bist hier
< Zurück

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