Неделю назад я делал анонс про pgSCV новом экспортере метрик для PostgreSQL. После анонса мне ожидаемо стали писать читатели с намеком что неплохо бы и дашборды сделать. Эта задача есть у меня в списке и этот запрос не оказался для меня сюрпризом. Оно и понятно, метрик ого-го сколько и даже продвинутому DBA понадобится довольно много времени чтобы разобраться в них и соорудить более-менее вменяемый дашборд.
Я занялся вопросом и сделал базовые дашборды которые покрывают некий (но не весь) объем метрик которые есть в pgSCV. А в этом посте я сделаю быстрый обзор и расскажу что там есть.
Хотел бы сделать акцент, что это именно начальные версии и 146% что они будут дополняться и изменяться. Дашбордов получилось несколько, т.к. pgSCV умеет отдавать метрики не только о Postgres'е, но и о Pgbouncer и даже системные метрики. При развитии pgSCV планируется добавлять поддержку других около-Postgres'овых инструментов поэтому и список дашбордов тоже будет пополняться.
Как следует из заголовка, дашборды сделаны для Grafana. Я довольно неплохо знаком с ней и на мой взгляд это довольно широко распространенный инструмент для визуализации метрик. Все дашборды используют Prometheus datasource. Если честно, дашборды делались поверх Victoriametrics хранилища, но я старался использовать везде PromQL в запросах, что сказалось на качестве некоторых графиков. Если вдруг звезды сойдутся и дашборды станут богатыми и знаменитыми сделаю аналогичные с MetricsQL.
Пока есть три дашборда:
PostgreSQL метрики
Pgbouncer метрики
Системные метрики
Что есть в PostgreSQL.
Overview - это обзорная панель с RED метриками - requests, errors, durations - относительно БД это количество обрабатываемых запросов, количество ошибок в журнале и средняя длительность успешно выполненных запросов. Посмотрев на сводную панель в целом можно оценить всё ли в порядке с БД.
Activity - графики с установленными соединениями и транзакционной активностью. Эти графики помогают увидеть вредных клиентов и продолжительную активность которую ой как не любит Postgres.
Logs - графики по ошибкам и размеры журналов Postgres. Графики помогают увидеть возникновение ошибок в журнале и отслеживать размер директории с журналами.
Statements - topN графики по выполняемым запросам на основе pg_stat_statements. Это на мой взгляд одни из самых востребованных графиков, они позволяют увидеть топовые по нагрузке запросы которые нуждаются во внимании DBA.
Locks and Wait Events - графики по блокировкам и тем wait events которые удалось поймать. Эти графики больше помогают в разборе инцидентов и будут полезны для поиска длительных блокировок которые могли вызвать просадку производительности.
Replication - графики лага репликации. Эти графики нужны для отслеживания что у нас все в порядке с доставкой WAL журналов на реплики.
WAL - графики генерации WAL журнала и размер директории WAL. Эти графики позволяют поверхностно оценить как много генерируется WAL журналов и насколько их много вообще.
Vacuum Maintenance - графики работы autovacuum. Эти графики помогают увидеть то насколько эффективно работает автовакуум и не нуждается ли он в настройке.
Background Writes - графики работы контрольных точек и фоновой записи (включая запись WAL и временных файлов). По большей части графики помогают понять насколько много записи делается базой.
Disk space usage - утилизация места на диске базой, табличными пространствами, таблицами, индексами, временными файлами. Графики помогают в поверхностном понимании того куда и как тратится место на диске.
Tables - рабочая нагрузка на таблицах - topN таблиц нагруженных INSERT/UPDATE/DELETE операциями. Это также очень востребованные графики, которые помогают понять как изменилась нагрузка, очень полезно изучать их после релизов приложений.
WAL Archiving - графики архивирования WAL (если таковой настроен). Графики помогают увидеть ошибки при архивировании и лаг.
System resources usage - здесь карткая сводка по утилизации CPU и дисковой подсистемы.
Что есть в Pgbouncer.
Utilization - утилизация пулов (чтоб понимать насколько хватает их вообще). По графику утилизации можно определить насколько эффктивно используются пулы и хватает ли их.
Connections - клиентские и серверные соединения. Сводные графики по соединениям, помогают более подробно увидеть как работает pgbouncer.
Processing - здесь графики по обработке транзакций, запросов, сетевому трафику и ожидающим клиентам. Здесь обычно хорошо видно всплески трафика и просадку производительности. Хотелось бы чтобы аналогичные метрики умел бы отдавать и Postgres.
Что есть в System.
Здесь искушенный пользователь не сделает для себя открытий - в этом дашборде я постарался собрать только минимально нужные графики которые помогают поверхностно оценить все ли в порядке с системой. Для более глубокого анализа можно сходить в графановский Explore и сделать ad-hoc графики.
Overview - общая сводка об утилизации ресурсов хостом - CPU, диски, сеть, память - ничего лишнего.
CPU, Storage utilization - утилизация процессора и дисковой подсистемы - обычно их производительность наиболее важна в работе БД.
Storage - графики отзывчивости, пропускной способности в IOPS и байтах (включая discards и flushes если таковые поддерживаются ядром).
Network - графики сетевых интерфейсов, пропускная способности в пакетах и байтах, ошибки при обработке пакетов.
Memory, swap - графики использования памяти и подкачки.
Disk space - графики утилизации места на файловых системах.
Вот собственно и всё. Как я уже отметил выше, это первые наброски, дашборды будут редактироваться и дополняться.
Спасибо за внимание.