GitHub Enterprise Server 클러스터 상태 정보
GitHub Enterprise Server 클러스터는 둘 이상의 노드에 이중화된 서비스가 분산되어 있는 여러 노드로 구성됩니다. 개별 서비스 또는 전체 노드에서 장애가 발생하더라도 사용자는 몰라야 합니다. 오류는 성능 및 이중화에 영향을 주므로 클러스터의 상태를 모니터링하는 것이 중요합니다. 명령줄 유틸리티 또는 Nagios와 같은 외부 모니터링 도구를 사용하여 클러스터의 상태를 모니터링할 수 있습니다.
수동으로 클러스터 상태 검사
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
참고: 실패한 테스트가 없으면 이 명령은 출력을 생성하지 않습니다. 이 경우 클러스터가 정상임을 나타냅니다.
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 키는 호스트에 대한 모든 권한이 부여된 경우 보안 위험을 초래할 수 있습니다. 이 키의 권한 부여를 단일 읽기 전용 명령으로 제한합니다.
참고: Ed25519 알고리즘을 지원하지 않는 Linux 배포를 사용하는 경우 다음 명령을 사용합니다.
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=
접두사를 사용합니다.__ 임의 노드의 관리 셸에서 이 파일을 수정하여 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 웹 인터페이스에서 새로 구성된 서비스를 확인할 수 있습니다.