Сведения о работоспособности кластера 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
Можно настроить Nagios для мониторинга GitHub Enterprise Server. Помимо мониторинга базового подключения к каждому из узлов кластера, можно проверять состояние кластера, настроив Nagios для использования команды ghe-cluster-status -n
. В результате выполнения возвращаются выходные данные в формате, понятном Nagios.
Необходимые компоненты
- Узел Linux, где выполняется Nagios.
- Сетевой доступ к кластеру 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
, используйте префиксcommand=
в файле/data/user/common/authorized_keys
. В административной оболочке на любом узле измените этот файл, добавив открытый ключ, созданный на шаге 1. Пример:command="/usr/local/bin/ghe-cluster-status -n" ssh-ed25519 AAAA....
-
Проверьте и скопируйте конфигурацию на каждый узел в кластере, выполнив команду
ghe-cluster-config-apply
на узле, где был изменен файл/data/user/common/authorized_keys
.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.