Мониторинг и метрики¶
Мониторинг сервера RuDesktop — набор встроенных средств для проверки доступности служб, наблюдения за нагрузкой на базу данных и сбора диагностической информации. Раздел описывает, какие точки контроля доступны «из коробки» и как использовать их во внешних системах мониторинга
Подсказка
Встроенного экспортёра метрик в формате Prometheus в сервере RuDesktop нет. Для интеграции с системами мониторинга (Zabbix, Prometheus, Grafana) используются эндпоинт /api/healthcheck/, команды rude status / rude prof и стандартные средства systemd и PostgreSQL
Что контролировать¶
Минимальный набор точек, которые имеет смысл наблюдать в продуктивной среде:
Точка контроля |
Чем проверять |
|---|---|
Доступность веб-API |
HTTP-запрос к |
Состояние служб сервера |
|
Нагрузка на базу данных |
|
Свободное место под логи и БД |
|
Доступность Redis |
|
Доступность узла кластера |
|
Healthcheck-эндпоинт¶
Сервер предоставляет открытый эндпоинт для внешних балансировщиков и систем мониторинга:
GET https://<адрес_сервера>/api/healthcheck/
Эндпоинт не требует аутентификации и возвращает JSON-ответ:
{"health_check": "passed successfully"}
Важно
Эндпоинт подтверждает, что веб-служба rudesktop-web принимает HTTP-запросы и Django успешно отрабатывает маршрут. Он не проверяет доступность базы данных, Redis и нативных компонентов relay / executor — для них используйте отдельные проверки (см. раздел ниже)
Пример проверки из скрипта мониторинга:
curl -fsS https://server.example.com/api/healthcheck/ \
| grep -q '"passed successfully"' \
&& echo OK || echo FAIL
Пример блока для HAProxy перед сервером:
backend rudesktop_web
option httpchk GET /api/healthcheck/
http-check expect string passed successfully
server web1 10.0.0.11:443 check ssl verify none
server web2 10.0.0.12:443 check ssl verify none
Состояние служб¶
Команда status выводит статусы всех служб сервера в зависимости от режима установки (INSTALL_MODE):
rude status
Активные службы выводятся зелёным, неактивные — красным. Для интеграции со скриптом удобнее использовать systemctl:
systemctl is-active rudesktop-web rudesktop-relay rudesktop-executor
Подсказка
В режиме full контролируйте: rudesktop-web, rudesktop-relay, rudesktop-executor, rudesktop-redis, nginx и текущую службу PostgreSQL. В режимах relay и executor состав служб отличается — см. описание команды status
Нагрузка на базу данных¶
Команда prof показывает активные SQL-запросы пользователя rudesktop с PID и временем работы. Применяется для поиска долгих запросов и анализа нагрузки:
rude prof
rude prof --explain
Важно
Перед первым использованием выполните однократно rude prof init — команда увеличивает track_activity_query_size в PostgreSQL и перезапускает службу, иначе тексты длинных запросов будут обрезаны
Дополнительно используйте стандартные средства PostgreSQL:
Системное представление
pg_stat_activity— все активные сессии и их состояниеРасширение
pg_stat_statements— статистика по выполненным запросам (включается вpostgresql.conf)
Логи и диагностика¶
Для локального анализа используются логи в /var/log/rudesktop/ (см. Логи сервера). Для передачи в техническую поддержку используйте команду diag — она собирает логи, конфиги, версии и информацию об ОС в один архив:
rude diag
rude diag -P <пароль> # с шифрованием GPG
Подсказка
Команда diag автоматически вырезает пароли и секреты из конфигов перед упаковкой архива
Дублирование событий аудита во внешний Syslog-приёмник настраивается отдельно — см. Публикация событий в Syslog. Этот канал удобно использовать для интеграции с SIEM (например, RuSIEM) и для долговременного хранения событий безопасности
Интеграция с внешними системами¶
Поскольку встроенного экспортёра метрик нет, типичные сценарии интеграции выглядят так:
Система |
Способ интеграции |
|---|---|
Zabbix |
HTTP-агент на |
Prometheus |
|
Grafana |
Дашборды на основе данных Prometheus или прямого подключения к PostgreSQL |
SIEM (RuSIEM и др.) |
Публикация событий аудита через Syslog — см. Публикация событий в Syslog |
Важно
При размещении сервера за обратным прокси убедитесь, что эндпоинт /api/healthcheck/ не закрыт авторизацией на уровне прокси, иначе проверки балансировщика будут возвращать 401/403