Статья

Рекомендации по мониторингу в StarRocks

2025-10-31 10:39 Новые
Продолжаем серию статей с подробным рассмотрением каждого из аспектов работы администратора.

В предыдущей статье мы поделились советами о запросах в Селене. В этой статье мы рассмотрим мониторинг.

Что нужно знать о мониторинге

Начнем с обязательных и крайне рекомендуемых действий.
  • Обязательно: используйте плагины аудита для импорта данных из fe.audit.log в таблицу для анализа медленных запросов через Audit Loader.
  • Обязательно: используйте связку Prometheus + Grafana.
  • Рекомендуется: настройте изоляцию ресурсов для автоматического прерывания крупных запросов и задайте лимит для мелких.
# shortquery_group Для ограничения ресурсов для мелких запросов:
CREATE RESOURCE GROUP shortquery_group
TO 
(user='rg1_user1', role='rg1_role1', db='db1', query_type in ('select'), source_ip='192.168.x.x/24'),
WITH ( 'type' = 'short_query', 'cpu_core_limit' = '10', 'mem_limit' = '20%');
# bigquery_group Для прерывания крупных запросов, чтобы они не занимали все ресурсы кластера:
CREATE RESOURCE GROUP bigquery_group
TO (user='rg1_user2', role='rg1_role1', query_type in ('select')),
WITH ( 
"type" = 'normal', 
'cpu_core_limit' = '10', 
'mem_limit' = '20%', 
'big_query_cpu_second_limit' = '100', 
'big_query_scan_rows_limit' = '100000', 
'big_query_mem_limit' = '1073741824'
);
Поиск больших запросов в Селене

Инструкции по поиску больших запросов:

Просмотрите текущие SQL-запросы на фронтенде:
SHOW PROC '/current_queries'
В результатах будет несколько столбцов:

  • QueryId: идентификатор запроса.
  • ConnectionId: идентификатор соединения.
  • Database: база данных, к которой обращается запрос.
  • User: пользователь.
  • ScanBytes: сколько байт уже просканировано
  • ProcessRow: сколько строк с данными уже просканировано.
  • CPUCostSeconds: сколько времени ЦП использовано текущим запросом, в секундах. Подсчитывается время всех потоков. Например, если один поток потратил 1 секунду, а второй — 2, общее время составит 3 секунды.
  • MemoryUsageBytes — объем занятой памяти в байтах. Если запрос выполняется несколькими бэкенд-узлами, это значение будет суммой.
  • ExecTime — продолжительность запроса от начала до текущего момента в мс.
mysql> show proc '/current_queries';
+--------------------------------------+--------------+------------+------+-----------+----------------+----------------+------------------+----------+
| QueryId | ConnectionId | Database | User | ScanBytes | ProcessRows | CPUCostSeconds | MemoryUsageBytes | ExecTime |
+--------------------------------------+--------------+------------+------+-----------+----------------+----------------+------------------+----------+
| 7c56495f-ae8b-11ed-8ebf-00163e00accc | 4 | tpcds_100g | root | 37.88 MB | 1075769 Rows | 11.13 Seconds | 146.70 MB | 3804 |
| 7d543160-ae8b-11ed-8ebf-00163e00accc | 6 | tpcds_100g | root | 13.02 GB | 487873176 Rows | 81.23 Seconds | 6.37 GB | 2090 |
+--------------------------------------+--------------+------------+------+-----------+----------------+----------------+------------------+----------+
2 rows in set (0.01 sec)
SQL-команда для просмотра потребления ресурсов конкретным запросом для каждого бэкенд-узла:
SHOW PROC '/current_queries/${query_id}/hosts'
Запрос вернет несколько строк, содержащих информации о выполнении запроса на соответствующем бэкенд-узле. Можно просмотреть следующие данные:
  • Host: информация о бэкенд-узле.
  • ScanBytes: сколько байт просканировано.
  • ScanRows: сколько строк просканировано.
  • CPUCostSeconds: время ЦП в секундах.
  • MemUsageBytes: объем памяти в байтах.
mysql> show proc '/current_queries/7c56495f-ae8b-11ed-8ebf-00163e00accc/hosts';
+--------------------+-----------+-------------+----------------+---------------+
| Host | ScanBytes | ScanRows | CpuCostSeconds | MemUsageBytes |
+--------------------+-----------+-------------+----------------+---------------+
| 172.26.34.185:8060 | 11.61 MB | 356252 Rows | 52.93 Seconds | 51.14 MB |
| 172.26.34.186:8060 | 14.66 MB | 362646 Rows | 52.89 Seconds | 50.44 MB |
| 172.26.34.187:8060 | 11.60 MB | 356871 Rows | 52.91 Seconds | 48.95 MB |
+--------------------+-----------+-------------+----------------+---------------+
3 rows in set (0.00 sec)
Селена предоставляет несколько команд для мониторинга. Теперь, вы знаете, на что обращать внимание, и тогда работать с мониторингом в Селене будет значительно проще.

Этой статьей мы завершаем серию из пяти руководств.