GitHub Enterprise Server クラスターの健全性について
GitHub Enterprise Server クラスタは複数のノードで構成され、冗長サービスが 2 つ以上のノードに分散されます。 個々のサービスまたはノード全体が失敗した場合、ユーザーは気付くことができません。 障害はパフォーマンスと冗長性に影響するため、クラスターの正常性を監視することが重要です。 コマンド ライン ユーティリティまたは Nagios などの外部監視ツールを使用して、クラスターの正常性を監視できます。
また、Node Eligibility Service を使用して、個々のノードの正常性を監視することもできます。 詳しくは、「ノード適格性サービスを使用したクラスター ノードの正常性の監視」を参照してください。
クラスタのステータスの手動でのチェック
GitHub Enterprise Server には、クラスタの健全性をモニタリングするためのコマンドラインユーティリティが組み込まれています。 管理シェルから 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
Note
失敗したテストがない場合、このコマンドは出力を生成しません。 これはクラスタが健全であることを意味します。
GitHub CLI を使用してクラスターの状態を監視する
GitHub CLI の gh es
拡張機能を使用して、GitHub Enterprise Server クラスターの状態をチェックできます。 詳細については、GH ES CLI の使用に関するドキュメントと「GitHub CLI を使用したインスタンスの管理」を参照してください。
Nagiosでのクラスタステータスのモニタリング
GitHub Enterprise Server を監視するように Nagios を構成できます。 各クラスター ノードへの基本的な接続を監視することに加えて、ghe-cluster-status -n
コマンドを使用するように Nagios を構成して、クラスターの状態を確認できます。 これは、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 キーがホストへの完全なアクセスを承認されていると、セキュリティ リスクになることがあります。 このキーの承認は、単一の読み取りのみのコマンドに限定してください。
Note
Ed25519 アルゴリズムをサポートしていない Linux のディストリビューションを使っている場合は、次のコマンドを使います。
nagiosuser@nagios:~$ ssh-keygen -t rsa -b 4096
-
秘密キー (
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
-
ghe-cluster-status -n
コマンド のみ を実行する公開キーを承認するには、/data/user/common/authorized_keys
ファイル内のcommand=
プレフィックスを使用します。 任意のノードの管理シェルから、このファイルを変更してステップ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 インターフェースで新しく設定されたサービスを確認することができます。