此版本的 GitHub Enterprise 已停止服务 2021-09-23. 即使针对重大安全问题,也不会发布补丁。 要获得更好的性能、改进的安全性和新功能,请升级到 GitHub Enterprise 的最新版本。 如需升级方面的帮助,请联系 GitHub Enterprise 支持

监视集群节点

GitHub Enterprise Server 集群由分布在两个或多个节点上的冗余服务组成。 如果单个服务或整个节点将要发生故障,这种情况不应立即展示给集群的用户。 但是,由于性能和冗余受到影响,因此监视 GitHub Enterprise Server 集群的状态非常重要。

手动检查集群状态

GitHub Enterprise Server 有一个内置的命令行实用程序,用于监视集群的状态。 在管理 shell 中,运行 ghe-cluster-status 命令会对每个节点执行一系列状态检查,包括验证连接和服务状态。 输出会显示所有测试结果,包括文本 okerror。 例如,要仅显示失败的测试,请运行:

admin@ghe-data-node-0:~$ ghe-cluster-status | grep error
> mysql-replication ghe-data-node-0: error Stopped
> mysql cluster: error

注:如果没有失败的测试,则此命令不会产生任何输出。 这表明集群的状态是健康的。

使用 Nagios 监视集群状态

您可以配置 Nagios 来监视 GitHub Enterprise Server。 除了监视每个集群节点的基本连接以外,还可以通过将 Nagios 配置为使用 ghe-cluster-status -n 命令来检查集群状态。 这将以 Nagios 理解的格式返回输出。

基本要求

  • 运行 Nagios 的 Linux 主机。
  • 对 GitHub Enterprise Server 集群的网络访问。

配置 Nagios 主机

  1. 使用空白密码生成 SSH 密钥。 Nagios 使用此密钥来对 GitHub Enterprise Server 集群进行身份验证。

    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.

    安全警告:如果授权完全访问主机,则没有密码的 SSH 密钥可能会构成安全风险。 将此密钥的授权限制为单个只读命令。

    注:如果您使用的是不支持 Ed25519 算法的 Linux 发行版,请使用以下命令:

    nagiosuser@nagios:~$ ssh-keygen -t rsa -b 4096
  2. 将私钥 (id_ed25519) 复制到 nagios 主文件夹并设置适当的所有权。

    nagiosuser@nagios:~$ sudo cp .ssh/id_ed25519 /var/lib/nagios/.ssh/
    nagiosuser@nagios:~$ sudo chown nagios:nagios /var/lib/nagios/.ssh/id_ed25519
  3. 要授权公钥运行 ghe-cluster-status -n 命令,请在 /data/user/common/authorized_keys 文件中使用 command= 前缀。 从任何节点上的管理 shell,修改此文件以添加在步骤 1 中生成的公钥。 例如:command="/usr/local/bin/ghe-cluster-status -n" ssh-ed25519 AAAA....

  4. 通过在修改了 /data/user/common/authorized_keys 文件的节点上运行 ghe-cluster-config-apply,验证配置并将其复制到集群中的每个节点。

    admin@ghe-data-node-0:~$ ghe-cluster-config-apply
    > Validating configuration
    > ...
    > Finished cluster configuration
  5. 要测试 Nagios 插件能否成功执行命令,请从 Nagios 主机以交互方式运行此命令。

    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. 在 Nagios 配置中创建命令定义。

    示例定义
    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. 将此命令添加到 GitHub Enterprise Server 集群中节点的服务定义。

    示例定义
    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
            }
    

将定义添加到 Nagios 后,将根据您的配置执行服务检查。 您应该能够在 Nagios Web 界面中看到新配置的服务。

Nagios 示例