Download PDF
Download page Рекомендации по настройке отслеживания состояния компонентов Termidesk.
Рекомендации по настройке отслеживания состояния компонентов Termidesk
Общие сведения по проверке состояния компонентов
Для отслеживания состояния компонентов 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
Базовый 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}"
Ключ --insecure
используется для отключения проверки валидности сертификатов. Выполнение запроса без использования проверки SSL допустимо только на тестовых стендах. В производственной среде необходимо установить валидные сертификаты.
Состояние компонента «Шлюз»
При распределенной установке 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}"