Skip to main content

Clusterknoten überwachen

Ein GitHub Enterprise Server-Cluster besteht aus redundanten Diensten, die auf mindestens zwei Knoten verteilt sind. Wenn bei einem einzelnen Dienst oder einem gesamten Knoten ein Fehler auftritt, sollte dies den Benutzern des Clusters sofort auffallen. Da jedoch Leistung und Redundanz betroffen sind, ist es wichtig, den Zustand eines GitHub Enterprise Server-Clusters zu ü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

  1. 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
  2. Kopiere den privaten Schlüssel (id_ed25519) in den Startordner nagios und lege den entsprechenden Besitz fest.

    nagiosuser@nagios:~$ sudo cp .ssh/id_ed25519 /var/lib/nagios/.ssh/
    nagiosuser@nagios:~$ sudo chown nagios:nagios /var/lib/nagios/.ssh/id_ed25519
  3. Um den öffentlichen Schlüssel nur für die Ausführung des Befehls ghe-cluster-status -n zu autorisieren, verwende ein command=-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....

  4. Ü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
  5. 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
  6. 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
    }
    
  7. 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.

Nagios-Beispiel