Dasha 1.10: SD Patroni, waits events PostgreSQL и контроль слотов репликации

Раньше кластеры приходилось добавлять в конфигурацию вручную. Исключением был Yandex Managed PostgreSQL, для которого уже работал service discovery.
Добавили поддержку SD кластеров Patroni через etcd v3 и Consul.
Активность и ожидания сессий
В версии 1.10 появилась страница Activity & Waits. Она позволяет наблюдать за активностью сессий.
На графике видно, сколько сессий в каждый момент времени выполняют работу на CPU, ожидают определённый ресурс (IO, Lock, LWLock и другие события) или находятся в состоянии idle in transaction.
Для построения графика опрашивается pg_stat_activity с интервалом от 1 до 10 секунд. Дополнительные расширения, например pg_wait_sampling, устанавливать не требуется.
Слоты репликации и операции COPY
На странице прогресса операций появилась оценка времени до отстрела слота репликации.
Если задан max_slot_wal_keep_size, PostgreSQL может инвалидировать слот, когда объём удерживаемого им WAL превысит установленный лимит. Для отстающей реплики это означает риск потери возможности продолжить репликацию с текущей позиции.
Dasha оценивает этот риск по текущей скорости генерации WAL.
По каждому слоту отображаются:
объём WAL, который он удерживает;
оставшийся запас до установленного лимита;
расчётное время до потери слота при сохранении текущей нагрузки.
Сделали отображение прогресса операций COPY.
Health Score
В режиме Health Score по метрикам появилась поддержка стандартных экспортёров Prometheus: postgres_exporter, node_exporter и pgbouncer_exporter.
Изменили и оценку таблиц, которые давно не используются. Раньше холодные таблицы могли снижать Health Score из-за большого количества мёртвых строк или отсутствия недавнего VACUUM.
Теперь таблицы, в которые не было записей дольше заданного порога (по умолчанию 7 дней), не ухудшают оценку по этим показателям.
На странице обслуживания появился фильтр по состоянию таблиц: «Все», «Активные» и «Холодные».
Также ускорили загрузку Health Score в режиме метрик, в том числе на инстансах с большим количеством баз данных.
MCP-коннектор
В MCP-коннекторе теперь 35 инструментов.
Из новых возможностей стоит отметить sample_activity: он позволяет получить профиль нагрузки хоста.
Добавили и три инструмента для работы с планами выполнения из логов auto_explain:
анализ планов за заданный временной интервал;
получение планов конкретного запроса;
поиск запросов, у которых план выполнения ухудшился.
Ссылки
Исходный код, документация и полный список изменений доступны в репозитории проекта:
KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.