Рекомендации по работе с дашбордами
В данном разделе приведены рекомендации по работе с дашбордами и виджетами в целях оптимизации и повышения работоспособности системы.
Обновление данных
-
Используйте автообновление только для тех виджетов, где это требуется. Это позволит снизить нагрузку на систему, особенно при наличии большого числа пользователей и открытых дашбордов.
Для виджетов без автообновления нужно выполнять обновление данных вручную при просмотре виджета. -
Старайтесь указывать разумный интервал для автоматического обновления данных виджета, например, от 5 минут.
Оптимизация дашбордов и виджетов
-
Если виджеты используют сложные RQL-запросы или агрегируют большие объемы данных, старайтесь располагать их на разных дашбордах.
-
Не перегружайте дашборд большим количеством одновременно визуализируемых метрик — это может замедлить отображение данных.
Лучше использовать несколько специализированных дашбордов, чем один универсальный.
Запросы к данным
-
Составляйте избирательные запросы:
-
Фильтруйте данные по ключевым полям, чтобы выводить только релевантные данные.
-
Задавайте лимит на количество выводимых результатов, чтобы уменьшить нагрузку на систему.
Также ограничение на количество выводимых результатов можно задать в поле Лимит окна редактирования виджета. Если ограничение задано в RQL-запросе и в поле Лимит, то применяется наименьшее из двух значений. -
Не применяйте сортировку, если запрос возвращает большое количество данных.
-
Избегайте запросов полного сканирования, которые требуют чтения и обработки всех данных таблицы.
Задавайте ограничение диапазона дат в секции Период времени, чтобы отслеживать только необходимые данные. Пример оптимизации запроса
Необходимо отобразить десять IP-адресов с самым большим количеством ошибочных авторизаций.
Неоптимизированный запрос может выглядеть следующим образом:
SELECT source_ip, user_name, event_name, timestamp WHERE event_name = 'user_login_failed' ORDER BY timestamp DESCВ этом запросе нет ограничения по количеству записей. Система находит все события с ошибочной авторизацией, загружает их в оперативную память и сортирует по времени. Такие операции могут излишнее нагружать систему.
Оптимизированный запрос может выглядеть следующим образом:
SELECT source_ip, count(*) AS failed_attempts, count(DISTINCT user_names) AS unique_users WHERE event_name = `user_login_failed` GROUP BY source_ip ORDER BY failed_attempts DESC LIMIT 10Здесь:
-
С помощью оператора
WHEREвыбираются только те записи, IP-адреса которых не прошли авторизацию. -
С помощью оператора
LIMITзадается ограничение выводимых результатов в десять строк. Также ограничение можно задать с помощью поля Лимит в окне редактирования виджета. -
Сортировка с помощью оператора
ORDER BYпроисходит только по ограниченному числу записей, так как был задан лимит. -
С помощью оператора
GROUP BYпроизводится группировка всех записей, не прошедших авторизацию, по IP-адресам.
Дополнительно можно добавить фильтр по времени в блоке Период времени в окне редактирования виджета. Это сузит круг данных и снизит нагрузку на систему.
-
-
Используйте переменные, чтобы менять контекст для всех виджетов сразу, не редактируя каждый запрос по отдельности.
-
Сохраняйте оптимизированные запросы в шаблоны поиска, чтобы в будущем переиспользовать их.
Вы можете протестировать RQL-запрос в разделе Поиск перед добавлением его в виджет.
Работа с инфраструктурой и ролями
-
При возможности увеличьте выделенные ресурсы для подов с базами данных, к которым часто поступают RQL-запросы от виджетов дашбордов.
-
Установите лимиты на потребление оперативной памяти для ролей, чтобы сложные запросы из виджетов персонального дашборда пользователя не повлияли на работу всей системы.
Мониторинг устойчивости
-
Анализируйте загруженность подов и обращайте внимание на нагрузку Clickhouse. Для мониторинга состояния кластера можно создать пользовательские дашборды в Grafana. Подробности о мониторинге за кластером приведены в разделе Мониторинг кластера.
-
Анализируйте виджеты, если они регулярно загружаются дольше остальных при открытии раздела Дашборды.
Была ли полезна эта страница?