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-celery
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, в параметрах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 помещает информацию о себе в очередь брокера сообщений RabbitMQ;
- служба
termidesk-celery-beat(реализована в компоненте «Менеджер рабочих мест») с периодичностью в 60 секунд забирает из очереди RabbitMQ список всех узлов компонентов Termidesk; - служба
termidesk-celery-beatсоздает задачу на опрос состояния; - далее служба
termidesk-celery-workerвыполняет задачу на опрос состояния узлов. Полученные результаты службаtermidesk-celery-workerзаписывает в БД.
Следующие порты должны быть доступны с узла «Менеджер рабочих мест»:
- 8102 (опрос компонента «Шлюз»);
- 8103 (опрос службы
termidesk-celery-beat); - 8104 (опрос службы
termidesk-celery-worker); - 443 (опрос компонента «Универсальный диспетчер», а именно - «Портала администратора» и «Портала пользователя»).
В случае если используются несколько узлов «Менеджера рабочих мест», опрос выполняет узел, первый забравший очередь из RabbitMQ. Опрос инициируется по времени:
- служба
termidesk-celery-beatв 60 секунд подключается к очереди RabbitMQ для получения списка узлов; - узлы, в свою очередь, раз в 60 секунд помещают информацию о себе в очередь RabbitMQ.
Состояние компонента «Универсальный диспетчер»
При распределенной установке 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 экземпляры компонента «Менеджер рабочих мест» могут быть установлены на нескольких узлах.
Для использования механизма проверки состояния компонента необходимо в конфигурационном файле /etc/opt/termidesk-vdi/termidesk.conf раскомментировать строки параметров:
- для непосредственно компонента «Менеджер рабочих мест», а именно службы
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.
Пример задания значений:
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
Пример команды проверки состояния компонента «Менеджер рабочих мест» через утилиту curl (предполагается, что «Менеджер рабочих мест» настроен для работы по защищенному соединению):
curl --insecure -v -s -X 'GET' "${HOSTNAME}:8103/api/health/check" -H 'accept: application/json' -H "Authorization: Token ${HEALTH_CHECK_ACCESS_KEY}"