pg_stat_ch,
расширения Postgres с открытым исходным кодом, которое передает счетчики по каждому оператору в
ClickHouse Cloud. Телеметрия нормализуется внутри Postgres до того, как покинет
базу данных: литералы удаляются и заменяются плейсхолдерами, поэтому
конкретные значения из ваших запросов никогда не попадают в поток телеметрии.
Откройте Query insights
- обзор — сводка, в которой проверка состояния базы данных помещается на одном экране.
- Таблица медленные шаблоны, где ранжируются все шаблоны запросов, которые выполнялись в вашей базе данных, с сортировкой по любому интересующему вас признаку.
- Панель последние запросы, в которой отдельные выполнения перечислены в обратном хронологическом порядке.
- Выдвижная панель сведений, в которой собраны все счётчики для одного шаблона.
Обзор
| Панель | Что она показывает |
|---|---|
| Queries / sec | Объём запросов, приведённый к частоте за выбранный интервал. |
| Query latency | Среднее, p50, p95 и p99 на одном графике, чтобы было видно, когда хвост распределения начинает расходиться с медианой. |
| Operations breakdown | Кольцевая диаграмма, показывающая соотношение SELECT, INSERT, UPDATE и других операций, из которых фактически состоит ваша рабочая нагрузка. |
| Rows returned / affected | Общее количество строк, обработанных рабочей нагрузкой за выбранный интервал. |
| Buffer hit ratio | Кольцевая диаграмма соотношения попаданий в разделяемые блоки и чтений из них, а в легенде показано суммарное время CPU. |
| Errors | Общее количество ошибок с разбивкой по времени. |
Медленные шаблоны
Сортируйте по тому, что кажется подозрительным
- Общее время выполнения — где база данных потратила больше всего фактического времени.
- Время CPU — шаблоны с высокой вычислительной нагрузкой.
- Вызовы — часто выполняющиеся шаблоны.
- Ошибки — повторяющиеся сбои.
- Средняя / P50 / P95 / P99 / Максимальная задержка — выбросы по процентилям.
- Возвращено строк, Прочитано блоков, Попаданий блоков, Байты WAL — шаблоны, через которые прошло больше всего данных через движок, кэш или журнал предзаписи.
Сузьте таблицу
- База данных
- Пользователь
- Операция (
SELECT,INSERT,UPDATE,DELETE, …) - Приложение —
application_nameиз строки подключения
sales»
превращается в два выпадающих списка. Значения фильтров автоматически
заполняются на основе того, что фактически выполнялось в вашем
экземпляре.
Последние запросы
Выдвижная панель сведений
- Шаблон запроса — нормализованный SQL, в котором литералы заменены на
$1,$2, …, и кнопка копирования в буфер обмена. - Агрегированное использование ресурсов — сетка из 13 карточек статистики, включающая общее число вызовов, среднюю/P95/P99/максимальную задержку, общее время выполнения, число возвращённых строк, долю попаданий в кэш, число прочитанных блоков, число блоков с попаданием в кэш, время CPU, байты WAL и ошибки.
- Контекст запроса — база данных, пользователь, операция и приложение, из которых пришёл этот шаблон.
- Примечательные выполнения — ошибки, необычно медленные запуски и выполнения с большим объёмом результатов, показанные перед полным списком недавних.
- Недавние выполнения — отдельные запуски одного и того же шаблона со счётчиками для каждого выполнения.
Счетчики по каждому выполнению
- Общие блоки — прочитанные и найденные в кэше показываются всегда; записанные и измененные показываются, только если их значение не равно нулю.
- Операции с локальными и временными блоками — ненулевые операции с временными блоками означают, что sort или hash были выгружены на диск.
- Время чтения / записи — время ввода-вывода, отдельно от времени CPU.
- Время CPU — пользовательское и системное, по отдельности.
- Параллельные воркеры — запланированные и фактически запущенные.
- JIT — общее время JIT-компиляции и количество функций.
- WAL — количество байтов и записей.
API Query Insights
Как это работает
Нормализация в Postgres до передачи по сети
pg_stat_ch перехватывает фазу parse-analyze, заменяет каждый литерал на
плейсхолдер ($1, $2, …) и кэширует получившийся шаблон в
отдельном LRU-кэше для каждого backend-соединения с ключом по queryid. Когда выполнение
оператора завершается, именно этот кэшированный шаблон прикрепляется к событию. Точный
оператор со значениями никогда не покидает базу данных.
Не мешает работе базы данных
Сырые события, а не агрегаты
pg_stat_ch генерирует по одному сырому событию для каждого выполненного оператора (как верхнего уровня, так и
вложенного) с учетом сэмплирования. Все перцентили, ранжирование и разбивки
в интерфейсе — это запросы к ClickHouse по тому же потоку событий.
Тот же движок, которым пользуются наши клиенты
С открытым исходным кодом
pg_stat_ch распространяется по лицензии Apache 2.0. Запускайте его с любым Postgres и отправляйте данные в любой
ClickHouse. Исходный код и баг-репорты — на
github.com/clickhouse/pg_stat_ch.
- Панель мониторинга — встроенные диаграммы ресурсов и активности
- Конечная точка Prometheus — собирайте метрики уровня хоста в собственный стек обсервабилити
- Managed Postgres OpenAPI — программно запрашивайте медленные шаблоны и недавние выполнения
- Расширения — расширения, доступные в экземплярах Managed Postgres
pg_stat_chon GitHub — расширение с открытым исходным кодом, лежащее в основе Query Insights