Skip to main content

此版本的 GitHub Enterprise Server 已于以下日期停止服务 2024-09-25. 即使针对重大安全问题,也不会发布补丁。 为了获得更好的性能、更高的安全性和新功能,请升级到最新版本的 GitHub Enterprise。 如需升级帮助,请联系 GitHub Enterprise 支持

监视群集的运行状况

若要确保 GitHub Enterprise Server 群集的性能和冗余始终正常,可以监视群集的运行状况。

谁可以使用此功能?

GitHub 确定聚类分析的资格,并且必须为实例的许可证启用配置。 聚类分析需要仔细规划和额外的管理开销。 有关详细信息,请参阅“关于集群”。

关于 GitHub Enterprise Server 群集运行状况

GitHub Enterprise Server 群集由多个节点组成,并在两个或多个节点之间分布冗余服务。 如果个别服务或整个节点发生故障,用户应该注意不到。 故障会影响性能和冗余,所以监视群集的运行状况就很重要。 可以使用命令行实用工具或外部监视工具(如 Nagios)监视群集的运行状况。

还可以使用 Node Eligibility Service 监视个别节点的运行状况。 有关详细信息,请参阅“使用节点资格服务监视群集节点的运行状况”。

手动检查集群状态

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 密钥可能会带来安全风险。 将此密钥的授权限制为单个只读命令。

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

nagiosuser@nagios:~$ ssh-keygen -t rsa -b 4096
1. 将私钥 (`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
  1. 要授权公钥仅运行 ghe-cluster-status -n 命令,请在 /data/user/common/authorized_keys 文件中使用 command= 前缀。 从任何节点上的管理 shell,修改此文件以添加在步骤 1 中生成的公钥。 例如: command="/usr/local/bin/ghe-cluster-status -n" ssh-ed25519 AAAA....

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

    admin@ghe-data-node-0:~$ ghe-cluster-config-apply
    > Validating configuration
    > ...
    > Finished cluster configuration
    
  3. 要测试 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
    
  4. 在 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
    }
    
  5. 将此命令添加到 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 界面中看到新配置的服务。