Nagios für Beginner

 IT  Kommentare deaktiviert für Nagios für Beginner
Okt 092014
 

Dieser Artikel soll einen schnellen Überblick über Nagios, sowie einigen verwandten Themen wie NRPE, NSClient++, geben.

Nagios-Server

Nagios ist ein für Linux erhältliches Paket welches über verschiedene Plugins verschiedene Messgrößen auf anderen System abfragen kann. Diese Messgrößen können z.B. Antwortzeiten, Verfügbarkeit, Speicher-Auslastung, CPU-Auslastung, Menge an Prozessen und vieles mehr sein. Nagios ist der „Server“, welcher die Abfragen durchführt und auf einer Website anzeigt. Die Grundlagen der Config basieren hierbei auf 4 Begriffen:

Host (define host)

Im Host-Abschnitt wird ein „Rechner“ bzw. Server festgelegt, der überwacht werden soll. Dazu gehören Informationen wie: IP, Hostname, ein Template und die Zuordnung zu Gruppen (alle Server einer Gruppe werden dann gemeinsam auf der Weboberfläche von Nagios angezeigt):

define host{
        use             generic-host      ; use the generic-host template
        host_name       philipp-boss.de
        alias           philipp-boss.de   ; you can use the alias name in your service-config
        address         87.98.247.24
        hostgroups      http-servers     ; add this server to the group 'http-servers'
}

Command (define command)

Eine Command-Direktive definiert eine Abfrage. Allerdings nicht bezogen auf einen Host, sondern nur die Abfrage selbst. Beispielsweise, welches Script aufgerufen wird und welche Parameter mitgegeben werden.

define command{
	name            check_activemq		; frei definierbarer Name, optional
	command_name    check_activemq		; frei definierbarer name, eindeutig, wird bei der service-definition benutzt
	command_line    /usr/lib/nagios/plugins/activemq_watch $ARG! $ARG2  ;Name/Pfad zum executable (plugins-directry)
}

Service (define service)

In der Service-Direktive wird ein Command einem Host zugeordnet. Damit weiß Nagios, welche Abfragen / Messungen / Prüfungen es auf welchen Hosts machen muss. Zusätzlich wird hier das Intervall angegeben sowie weitere Abfrage-Optionen:

define service{
	use                     generic-service		; nutze das generic-service-template
	host_name               philipp-boss.de		; referenz zum oben definierten Host
	service_description     Check if HTTP is running	; Beschreibung, welche auf der Weboberfläche erscheint
	check_command           check_http			; name der command-Direktive die ausgeführt werden soll
	max_check_attempts		5			
	check_interval			5			; prüfe alle 5 min
	retry_interval			1			; wenn Prüfung fehlschlägt, prüfe nach 1 min nochmals
	check_period			24x7		; durchgehend prüfen
}

Plugin

Ein Plugin ist letztlich meist ein executable, welches im libexec oder plugins-directory abgelegt wird. Dieses wird dann in der Command-Direktive angegeben und somit dem Nagios bekannt gemacht. Anschließend kann es dann in einer Service-Direktive verwendet werden.

 

NRPE

NRPE steht für Nagios Remote Excecution Pluugin. Dieses Plugin ermöglicht es Nagios, Befehle und Scripte auf den zu überwachenden Hosts auszuführen. Es gibt zwei „Arten“ von Abfragen. Die einfache Art benötigt kein NRPE Plugin, zu dieser Art zählt zum Beispiel der Ping (ein Ping kann direkt vom Nagios-Server auf einen zu überwachenden Server gesendet werden). Die zweite Art benötigt das Plugin. Dazu gehören zum Beispiel Abfragen, die die CPU- , HDD- oder RAM-Auslastung prüfen. Dazu wird der NRPE-Dienst auf dem zu überwachenden Rechner gestartet. Dieser wartet dann auf Anfragen von Nagios, führt diese aus und liefert an Nagios die entsprechende Antwort zurück. Unter Linux/Unix gibt es dafür das NRPE-Plugin (läuft dann als daemon im Hintergrund), für Windows gibt es verschiedene Clients, unter anderem den NSClient++.

Eine gute Erklärung dazu liefert auch der Aufruf ./check_nrpe ohne Parameter.

Wichtig: Der Nagios-Server selbst braucht den NRPE-Client (der als Daemon/Service läuft) NICHT. Der nagios-Server benötigt lediglich das NRPE-Plugin, welches benutz wird, um die NRPE-Anfragen an den zu überwachenden Host zu senden (dieser braucht dann wiederum den NRPE-Daemon bzw. den NSClient++).

Hilfreiche NRPE-Befehle

Um zu prüfen, ob der Host generell auf NRPE-Anfragen reagiert, kann folgender Befehl genutzt werden:

./check_nrpe -H <host>

Um einen Befehl oder ein Script auf dem Host auszuführen:

./check_nrpe -H <host> -c <command> -a <arguments>

Nagios und Virtuelle Umgebungen

Bei meinen ersten Tests lief mein Nagios-Server auf einer virtuellen Maschine. Diese war mit meinem Netzwerk verbunden, soweit hat alles funktioniert. Allerdings habe ich bei allen NRPE-Anfragen einen SSL-Handshake Error oder ein Connection Refused erhalten. Nach langer Suche war klar: bei NAT-Verbindungen kann SSL nicht funktionieren (zumindest bei mir nicht). Nachdem ich eine Verbindung via VPN zu meinem Netzwerk hergestellt hatte, funktionierten die Abfragen. Was mich sehr verwundert hatte war die Eigenschaft, dass der check_nrpe Befehl trotz des Paramters -n nicht auf den SSL Handshake verzichtet hatte. Ob das ein Bug auf meinem System oder innerhalb des Pakets ist, weiß ich nicht.