关于 GitHub Enterprise Server 群集运行状况
GitHub Enterprise Server 群集由多个节点组成,并在两个或多个节点之间分布冗余服务。 如果个别服务或整个节点发生故障,用户应该注意不到。 故障会影响性能和冗余,所以监视群集的运行状况就很重要。 可以使用命令行实用工具或外部监视工具(如 Nagios)监视群集的运行状况。
还可以使用 Node Eligibility Service 监视个别节点的运行状况。 有关详细信息,请参阅“使用节点资格服务监视群集节点的运行状况”。
手动检查集群状态
GitHub Enterprise Server 有一个内置的命令行实用程序,用于监视集群的状态。 在管理 shell 中,运行 ghe-cluster-status
命令会对每个节点执行一系列运行状况检查,包括验证连接性和服务状态。 输出会显示所有测试结果,包括文本 ok
或 error
。 例如,要仅显示失败的测试,请运行:
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 主机
-
使用空白密码生成 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
nagiosuser@nagios:~$ sudo cp .ssh/id_ed25519 /var/lib/nagios/.ssh/
nagiosuser@nagios:~$ sudo chown nagios:nagios /var/lib/nagios/.ssh/id_ed25519
-
要授权公钥仅运行
ghe-cluster-status -n
命令,请在/data/user/common/authorized_keys
文件中使用command=
前缀。 从任何节点上的管理 shell,修改此文件以添加在步骤 1 中生成的公钥。 例如:command="/usr/local/bin/ghe-cluster-status -n" ssh-ed25519 AAAA....
-
通过在修改
/data/user/common/authorized_keys
文件的节点上运行ghe-cluster-config-apply
来验证配置并将其复制到集群中的每个节点。admin@ghe-data-node-0:~$ ghe-cluster-config-apply > Validating configuration > ... > Finished cluster configuration
-
要测试 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
-
在 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 }
-
将此命令添加到 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 界面中看到新配置的服务。