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

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

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

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

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

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

Расширенная панель инструментов доступна по навигации:

  • Левая боковая панель
    • MonitoringAdvanced dashboard
Расширенная панель инструментов

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

Нативная расширенная панель инструментов доступна по навигации:

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

Это откроет нативную расширенную панель инструментов в новой вкладке. Вам потребуется пройти аутентификацию для доступа к панели инструментов.

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

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

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

Визуализации "из коробки"

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

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

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

МетрикаОписание
Запросы в секундуОтслеживает скорость обработки запросов
Выбранные строки/секУказывает количество строк, читаемых запросами
Вставленные строки/секИзмеряет скорость поступления данных
Всего частей MergeTreeПоказывает количество активных частей в таблицах MergeTree, помогая выявить невпакованные вставки
Максимум частей для партицииПодсвечивает максимальное количество частей в любой партиции
Запросы в процессеОтображает количество запросов, которые в настоящее время выполняются
Выбранные байты в секундуУказывает объем данных, читаемых запросами

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

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

МетрикаОписание
Ожидание ввода-выводаОтслеживает время ожидания ввода-вывода
Ожидание CPUИзмеряет задержки, вызванные конкуренцией за ресурсы CPU
Чтение с дискаОтслеживает количество байтов, считанных с дисков или блочных устройств
Чтение из файловой системыОтслеживает количество байтов, считанных из файловой системы, включая кэш страницы
Использование памяти (байты)Показывает использование памяти для процессов, отслеживаемых ClickHouse
Средняя нагрузка (15 минут)Отчитывается о текущей средней нагрузке за 15 минут
Использование CPU в ОС (бесплатное пространство)Использование CPU при выполнении пользовательского кода
Использование CPU в ОС (ядро)Использование CPU при выполнении кода ядра

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

ClickHouse Cloud хранит данные с использованием объектного хранения (типа S3). Мониторинг этого интерфейса может помочь выявить проблемы.

МетрикаОписание
Ожидание чтения S3Измеряет задержку запросов на чтение к S3
Ошибки чтения S3 в секундуОтслеживает скорость ошибок чтения
Чтение из S3 (байт/сек)Отслеживает скорость чтения данных из хранилища S3
Запросы на запись в S3 (req/сек)Мониторит частоту операций записи в хранилище S3
Запросы на чтение из S3 (req/сек)Мониторит частоту операций чтения из хранилища S3
Коэффициент попадания кэша страницКоэффициент попадания кэша страниц
Коэффициент попадания файлового кэшаКоэффициент попадания файлового кэша
Размер файлового кэшаТекущий размер файлового кэша
Исходящий трафик сетью (байт/сек)Отслеживает текущую скорость входящего сетевого трафика
Входящий трафик сетью (байт/сек)Отслеживает текущую скорость исходящего сетевого трафика
Одновременные сетевые подключенияОтслеживает количество текущих одновременных сетевых подключений

Выявление проблем с использованием расширенной панели инструментов

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

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

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

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

Ключевыми метриками для выявления неоптимизированных вставок являются Вставленные строки/сек и Максимум частей для партиции.

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

Пример выше показывает два пика в Вставленных строках/сек и Максимуме частей для партиции между 13 и 14 часами. Это указывает на то, что мы ingест данные с разумной скоростью.

Затем мы видим еще один большой пик в Максимуме частей для партиции после 16 часов, но очень медленную скорость Вставленных строк/сек. Много частей создается с очень небольшим объемом данных, что указывает на то, что размер частей является неоптимальным.

Запрос с высоким потреблением ресурсов

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

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

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

Запрос с высоким потреблением ресурсов

Плохая проектировка первичного ключа

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

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

Запрос с высоким потреблением ресурсов

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

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

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
Row 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']

Row 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']

Row 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']

Row 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.