Продолжаем серию статей с подробным рассмотрением каждого из аспектов работы администратора.
В предыдущей статье мы поделились советами о запросах в Селене. В этой статье мы рассмотрим мониторинг.
Что нужно знать о мониторинге
Начнем с обязательных и крайне рекомендуемых действий.
В предыдущей статье мы поделились советами о запросах в Селене. В этой статье мы рассмотрим мониторинг.
Что нужно знать о мониторинге
Начнем с обязательных и крайне рекомендуемых действий.
- Обязательно: используйте плагины аудита для импорта данных из 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-запросы на фронтенде:
Инструкции по поиску больших запросов:
Просмотрите текущие 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)Селена предоставляет несколько команд для мониторинга. Теперь, вы знаете, на что обращать внимание, и тогда работать с мониторингом в Селене будет значительно проще.
Этой статьей мы завершаем серию из пяти руководств.
Этой статьей мы завершаем серию из пяти руководств.