クラスタノードのモニタリング
GitHub Enterprise Server クラスタは、2 つ以上のノードに分散された冗長サービスで構成されています。 もしも個々のサービスまたは1つのノード全体に障害があっても、それがクラスタのユーザに即座に見えることはありません。 ただし、パフォーマンスと冗長性が影響を受けるため、GitHub Enterprise Server クラスタの健全性を監視することが重要です。
クラスタのステータスの手動でのチェック
GitHub Enterprise Server には、クラスタの健全性をモニタリングするためのコマンドラインユーティリティが組み込まれています。 管理シェルからghe-cluster-status
コマンドを実行すると、接続性やサービスステータスの検証を含む一連のヘルスチェックが各ノード上で実行されます。 結果出力には、すべてのテスト結果にtext ok
もしくはerror
が含まれます。 たとえば失敗したテストだけを表示するには以下のようにしてください。
admin@ghe-data-node-0:~$ ghe-cluster-status | grep error
> mysql-replication ghe-data-node-0: error Stopped
> mysql cluster: error
メモ: すべてのテストにパスした場合、このコマンドは何も出力しません。 これはクラスタが健全であることを意味します。
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 rsa -b 4096 > Generating public/private rsa key pair. > Enter file in which to save the key (/home/nagiosuser/.ssh/id_rsa): > 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_rsa. > Your public key has been saved in /home/nagiosuser/.ssh/id_rsa.pub.
**セキュリティの警告:** パスフレーズを持たない SSH キーは、ホストへの完全なアクセスを承認されていた場合、セキュリティリスクになることがあります。 このキーの承認は、単一の読み取りのみのコマンドに限定してください。 -
秘密鍵 (
id_rsa
) をnagios
ホームフォルダにコピーし、適切な所有権を設定します。nagiosuser@nagios:~$ sudo cp .ssh/id_rsa /var/lib/nagios/.ssh/ nagiosuser@nagios:~$ sudo chown nagios:nagios /var/lib/nagios/.ssh/id_rsa
-
ghe-cluster-status -n
コマンドのみを実行するために公開鍵を認証するには、/data/user/common/authorized_keys
ファイル中でcommand=
プレフィックスを使ってください。 任意のノードの管理シェルから、このファイルを変更してステップ1で生成した公開鍵を追加してください。 例:command="/usr/local/bin/ghe-cluster-status -n" ssh-rsa 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 クラスタ内のノードのサービス定義に追加します。
Example definition
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 インターフェースで新しく設定されたサービスを確認することができます。