Grafana дашборды для pgSCV

от автора

Неделю назад я делал анонс про pgSCV новом экспортере метрик для PostgreSQL. После анонса мне ожидаемо стали писать читатели с намеком что неплохо бы и дашборды сделать. Эта задача есть у меня в списке и этот запрос не оказался для меня сюрпризом. Оно и понятно, метрик ого-го сколько и даже продвинутому DBA понадобится довольно много времени чтобы разобраться в них и соорудить более-менее вменяемый дашборд.

Я занялся вопросом и сделал базовые дашборды которые покрывают некий (но не весь) объем метрик которые есть в pgSCV. А в этом посте я сделаю быстрый обзор и расскажу что там есть.

Хотел бы сделать акцент, что это именно начальные версии и 146% что они будут дополняться и изменяться. Дашбордов получилось несколько, т.к. pgSCV умеет отдавать метрики не только о Postgres’е, но и о Pgbouncer и даже системные метрики. При развитии pgSCV планируется добавлять поддержку других около-Postgres’овых инструментов поэтому и список дашбордов тоже будет пополняться.

Как следует из заголовка, дашборды сделаны для Grafana. Я довольно неплохо знаком с ней и на мой взгляд это довольно широко распространенный инструмент для визуализации метрик. Все дашборды используют Prometheus datasource. Если честно, дашборды делались поверх Victoriametrics хранилища, но я старался использовать везде PromQL в запросах, что сказалось на качестве некоторых графиков. Если вдруг звезды сойдутся и дашборды станут богатыми и знаменитыми сделаю аналогичные с MetricsQL.

Пока есть три дашборда:

Что есть в 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 и дисковой подсистемы.

В сумме получилось 37 спрятанных графиков.
В сумме получилось 37 спрятанных графиков.

Что есть в Pgbouncer.

Utilization — утилизация пулов (чтоб понимать насколько хватает их вообще). По графику утилизации можно определить насколько эффктивно используются пулы и хватает ли их.

Connections — клиентские и серверные соединения. Сводные графики по соединениям, помогают более подробно увидеть как работает pgbouncer.

Processing — здесь графики по обработке транзакций, запросов, сетевому трафику и ожидающим клиентам. Здесь обычно хорошо видно всплески трафика и просадку производительности. Хотелось бы чтобы аналогичные метрики умел бы отдавать и Postgres.

Что есть в System.

Здесь искушенный пользователь не сделает для себя открытий — в этом дашборде я постарался собрать только минимально нужные графики которые помогают поверхностно оценить все ли в порядке с системой. Для более глубокого анализа можно сходить в графановский Explore и сделать ad-hoc графики.

Overview — общая сводка об утилизации ресурсов хостом — CPU, диски, сеть, память — ничего лишнего.

CPU, Storage utilization — утилизация процессора и дисковой подсистемы — обычно их производительность наиболее важна в работе БД.

Storage — графики отзывчивости, пропускной способности в IOPS и байтах (включая discards и flushes если таковые поддерживаются ядром).

Network — графики сетевых интерфейсов, пропускная способности в пакетах и байтах, ошибки при обработке пакетов.

Memory, swap — графики использования памяти и подкачки.

Disk space — графики утилизации места на файловых системах.

всё ок, но проц довольно хорошо нагружен
всё ок, но проц довольно хорошо нагружен

Вот собственно и всё. Как я уже отметил выше, это первые наброски, дашборды будут редактироваться и дополняться.

Спасибо за внимание.

ссылка на оригинал статьи https://habr.com/ru/post/560952/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *