Перейти к основному содержанию
Перейти к основному содержанию

Расширенная панель мониторинга в ClickHouse Cloud

Мониторинг вашей системы баз данных в рабочей (продакшен) среде имеет ключевое значение для понимания состояния развертывания, чтобы вы могли предотвращать или оперативно устранять простои.

Расширенная панель мониторинга — это легковесный инструмент, предназначенный для того, чтобы обеспечить вам детальное представление о системе ClickHouse и её окружении, помогая заблаговременно выявлять узкие места производительности, сбои системы и неэффективное использование ресурсов.

Расширенная панель мониторинга доступна как в ClickHouse OSS (Open Source Software), так и в ClickHouse Cloud. В этой статье мы покажем, как использовать расширенную панель мониторинга в ClickHouse Cloud.

Доступ к расширенной панели мониторинга

Перейдите к расширенной панели мониторинга:

  • Левая боковая панель
    • MonitoringAdvanced dashboard
Advanced dashboard

Доступ к встроенной расширенной панели мониторинга

К встроенной расширенной панели мониторинга можно получить доступ, перейдя в:

  • Левая боковая панель
    • MonitoringAdvanced dashboard
    • Нажав You can still access the native advanced dashboard.

Откроется встроенная расширенная панель мониторинга в новой вкладке. Для доступа к панели мониторинга потребуется аутентификация.

Расширенная панель мониторинга

Каждая визуализация имеет связанный с ней SQL-запрос, который формирует её содержимое. Вы можете отредактировать этот запрос, нажав на значок карандаша.

Расширенная панель мониторинга

Готовые визуализации

Базовые графики в Advanced Dashboard предназначены для обеспечения наблюдаемости вашей системы ClickHouse в режиме реального времени. Ниже приведён список этих графиков с описанием каждого. Они сгруппированы в три категории, чтобы упростить навигацию.

Специфичные для ClickHouse

Эти метрики предназначены для мониторинга состояния и производительности экземпляра ClickHouse.

MetricDescription
Queries Per SecondОтслеживает скорость обработки запросов
Selected Rows/SecПоказывает количество строк, считываемых запросами
Inserted Rows/SecИзмеряет скорость ингестии данных
Total MergeTree PartsПоказывает количество активных частей в таблицах MergeTree, помогая выявлять непакетные вставки
Max Parts for PartitionПоказывает максимальное количество частей в любом разделе
Queries RunningОтображает количество запросов, которые выполняются в данный момент
Selected Bytes Per SecondПоказывает объём данных, считываемых запросами

Специфичные для состояния системы

Мониторинг базовой системы столь же важен, как и наблюдение за самим ClickHouse.

MetricDescription
IO WaitОтслеживает время ожидания операций ввода-вывода
CPU WaitИзмеряет задержки, вызванные конкуренцией за ресурсы CPU
Read From DiskОтслеживает количество байт, прочитанных с дисков или блочных устройств
Read From FilesystemОтслеживает количество байт, прочитанных из файловой системы, включая страничный кэш (page cache)
Memory (tracked, bytes)Показывает использование памяти процессами, отслеживаемыми ClickHouse
Load Average (15 minutes)Сообщает текущее среднее значение нагрузки за последние 15 минут
OS CPU Usage (Userspace)Использование CPU для выполнения кода в пространстве пользователя
OS CPU Usage (Kernel)Использование CPU для выполнения кода ядра

Особенности ClickHouse Cloud

ClickHouse Cloud хранит данные в объектном хранилище типа S3. Мониторинг этого уровня может помочь вовремя обнаруживать проблемы.

MetricDescription
S3 Read waitИзмеряет задержку запросов чтения к S3
S3 read errors per secondОтслеживает частоту ошибок чтения из S3
Read From S3 (bytes/sec)Отслеживает скорость чтения данных из хранилища S3
Disk S3 write req/secКонтролирует частоту операций записи в хранилище S3
Disk S3 read req/secКонтролирует частоту операций чтения из хранилища S3
Page cache hit rateДоля попаданий в кэш страниц
Filesystem cache hit rateДоля попаданий в кэш файловой системы
Filesystem cache sizeТекущий размер кэша файловой системы
Network send bytes/secОтслеживает текущую скорость исходящего сетевого трафика
Network receive bytes/secОтслеживает текущую скорость входящего сетевого трафика
Concurrent network connectionsОтслеживает количество текущих одновременных сетевых соединений

Определение проблем с помощью расширенной панели мониторинга

Наличие такого представления в реальном времени о состоянии вашего сервиса ClickHouse значительно помогает снизить вероятность возникновения проблем до того, как они повлияют на бизнес, а также упростить их решение. Ниже приведены несколько типов проблем, которые можно обнаружить с помощью расширенной панели мониторинга.

Непакетные вставки

Как описано в документации по лучшим практикам, рекомендуется всегда выполнять пакетные вставки данных в ClickHouse, если есть возможность делать это синхронно.

Пакетная вставка с разумным размером батча уменьшает количество частей, создаваемых во время ингестии, что приводит к более эффективной записи на диск и меньшему числу операций слияния.

Ключевые метрики для выявления неоптимальных вставок — Inserted Rows/sec и Max Parts for Partition.

Непакетные вставки

В приведённом выше примере видно два пика в Inserted Rows/sec и Max Parts for Partition между 13:00 и 14:00. Это указывает на то, что мы выполняем приём данных с разумной скоростью.

Затем мы видим ещё один большой пик Max Parts for Partition после 16:00, но при этом очень низкое значение Inserted Rows/sec. Создаётся много частей при очень небольшом объёме данных, что указывает на неоптимальный размер частей.

Ресурсоёмкий запрос

Нередко выполняются SQL-запросы, потребляющие большое количество ресурсов, таких как CPU или память. Однако важно отслеживать эти запросы и понимать их влияние на общую производительность вашего развертывания.

Внезапное изменение потребления ресурсов без изменения пропускной способности запросов может указывать на выполнение более «дорогих» запросов. В зависимости от типа запросов, которые вы запускаете, это может быть ожидаемо, но иметь возможность обнаруживать их по данным расширенной панели мониторинга полезно.

Ниже приведён пример, когда использование CPU достигает пика, при этом количество выполняемых запросов в секунду существенно не меняется.

Ресурсоёмкий запрос

Некорректный дизайн первичного ключа

Ещё одну проблему, которую можно обнаружить с помощью расширенной панели мониторинга, — некорректный дизайн первичного ключа. Как описано в статье "Практическое введение в первичные индексы в ClickHouse", выбор первичного ключа, наилучшим образом соответствующего вашему сценарию использования, значительно улучшит производительность за счёт сокращения числа строк, которые ClickHouse должен прочитать для выполнения запроса.

Одна из метрик, с помощью которых можно выявить потенциальные улучшения в первичных ключах, — Selected Rows per second. Внезапный пик в количестве выбираемых строк может указывать как на общее увеличение пропускной способности запросов, так и на запросы, которые для своего выполнения выбирают слишком большое количество строк.

Ресурсоёмкий запрос

Используя метку времени в качестве фильтра, вы можете найти запросы, выполненные в момент пика, в таблице system.query_log.

Например, можно выполнить запрос, который покажет все запросы, выполненные между 11:00 и 11:10 в определённый день, чтобы понять, какие запросы читают слишком много строк:

SELECT
    type,
    event_time,
    query_duration_ms,
    query,
    read_rows,
    tables
FROM system.query_log
WHERE has(databases, 'default') AND (event_time >= '2024-12-23 11:20:00') AND (event_time <= '2024-12-23 11:30:00') AND (type = 'QueryFinish')
ORDER BY query_duration_ms DESC
LIMIT 5
FORMAT VERTICAL
Строка 1:
──────
type:              QueryFinish
event_time:        2024-12-23 11:22:55
query_duration_ms: 37407
query:             SELECT
    toStartOfMonth(review_date) AS month,
    any(product_title),
    avg(star_rating) AS avg_stars
FROM amazon_reviews_no_pk
WHERE
    product_category = 'Home'
GROUP BY
    month,
    product_id
ORDER BY
    month DESC,
    product_id ASC
LIMIT 20
read_rows:         150957260
tables:            ['default.amazon_reviews_no_pk']

Строка 2: ────── type: QueryFinish event_time: 2024-12-23 11:26:50 query_duration_ms: 7325 query: SELECT toStartOfMonth(review_date) AS month, any(product_title), avg(star_rating) AS avg_stars FROM amazon_reviews_no_pk WHERE product_category = 'Home' GROUP BY month, product_id ORDER BY month DESC, product_id ASC LIMIT 20 read_rows: 150957260 tables: ['default.amazon_reviews_no_pk']

Строка 3: ────── type: QueryFinish event_time: 2024-12-23 11:24:10 query_duration_ms: 3270 query: SELECT toStartOfMonth(review_date) AS month, any(product_title), avg(star_rating) AS avg_stars FROM amazon_reviews_pk WHERE product_category = 'Home' GROUP BY month, product_id ORDER BY month DESC, product_id ASC LIMIT 20 read_rows: 6242304 tables: ['default.amazon_reviews_pk']

Строка 4: ────── type: QueryFinish event_time: 2024-12-23 11:28:10 query_duration_ms: 2786 query: SELECT toStartOfMonth(review_date) AS month, any(product_title), avg(star_rating) AS avg_stars FROM amazon_reviews_pk WHERE product_category = 'Home' GROUP BY month, product_id ORDER BY month DESC, product_id ASC LIMIT 20 read_rows: 6242304 tables: ['default.amazon_reviews_pk']


В данном примере видно, что один и тот же запрос выполняется для двух 
таблиц `amazon_reviews_no_pk` и `amazon_reviews_pk`. Можно сделать вывод, что 
выполнялось тестирование варианта первичного ключа для таблицы `amazon_reviews`.