Einführung
Nachdem wir nun über die Einrichtung des Produktionsanwendungsservers, einen Wiederherstellungsplan und Sicherungen verfügen, möchten wir die Überwachung erweitern, um den Status unserer Server und Dienste besser kennenzulernen. Mit Überwachungssoftware wie Nagios, Icinga und Zabbix können Sie Dashboards und Warnmeldungen erstellen, die Ihnen anzeigen, welche Komponenten Ihres Anwendungs-Setups Aufmerksamkeit erfordern. Das Ziel ist es, Ihnen dabei zu helfen, Probleme mit Ihrem Setup zu erkennen und diese zu beheben, bevor Ihre Benutzer auf sie stoßen.
image: https://assets.digitalocean.com/articles/architecture/production/monitoring.png [Überwachungsdiagramm]
In diesem Tutorial richten wir Nagios 4 als Überwachungssoftware ein und installieren den NRPE-Agenten auf den Servern, aus denen unsere Anwendung besteht.
Für jeden Server in unserem Setup richten wir die Überwachung ein, um zu überprüfen, ob der Server aktiv ist und ob sein primärer Prozess (d. H. Apache, MySQL oder Haproxy) wird ausgeführt. Dieser Leitfaden zur Überwachung ist zwar nicht umfassend - Sie möchten wahrscheinlich zusätzliche Überprüfungen einrichten, auf die wir hier nicht eingehen -, er ist jedoch ein guter Ausgangspunkt.
Voraussetzungen
Wenn Sie über einen Domainnamen auf Ihr Protokollierungs-Dashboard zugreifen möchten, erstellen Sie unter Ihrer Domain einen * A-Eintrag *, z. B. "monitoring.example.com", der auf die öffentliche IP-Adresse Ihres * monitoring * -Servers verweist. Alternativ können Sie über die öffentliche IP-Adresse auf das Überwachungs-Dashboard zugreifen. Es wird empfohlen, den Überwachungswebserver für die Verwendung von HTTPS einzurichten und den Zugriff darauf zu beschränken, indem Sie ihn hinter einem VPN platzieren.
Installieren Sie Nagios auf dem Monitoring Server
Richten Sie Nagios auf Ihrem * monitoring * -Server ein, indem Sie diesem Tutorial folgen: https://www.digitalocean.com/community/tutorials/how-to-install-nagios-4-and-monitor-your-servers-on-ubuntu- 14-04 [So installieren Sie Nagios 4 und überwachen Ihre Server unter Ubuntu 14.04]. Wenn Sie möchten, können Sie auch https://www.digitalocean.com/community/tutorials/how-to-use-icinga-to-monitor-your-servers-and-services-on-ubuntu-14-04 [ Icinga], eine Gabelung von Nagios.
Stoppen Sie, wenn Sie den Abschnitt * Überwachen eines Ubuntu-Hosts mit NRPE * erreichen.
Server zu Nagios hinzufügen
Gehen Sie auf jedem Server in Ihrem Setup (db1, app1, app2 und lb1) zu https://www.digitalocean.com/community/tutorials/how-to-install-nagios-4-and-monitor-your- servers-on-ubuntu-14-04 # monitor-an-ubuntu-host-with-nrpe [Ubuntu-Host mit NRPE überwachen] im Nagios-Tutorial.
Stellen Sie sicher, dass Sie den privaten Hostnamen oder die IP-Adresse Ihres * überwachenden * Servers zur Einstellung + allowed_hosts +
in der NRPE-Konfigurationsdatei hinzufügen.
Wenn Sie alle Hosts hinzugefügt haben, sollten Sie für jeden Server, den Sie überwachen möchten, eine separate Datei haben: "+ db1.cfg ", " app1.cfg ", " app2.cfg " und " lb1.cfg +" `. Jede Datei sollte die Hostdefinition enthalten, die sich auf den jeweiligen Hostnamen und die jeweilige Adresse bezieht (dies kann der Hostname oder die IP-Adresse des Servers sein).
Einrichten der Host- und Dienstüberwachung
Lassen Sie uns eine Liste allgemeiner Dinge erstellen, die auf jedem Server überwacht werden sollen. Überwachen wir für jeden Server die folgenden * Dienste *:
-
Ping
-
SSH
-
Aktuelle Last
-
Derzeitige Nutzer
-
Festplattenauslastung
Lassen Sie uns das jetzt einrichten.
Gemeinsame Dienste definieren
Im Nagios-Setup-Tutorial haben wir Nagios so konfiguriert, dass es nach "+ .cfg " -Dateien in " / usr / local / nagios / etc / servers " (oder " / etc / icinga / objects / +" für Icinga) sucht. Um die Organisation zu gewährleisten, erstellen wir eine neue Nagios-Konfigurationsdatei für die zu überwachenden allgemeinen Dienste mit dem Namen "common.cfg".
Öffnen Sie zunächst die Host-Konfigurationsdatei zum Bearbeiten
sudo vi /usr/local/nagios/etc/servers/common.cfg
Fügen Sie die folgenden Servicedefinitionen mit dem Hostnamen jedes Ihrer Server hinzu (wie in den vorherigen Hostdefinitionen definiert):
Nagios-Konfiguration - Allgemeine Dienste
define service {
use generic-service
host_name ,,,
service_description PING
check_command check_ping!100.0,20%!500.0,60%
}
define service {
use generic-service
host_name ,,,
service_description SSH
check_command check_ssh
notifications_enabled 0
}
define service {
use generic-service
host_name ,,,
service_description Current Load
check_command check_nrpe!check_load
}
define service {
use generic-service
host_name ,,,
service_description Current Users
check_command check_nrpe!check_users
}
define service{
use generic-service
host_name ,,,
service_description Disk Utilization
check_command check_nrpe!check_hda1
}
Speichern und schließen.
Jetzt können wir die Dienste definieren, die für jeden Server spezifisch sind. Wir beginnen mit unserem Datenbankserver.
Definieren Sie den MySQL-Prozess
NRPE-Befehl erstellen (auf dem Client)
Auf Ihrem Datenbankserver * db1 * konfigurieren wir einen neuen NRPE-Befehl. Öffnen Sie eine neue NRPE-Konfigurationsdatei, "commands.cfg":
sudo vi /etc/nagios/nrpe.d/commands.cfg
Fügen Sie die folgende Befehlsdefinition hinzu:
NRPE-Konfiguration (commands.cfg) - check_mysqld
command[check_mysqld]=/usr/lib/nagios/plugins/check_procs -c 1: -C
Speichern und schließen. Auf diese Weise kann NRPE nach einem Prozess mit dem Namen "mysqld" suchen und einen kritischen Status melden, wenn weniger als 1 Prozesse mit diesem Namen ausgeführt werden.
Laden Sie die NRPE-Konfiguration neu:
sudo service nagios-nrpe-server reload
Dienstdefinition erstellen (auf dem Server)
Auf Ihrem Nagios-Server * müssen wir * einen neuen Dienst definieren, der NRPE verwendet, um den Befehl + check_mysqld +
auszuführen.
Öffnen Sie die Datei, die Ihren Datenbankhost definiert. In unserem Beispiel heißt es "db1.cfg":
sudo vi /usr/local/nagios/etc/servers/.cfg
Fügen Sie am Ende der Datei diese Service-Definition hinzu (vergewissern Sie sich, dass der Wert "+ host_name +" mit dem Namen der Host-Definition übereinstimmt):
db1.cfg - check_mysql
define service {
use generic-service
host_name
service_description Check MySQL Process
check_command check_nrpe!check_mysqld
}
Speichern und schließen. Dies konfiguriert Nagios so, dass es NRPE verwendet, um den Befehl check_mysqld auf dem Datenbankserver auszuführen.
Damit diese Änderung wirksam wird, müssen wir Nagios neu laden. Wir werden jedoch zuerst den Apache-Prozess überwachen.
Definieren Sie den Apache-Prozess
NRPE-Befehl erstellen (auf dem Client)
Auf Ihren Anwendungsservern * app1 * und * app2 * konfigurieren wir einen neuen NRPE-Befehl. Öffnen Sie eine neue NRPE-Konfigurationsdatei, "commands.cfg":
sudo vi /etc/nagios/nrpe.d/commands.cfg
Fügen Sie die folgende Befehlsdefinition hinzu:
NRPE-Konfiguration (commands.cfg) - check_apache2
command[check_apache2]=/usr/lib/nagios/plugins/check_procs -c 1: -w 3: -C apache2
Speichern und schließen. Auf diese Weise kann NRPE nach einem Prozess mit dem Namen "apache2" suchen und einen kritischen Status melden, wenn keine übereinstimmenden Prozesse ausgeführt werden, oder einen Warnstatus melden, wenn weniger als drei übereinstimmende Prozesse vorhanden sind.
Laden Sie die NRPE-Konfiguration neu:
sudo service nagios-nrpe-server reload
Stellen Sie sicher, dass Sie dies auf weiteren Anwendungsservern wiederholen.
Dienstdefinition erstellen (auf dem Server)
Auf Ihrem Nagios-Server * müssen wir * einen neuen Dienst definieren, der NRPE verwendet, um den Befehl + check_apache2 +
auszuführen.
Öffnen Sie die Datei, die Ihren Anwendungshost definiert. In unserem Beispiel heißen sie "app1.cfg" und "app2.cfg":
sudo vi /usr/local/nagios/etc/servers/.cfg
Fügen Sie am Ende der Datei diese Service-Definition hinzu (vergewissern Sie sich, dass der Wert "+ host_name +" mit dem Namen der Host-Definition übereinstimmt):
app1.cfg und app2.cfg - check_apache2
define service {
use generic-service
host_name
service_description Check Apache2 Process
check_command check_nrpe!check_apache2
}
Speichern und schließen. Dadurch wird Nagios so konfiguriert, dass NRPE zum Ausführen des Befehls check_apache2 auf den Anwendungsservern verwendet wird. Stellen Sie sicher, dass Sie dies für jeden Ihrer Anwendungsserver wiederholen.
Damit diese Änderung wirksam wird, müssen wir Nagios neu laden. Davor werden wir jedoch den HAProxy-Prozess überwachen.
Definieren Sie den HAProxy-Prozess
NRPE-Befehl erstellen (auf dem Client)
Auf Ihrem Load Balancer-Server, * lb1 *, konfigurieren wir einen neuen NRPE-Befehl. Öffnen Sie eine neue NRPE-Konfigurationsdatei, "commands.cfg":
sudo vi /etc/nagios/nrpe.d/commands.cfg
Fügen Sie die folgende Befehlsdefinition hinzu:
NRPE-Konfiguration (commands.cfg) - check_haproxy
command[check_haproxy]=/usr/lib/nagios/plugins/check_procs -c 1: -C haproxy
Speichern und schließen. Auf diese Weise kann NRPE nach einem Prozess mit dem Namen "haproxy" suchen und einen kritischen Status melden, wenn weniger als 1 Prozesse mit diesem Namen ausgeführt werden.
Laden Sie die NRPE-Konfiguration neu:
sudo service nagios-nrpe-server reload
Stellen Sie sicher, dass Sie dies auf weiteren Anwendungsservern wiederholen.
Dienstdefinition erstellen (auf dem Server)
Auf Ihrem Nagios-Server * müssen wir * einen neuen Dienst definieren, der NRPE verwendet, um den Befehl + check_haproxy +
auszuführen.
Öffnen Sie die Datei, die Ihren Datenbankhost definiert. In unserem Beispiel heißt es "lb1.cfg":
sudo vi /usr/local/nagios/etc/servers/.cfg
Fügen Sie am Ende der Datei diese Service-Definition hinzu (vergewissern Sie sich, dass der Wert "+ host_name +" mit dem Namen der Host-Definition übereinstimmt):
lb1.cfg - check_haproxy
define service {
use generic-service
host_name
service_description Check HAProxy Process
check_command check_nrpe!check_haproxy
}
Dadurch wird Nagios so konfiguriert, dass NRPE zum Ausführen des Befehls check_haproxy auf Ihrem Load Balancer-Server verwendet wird.
Damit diese Änderung wirksam wird, müssen wir Nagios neu laden.
Laden Sie die Nagios-Konfiguration neu
Geben Sie den folgenden Befehl ein, um Nagios neu zu laden und alle unsere Änderungen in Kraft zu setzen:
sudo service nagios reload
Wenn die Konfiguration keine syntaktischen Fehler enthält, sollten Sie festlegen.
Überprüfen Sie die Nagios-Dienste
Bevor Sie fortfahren, sollten Sie sicherstellen, dass Nagios alle von Ihnen definierten Hosts und Dienste überwacht. Greifen Sie über den öffentlichen Hostnamen oder die IP-Adresse auf Ihren Nagios-Server zu, z. + http: // monitoring. / nagios / +
. Geben Sie das Login ein, das Sie während der Nagios-Server-Installation eingerichtet haben.
Klicken Sie im Seitenmenü auf den Link * Dienste *. Sie sollten zu einer Seite weitergeleitet werden, die wie folgt aussieht:
Bild: https://assets.digitalocean.com/articles/architecture/production/lamp/services.png [Nagios Services]
Im Idealfall sehen Sie jeden Host und alle Services befinden sich im Status "OK". Auf dem Screenshot sehen wir, dass ein Problem mit dem * app2 * -Server vorliegt, da dieser bei den letzten Statusprüfungen ausgeschaltet wurde. Wenn einer Ihrer Dienste nicht "OK" ist, beheben Sie ihn oder überprüfen Sie, falls die Dienste in Ordnung sind, Ihre Nagios-Konfiguration auf Fehler.
Andere Überlegungen
Sie möchten höchstwahrscheinlich einen Wiederherstellungsplan für Ihren Überwachungsserver erstellen und Ihre Nagios-Konfigurationsdateien sichern (+ / usr / local / nagios / etc +
). Sobald die Backups eingerichtet sind, möchten Sie wahrscheinlich die Überwachung für zusätzliche Dienste und E-Mail-Benachrichtigungen konfigurieren.
Fazit
Jetzt sollten Sie in der Lage sein, den Status Ihrer Server und Dienste zu sehen, indem Sie einfach einen Blick auf Ihr Überwachungs-Dashboard werfen. Im Falle eines Ausfalls können Sie mithilfe Ihres Überwachungssystems feststellen, welche Server und Dienste nicht ordnungsgemäß ausgeführt werden, wodurch sich die Ausfallzeit Ihrer Anwendung verringern lässt.
Fahren Sie mit dem nächsten Lernprogramm fort, um die zentrale Protokollierung für Ihr Produktionsserver-Setup einzurichten: Building for Production: Webanwendungen - Zentrale Protokollierung.