Building for Production: Webanwendungen - Überwachung

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.

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:

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.