Nagios-Basiskonfiguration (zum schnellen Hinzufügen neuer Maschinen)

Nagios-Basiskonfiguration (zum schnellen Hinzufügen neuer Maschinen)

Ich habe vor Kurzem begonnen, Nagios zu verwenden, um etwa 25 Server zu überwachen (hauptsächlich virtuelle, einige davon eigenständig). Die meisten Server (einschließlich des Nagios-Hosts selbst) laufen unter Ubuntu 14.04 LTS, einige unter 12.04 LTS. Daher dachte ich, ich könnte einfach NRPE verwenden und damit wäre es erledigt.

Die Konfiguration von NRPE erwies sich für mich als ziemlich komplex. Für einen einfachen check_disk-Befehl musste ich beispielsweise manuell angeben, welche Partition geprüft werden soll, indem ich jede andere Partition/jedes andere Dateisystem ausschloss, wie unten gezeigt:

command[check_disk]=/usr/lib/nagios/plugins/check_disk -w 57% -x /dev -x /run -x /run/lock -x /run/shm -x /run/user -x /sys/fs/cgroup

Andernfalls wurden meine Schwellenwerte für Warnung und Kritisch sofort durch Sysfs, Proc oder andere Partitionen ausgelöst.

Dann habe ich mir den Basisdienstmonitor angesehen, den der Nagios-Host für sich selbst ausführt. Dieser ist in /usr/local/nagios/etc/localhost.cfg aufgeführt und enthält Folgendes (Es tut mir leid! Ich verstehe nicht, warum er nicht richtig formatiert wird!)

define service{
    use                             local-service         ; Name of service template to use
    host_name                       localhost
    service_description             PING
check_command           check_ping!100.0,20%!500.0,60%
    }



define service{
    use                             local-service         ; Name of service template to use
    host_name                       localhost
    service_description             Root Partition
check_command           check_local_disk!20%!10%!/
    }




define service{
    use                             local-service         ; Name of service template to use
    host_name                       localhost
    service_description             Current Users
check_command           check_local_users!20!50
    }


define service{
    use                             local-service         ; Name of service template to use
    host_name                       localhost
    service_description             Total Processes
check_command           check_local_procs!250!400!RSZDT
    }



define service{
    use                             local-service         ; Name of service template to use
    host_name                       localhost
    service_description             Current Load
check_command           check_local_load!5.0,4.0,3.0!10.0,6.0,4.0
    }


define service{
    use                             local-service         ; Name of service template to use
    host_name                       localhost
    service_description             Swap Usage
check_command           check_local_swap!20!10
    }


define service{
    use                             local-service         ; Name of service template to use
    host_name                       localhost
    service_description             SSH
check_command           check_ssh
notifications_enabled       0
    }



define service{
    use                             local-service         ; Name of service template to use
    host_name                       localhost
    service_description             HTTP
check_command           check_http
notifications_enabled       0
    }

Das Ergebnis auf dem Dashboard:

Eindrucksvoll

Das ist PERFEKT für mich. Das ist genau das, was ich von jedem einzelnen Host, den ich hinzufüge, sehen lassen möchte. Anstatt mit benutzerdefinierten Befehlen herumzuspielen, wie genau soll ich das über die NRPE-Konfigurationsdatei auf jeden Host „kopieren“, damit ich alle diese spezifischen Dienste für jeden Host sehe, den ich hinzufüge? Es ist klar, dass das bereits hier ist und bereits auf dem lokalen Host funktioniert. Ich habe Mühe, die Organisation zu verstehen, die erforderlich ist, um dies zu ermöglichen.

Vielen Dank für jeden Ratschlag.

Antwort1

Vor nicht allzu langer Zeit habe ich ein wirklich nettes NRPE-Autoinstallationsskript geschrieben, das Ihnen meiner Meinung nach helfen kann, wenn Sie es Ihren Bedürfnissen entsprechend bearbeiten. Das Skript enthält viele integrierte Prüfungen, die der nrpe.cfgDatei jedes Hosts hinzugefügt werden. Das bedeutet, dass Sie die für Sie relevanten Prüfungen konfigurieren und sicherstellen können, dass jeder Host, der das Skript ausführt, sie ebenfalls hat. Das ist die Client-Seite.

Ein Link zum Skript:Hier.

In Bezug auf die Serverseite (Nagios) können Sie einen Nagios-Konfigurationsmanager wie beispielsweise NagioSQL installieren, der Ihnen hilft, Ihre Hosts und Dienste bequemer über eine GUI zu verwalten.

Darüber hinaus: Um sicherzustellen, dass alle Ihre Hosts über die angezeigten Prüfungen verfügen, erstellen Sie einfach eine Servicegruppe, die alle zu überwachenden Dienste (Prüfungen) enthält, und hängen Sie diese Servicegruppe dann einfach an jeden Host an, den Sie überwachen.

Ich möchte Ihnen erzählen, was ich in meiner Firma gemacht habe. Ich wollte sicherstellen, dass jeder Server mit der check_loadPrüfung überwacht wird. Da wir in der Firma jedoch keine Hardware-Baseline haben, was bedeutet, dass jeder Server andere Spezifikationen hat und die check_loadBerechnung pro Kern/CPU in der Maschine erfolgt, habe ich dem Modul „Nagios_client“ in unserem Puppet-Server ein Modul hinzugefügt, custom_factdas erkennt, wie viele Prozessoren in einer Maschine vorhanden sind, und Nagios check_loadentsprechend konfiguriert.

Nehmen wir beispielsweise an, Server1 hat 4 CPUs, was bedeutet, dass eine Auslastung von 2,8 ideal ist (0,7 pro CPU). Puppet facterermittelt dann die Anzahl der CPUs und bearbeitet die Server dann nrpe.cfgwie folgt:

command[check_load]=/usr/local/nagios/libexec/check_load -w 2.9,3.0,3.1 -c 4.0,5.0,6.0

Dann können Sie beispielsweise in NagioSQL die „Importfunktion“ verwenden, mit der Sie *.cfgDateien importieren können, die als Hosts und Dienste in Nagios geladen werden. Sie können also eine host.cfgDatei erstellen und sie über ein Skript pro Host duplizieren, den Sie überwachen möchten, und einfach den Hostnamen/die IP-Adresse jeder Maschine ändern, und schon sind Sie einen Schritt weiter in Richtung einer stärker automatisierten Konfiguration.

In meinem Fall beispielsweise ist Puppet in der Lage zu verstehen, dass es zum ersten Mal auf einer Maschine ausgeführt wird und erstellt dann auch die entsprechende host.cfgDatei in Nagios.

Ich glaube, dass Ihre Nagios-Verwaltung mit Puppet + NagioSQL eine viel einfachere Aufgabe wäre.

Was Ihre Schwierigkeiten beim Konfigurieren von Prüfungen betrifft: Sie können jederzeit Ihr eigenes Skript schreiben und Nagios so konfigurieren, dass es es für Sie ausführt. Nehmen wir beispielsweise Ihren check_diskBefehl. Es handelt sich um einen sehr umfangreichen Befehl, mit dem Sie alle Arten von Daten anzeigen können, die für Sie unnötig wichtig sind.

Ich hatte also das gleiche Problem mit check_procs, einem anderen sehr umfangreichen Befehl, der einem alle möglichen Daten liefert ... die ich nicht brauchte, also schrieb ich ein einfaches Prüfskript, das genau das tut, was ich brauche, und konfigurierte es in Nagios. Beispiel:

#!/bin/bash
# This script checks for running processes for mt.js and adb-server.js
# Script by Itai Ganot 2015 .
process="$1"
appname=$(basename $0)
if [ -z "$1" ]; then
    echo "Please specify a process to check"
    exit 1
fi
ps -ef | grep "$process" | egrep -v "grep|$appname" &>/dev/null
if [ "$?" -eq "0" ] ; then
    stat="OK"
    exitcode="0"
    msg="Process $process is running"
else
    stat="Critical"
    exitcode="2"
    msg="There are currently no running processes of $process"
fi
pid=$(ps -ef | grep "$process" | egrep -v "grep|$appname" | awk '{print $2}')
echo "$stat: $msg Process PID: $pid"
exit $exitcode

Es liefert mir zwar weniger Informationen als das Original, check_procsaber genau die Informationen, die ich brauche.

Um es kurz zu machen: Wenn check_diskIhnen die Konfiguration Ihres Befehls Schwierigkeiten bereitet, erstellen Sie einfach Ihr eigenes Skript. Das ist das Schöne an Nagios.

Ich hoffe ich habe dir geholfen.

Antwort2

Sie benötigen eine Art Konfigurationsverwaltungssoftware, um den Nrpe-Daemon auf jedem Remote-Host einzurichten und zu installieren sowie die Konfigurationen und letztendlich Ihre Plugins bereitzustellen.

Darf Ich vorschlagenAnsiblefür diese Aufgabe.

https://github.com/bobmaerten/ansible-role-nagios-nrpe-server

verwandte Informationen