Общие сведения по проверке состояния компонентов

Для отслеживания состояния компонентов Termidesk и обращения к ним для выполнения проверок состояния здоровья (health check) используется API-запрос /api/health.

Начальная спецификация схемы HealthCheck API в формате OpenAPI соответствует описанию:

openapi: 3.0.3
info:
  title: Termidesk health check api schema
  version: 0.1
paths:
  /api/health:
    get:
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum: [pass, warn, fail]
                    example: fail
                    description: "Состояние компонента"
                  version:
                    type: string
                    example: 3.3
                    description: "Версия компонента"
                  description:
                    type: string
                    example: termidesk-taskman
                    description: "Описание компонента"
                  output:
                    type: string
                    example: "django.db.utils.OperationalError: FATAL:  password authentication failed for user 'termidesk'"
                    description: "Описание ошибки (если есть)"
                required:
                  - status
        '401':
          description: Authorization information is missing or invalid
BASH

Базовый URL для API: /api/health.
Тип контента: application/json.

Для каждого компонента Termidesk механизм проверки состояния должен быть доступен на порте, заданном в конфигурационном файле /etc/opt/termidesk-vdi/termidesk.conf. Порт можно переопределить в этом же файле.

Для исключения злоупотреблением частыми вызовами API, способными создать нагрузку на систему, доступ к API-запросу контролируется отдельным токеном. Значение токена задается конфигурационным файлом /etc/opt/termidesk-vdi/termidesk.conf в переменной HEALTH_CHECK_ACCESS_KEY.

Пример:  

HEALTH_CHECK_ACCESS_KEY = "9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b"
BASH

Состояние компонента «Универсальный диспетчер»

При распределенной установке Termidesk экземпляры компонента «Универсальный диспетчер» могут быть установлены на нескольких узлах. Доступ к узлам организуется через балансировщик трафика, но для механизма проверок состояния нужно обращаться к каждому узлу напрямую. 

Компонент изначально задействован для работы по протоколу HTTP, поэтому механизм проверки состояния реализуется отдельными вызовами REST API. 

Пример команды проверки состояния компонента через утилиту curl:

curl -v -s -X 'GET' "${HOSTNAME}:${HEALTH_PORT}/api/health" -H 'accept: application/json' -H "Authorization: Token ${HEALTH_CHECK_ACCESS_KEY}" --fail -w "\n%{http_code}"
BASH

Состояние компонента «Шлюз»

При распределенной установке Termidesk экземпляры компонента «Шлюз» могут быть установлены на нескольких узлах. Доступ к узлам организуется через балансировщик трафика, но для механизма проверок состояния нужно обращаться к каждому узлу напрямую. 

Пример команды проверки состояния компонента через утилиту curl:

curl -I -X 'GET' -H "Accept: text/plain" http://<IP-адрес_шлюза>:5099/info
BASH

Пример ответа для работоспособного компонента:

HTTP/1.1 200 OK
Date: Tue, 28 Nov 2023 07:37:51 GMT
uWebSockets: 20
Content-Length: 314
BASH

Код 200 в ответе на API-запрос свидетельствует о работоспособности компонента «Шлюз». Отсутствие ответа говорит о том, что компонент не работает. Данное правило необходимо добавить на балансировщике трафика.

Состояние компонента «Менеджер рабочих мест»

При распределенной установке Termidesk экземпляры компонента «Менеджер рабочих мест» могут быть установлены на нескольких узлах, но активен должен быть только один из них. Все остальные компоненты являются резервными и, по умолчанию, находятся в состоянии «Passive».

Для использования механизма проверки состояния компонента необходимо в конфигурационном файле /etc/opt/termidesk-vdi/termidesk.conf раскомментировать строки параметров TASKMAN_HEALTH_CHECK_PORT, TASKMAN_HEALTH_CHECK_CERT, TASKMAN_HEALTH_CHECK_KEY. Для параметров TASKMAN_HEALTH_CHECK_CERT, TASKMAN_HEALTH_CHECK_KEY нужно указать путь к сертификату и ключу, используемых для защищенного подключения, и выполнить перезапуск служб Termidesk.

Пример задания значений:

TASKMAN_HEALTH_CHECK_PORT=8100
TASKMAN_HEALTH_CHECK_CERT=/etc/opt/termidesk-vdi/taskman-healthcheck.pem
TASKMAN_HEALTH_CHECK_KEY=/etc/opt/termidesk-vdi/taskman-healthcheck-decrypted.key
BASH

Пример команды проверки состояния компонента через утилиту curl:

curl -v -s -X 'GET' "${HOSTNAME}:8100/api/health" -H 'accept: application/json' -H "Authorization: Token ${HEALTH_CHECK_ACCESS_KEY}" --fail -w "\n%{http_code}"
BASH