Общие сведения по проверке состояния компонентовДля отслеживания состояния компонентов Termidesk и обращения к ним для выполнения проверок состояния (health check) используется API-запрос |
Начальная спецификация схемы 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 |
Базовый URL для API: /api/health.
Тип контента: application/json.
Для каждого компонента Termidesk механизм проверки состояния доступен на порте, заданном в конфигурационном файле:
Для компонента «Универсальный диспетчер» порт определен настройками веб-сервера (по умолчанию используется 443). |
/etc/opt/termidesk-vdi/termidesk.conf, в параметрах TASKMAN_HEALTH_CHECK_PORT (по умолчанию используется 8100), CELERY_BEAT_HEALTH_CHECK_PORT (по умолчанию используется 8103), CELERY_WORKER_HEALTH_CHECK_PORT (по умолчанию используется 8104);/etc/termidesk/gateway.yaml, в параметре ${mgtServerPort:8102} (по умолчанию используется 8102).Для исключения злоупотреблением частыми вызовами API, способными создать нагрузку на систему, доступ к API-запросу контролируется отдельным токеном. Значение токена задается конфигурационным файлом:
/etc/opt/termidesk-vdi/termidesk.conf, в параметре HEALTH_CHECK_ACCESS_KEY;/etc/termidesk/gateway.yaml, в параметре token: ${healthCheckAccessKey}.Пример HEALTH_CHECK_ACCESS_KEY:
HEALTH_CHECK_ACCESS_KEY = "9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b" |
Пример token: ${healthCheckAccessKey}:
${healthCheckAccessKey:9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b} |
Состояние компонента «Универсальный диспетчер»При распределенной установке Termidesk экземпляры компонента «Универсальный диспетчер» могут быть установлены на нескольких узлах. Доступ к узлам организуется через балансировщик нагрузки, но для механизма проверок состояния нужно обращаться к каждому узлу напрямую. |
Компонент изначально задействован для работы по протоколу HTTP, поэтому механизм проверки состояния реализуется отдельными вызовами REST API.
Пример команды проверки состояния компонента через утилиту curl:
curl --insecure -v -s -X 'GET' "https://${HOSTNAME}:443/api/health/check" -H 'accept: application/json' -H "Authorization: Token ${HEALTH_CHECK_ACCESS_KEY}" |
Ключ |
Состояние компонента «Шлюз»При распределенной установке Termidesk экземпляры компонента «Шлюз» могут быть установлены на нескольких узлах. Доступ к узлам организуется через балансировщик нагрузки, но для механизма проверок состояния нужно обращаться к каждому узлу напрямую. |
Для исключения злоупотреблением частыми вызовами API, способными создать нагрузку на систему, доступ к API-запросу компонента «Шлюз» termidesk-gateway контролируется отдельным токеном. Значение токена задается при запуске службы «Шлюза» в параметре token: ${healthCheckAccessKey}.
Пример команды проверки состояния компонента через утилиту curl для компонента «Шлюз» termidesk-gateway (предполагается, что «Шлюз» настроен для работы по защищенному соединению):
curl --insecure -v -s -X 'GET' "https://${HOSTNAME}:8102/api/health" -H 'accept: application/json' -H "Authorization: Token ${healthCheckAccessKey}" |
Состояние компонента «Менеджер рабочих мест»При распределенной установке Termidesk экземпляры компонента «Менеджер рабочих мест» могут быть установлены на нескольких узлах, но активен должен быть только один из них. Все остальные компоненты являются резервными и, по умолчанию, находятся в состоянии «Passive». |
Для использования механизма проверки состояния компонента необходимо в конфигурационном файле /etc/opt/termidesk-vdi/termidesk.conf раскомментировать строки параметров:
termidesk-taskman: TASKMAN_HEALTH_CHECK_IP, TASKMAN_HEALTH_CHECK_PORT, HEALTH_CHECK_CERT, HEALTH_CHECK_KEY. Для параметров HEALTH_CHECK_CERT, HEALTH_CHECK_KEY нужно указать путь к сертификату и ключу, используемых для защищенного подключения, и выполнить перезапуск служб Termidesk;termidesk-celery-beat: CELERY_BEAT_CHECK_IP, CELERY_BEAT_HEALTH_CHECK_PORT, HEALTH_CHECK_CERT, HEALTH_CHECK_KEY. Для параметров HEALTH_CHECK_CERT, HEALTH_CHECK_KEY нужно указать путь к сертификату и ключу, используемых для защищенного подключения, и выполнить перезапуск служб Termidesk; termidesk-celery-worker: CELERY_WORKER_CHECK_IP, CELERY_WORKER_HEALTH_CHECK_PORT, HEALTH_CHECK_CERT, HEALTH_CHECK_KEY. Для параметров HEALTH_CHECK_CERT, HEALTH_CHECK_KEY нужно указать путь к сертификату и ключу, используемых для защищенного подключения, и выполнить перезапуск служб Termidesk.Пример задания значений:
TASKMAN_HEALTH_CHECK_PORT=8100 TASKMAN_HEALTH_CHECK_IP='0.0.0.0' CELERY_BEAT_HEALTH_CHECK_PORT=8103 CELERY_BEAT_HEALTH_CHECK_IP='0.0.0.0' CELERY_WORKER_HEALTH_CHECK_PORT=8104 CELERY_WORKER_HEALTH_CHECK_IP='0.0.0.0' HEALTH_CHECK_CERT=/etc/opt/termidesk-vdi/healthcheck.pem HEALTH_CHECK_KEY=/etc/opt/termidesk-vdi/healthcheck-decrypted.key |
Пример команды проверки состояния компонента «Менеджер рабочих мест», а именно службы termidesk-taskman, через утилиту curl (предполагается, что «Менеджер рабочих мест» настроен для работы по защищенному соединению):
curl --insecure -v -s -X 'GET' "${HOSTNAME}:8100/api/health/check" -H 'accept: application/json' -H "Authorization: Token ${HEALTH_CHECK_ACCESS_KEY}" |