Informationen zur GitHub Enterprise Server-Clusterintegrität
Ein GitHub Enterprise Server-Cluster umfasst mehrere Knoten mit redundanten Diensten, die auf zwei oder mehr Knoten verteilt sind. Wenn ein Fehler bei einem einzelnen Dienst oder einem ganzen Knoten auftritt, sollten Benutzer*innen dies nicht bemerken. Fehler wirken sich auf Leistung und Redundanz aus, daher ist es wichtig, die Integrität deines Clusters zu überwachen. Du kannst die Integrität deines Clusters mit einem Befehlszeilenhilfsprogramm oder einem externen Überwachungstool wie Nagios überwachen.
Clusterstatus manuell überprüfen
GitHub Enterprise Server besitzt ein integriertes Befehlszeilendienstprogramm zum Überwachen des Clusterzustands. Wenn in der Verwaltungsshell der Befehl ghe-cluster-status
ausgeführt wird, werden einige Zustandsprüfungen auf jedem Knoten ausgeführt, darunter die Verifizierung der Konnektivität und des Dienststatus. Die Ausgabe zeigt alle Testergebnisse einschließlich der Texte ok
oder error
an. Führe beispielsweise Folgendes aus, um nur fehlgeschlagene Tests anzuzeigen:
admin@ghe-data-node-0:~$ ghe-cluster-status | grep error
> mysql-replication ghe-data-node-0: error Stopped
> mysql cluster: error
Hinweis: Wenn keine fehlerhaften Tests vorliegen, gibt dieser Befehl nichts aus. Dies gibt an, dass der Cluster fehlerfrei ist.
Clusterstatus mit Nagios überwachen
Du kannst Nagios für die Überwachung von GitHub Enterprise Server konfigurieren. Zusätzlich zur Überwachung der grundlegenden Konnektivität jedes Clusterknotens kannst du den Clusterstatus überprüfen, indem du Nagios für die Verwendung des Befehls ghe-cluster-status -n
konfigurierst. Dadurch wird eine für Nagios verständliche Ausgabe zurückgegeben.
Voraussetzungen
- Linux-Host, auf dem Nagios ausgeführt wird.
- Netzwerkzugriff auf den GitHub Enterprise Server-Cluster.
Nagios-Host konfigurieren
-
Generiere einen SSH-Schlüssel mit einer leeren Passphrase. Nagios verwendet diese, um sich beim GitHub Enterprise Server-Cluster zu authentifizieren.
nagiosuser@nagios:~$ ssh-keygen -t ed25519 > Generating public/private ed25519 key pair. > Enter file in which to save the key (/home/nagiosuser/.ssh/id_ed25519): > Enter passphrase (empty for no passphrase): LEAVE BLANK BY PRESSING ENTER > Enter same passphrase again: PRESS ENTER AGAIN > Your identification has been saved in /home/nagiosuser/.ssh/id_ed25519. > Your public key has been saved in /home/nagiosuser/.ssh/id_ed25519.pub.
Sicherheitswarnung: Ein SSH-Schlüssel ohne Passphrase kann ein Sicherheitsrisiko darstellen, wenn er für den Vollzugriff auf einen Host berechtigt ist. Begrenze die Autorisierung dieses Schlüssels auf einen einzelnen schreibgeschützten Befehl.
Hinweis: Wenn du eine Linux-Distribution verwendest, die den Ed25519-Algorithmus nicht unterstützt, verwende den folgenden Befehl:
nagiosuser@nagios:~$ ssh-keygen -t rsa -b 4096
nagiosuser@nagios:~$ sudo cp .ssh/id_ed25519 /var/lib/nagios/.ssh/
nagiosuser@nagios:~$ sudo chown nagios:nagios /var/lib/nagios/.ssh/id_ed25519
-
Um den öffentlichen Schlüssel nur für die Ausführung des Befehls
ghe-cluster-status -n
zu autorisieren, verwende eincommand=
-Präfix in der Datei/data/user/common/authorized_keys
. Ändere in der Verwaltungsshell oder auf einem beliebigen Knoten diese Datei, um den in Schritt 1 generierten öffentlichen Schlüssel hinzuzufügen. Beispiel:command="/usr/local/bin/ghe-cluster-status -n" ssh-ed25519 AAAA....
-
Überprüfe die Konfiguration und kopiere sie auf jeden Knoten im Cluster, indem du
ghe-cluster-config-apply
auf dem Knoten ausführst, auf dem du die Datei/data/user/common/authorized_keys
geändert hast.admin@ghe-data-node-0:~$ ghe-cluster-config-apply > Validating configuration > ... > Finished cluster configuration
-
Um zu testen, ob das Nagios-Plug-in den Befehl erfolgreich ausführen kann, führe es auf dem Nagios-Host interaktiv aus.
nagiosuser@nagios:~$ /usr/lib/nagios/plugins/check_by_ssh -l admin -p 122 -H HOSTNAME -C "ghe-cluster-status -n" -t 30 > OK - No errors detected
-
Erstelle eine Befehlsdefinition in deiner Nagios-Konfiguration.
Beispieldefinition
define command { command_name check_ssh_ghe_cluster command_line $USER1$/check_by_ssh -H $HOSTADDRESS$ -C "ghe-cluster-status -n" -l admin -p 122 -t 30 }
-
Füge diesen Befehl zu einer Dienstdefinition für einen Knoten im GitHub Enterprise Server-Cluster hinzu.
Beispieldefinition
define host{ use generic-host host_name ghe-data-node-0 alias ghe-data-node-0 address 10.11.17.180 } define service{ use generic-service host_name ghe-data-node-0 service_description GitHub Cluster Status check_command check_ssh_ghe_cluster }
Nachdem du Nagios die Definition hinzugefügt hast, wird die Dienstüberprüfung entsprechend deiner Konfiguration ausgeführt. Du solltest den neu konfigurierten Dienst auf der Nagios-Weboberfläche anzeigen können.