PostgreSQL
Мониторинг PostgreSQL должен охватывать ключевые компоненты СУБД, чтобы обеспечивать стабильность, производительность и отказоустойчивость. Важно собирать информацию о структуре и состоянии компонентов PostgreSQL.
Памир понимает структуру PostgreSQL и строит его сервисно-ресурсную модель (СРМ). СРМ PostgreSQL - это иерархическая структура, которая описывает компоненты СУБД и их взаимосвязи. Она помогает систематизировать мониторинг, управление и планирование ресурсов.
Уровни модели СРМ
СРМ PostgreSQL можно представить в виде иерархии:
Тип сервера (кластер)
│
├── ✅Сервер (экземпляр PostgreSQL)
│ │
│ ├── ✅База данных (Database)
│ │ │
│ │ ├── ✅Схема (Schema)
│ │ │ │
│ │ │ ├── ✅Таблица (Table)
│ │ │ │ ├── Индексы
│ │ │ │ ├── Триггеры
│ │ │ │ └── Ограничения (Constraints)
│ │ │ │
│ │ │ └── Представления (Views)
│ │ │
│ │ └── Роли (Roles)
│ │
│ ├── Пользователи (Users)
│ ├── Репликация (Replication)
│ └── Настройки (postgresql.conf)
│
└── Физические ресурсы (CPU, RAM, Disk, Network)
✅ - отмечены уровни, включены в шаблон мониторинга PostgreSQL. Ниже приведены описания уровней модели.
PostgreSQL
Атрибуты:
- Название: Имя сервера СУБД.
- Наименование КЕ: Отображаемое имя СУБД на дашбордах и графе.
- IP адрес: IP-адрес сервера PostgreSQL.
- Версия: версия установленной СУБД PostgreSQL.
- База Данных: Имя базы данных.
База данных
Атрибуты:
- Название: Имя базы данных.
- Наименование КЕ: Отображаемое имя базы данных на дашбордах и графе.
Схема
Атрибуты:
- Название: Имя схемы.
- Наименование КЕ: Отображаемое имя схемы на дашбордах и графе.
Таблица
Атрибуты:
- Название: Имя таблицы.
- Наименование КЕ: Отображаемое имя таблицы на дашбордах и графе.
Пример СРМ, на котором видны взаимосвязи между сервером PostgreSQL, базой данных, схемой и таблицами.
СРМ как основа для мониторинга
СРМ PostgreSQL задает иерархию объектов (сервер → БД → схема → таблица), для каждого из которых собираются метрики.
Механизм сбора метрик
Сбор метрик осуществляется двумя экспортерами:
- PostgreSQL: собирает системные метрики СУБД PostgreSQL.
- SQL: выполняет пользовательские SQL-запросы для получения специализированных метрик.
Метрики по уровню CRM
Подключения
Метрики подключения отображают текущее число активных подключений к СУБД и максимальное допустимое число подключений.
Уровень СРМ: Сервер PostgreSQL
Примеры метрик:
pg_settings_max_connections
– максимальное число подключений, установленное в конфигурации.pg_stat_database_numbackends
– текущее число активных подключений к базе данных.
Количество активных подключений отображается на виджете прогресс-бар.
Транзакции
Метрики транзакций отражают общее число завершённых транзакций (commit/rollback) за заданный период.
Уровень СРМ: База данных
Примеры метрик:
pg_stat_database_xact_commit
– число выполненных транзакций commit.pg_stat_database_xact_rollback
– число выполненных транзакций rollback.
Динамика транзацкций отображается на виджете линейный график.
Блокировки
Метрики блокировок показывают общее число активных блокировок, что помогает выявить конфликты между транзакциями.
Уровень СРМ: База данных
Пример метрики:
pg_locks_count
– суммарное число блокировок на сервере.
Динамика по блокировкам отображается на виджете линейный график.
Операции INSERT/RETURN/UPDATE/DELETE
Метрики операций фиксируют изменения в таблицах — вставку, выборку, обновление и удаление строк.
Уровень СРМ: База данных
Пример метрики:
pg_stat_database_tup_inserted
– количество вставленных кортежей.pg_stat_database_tup_returned
– количество возвращённых строк.pg_stat_database_tup_updated
– количество обновлённых кортежей.pg_stat_database_tup_deleted
– количество удалённых кортежей.sql_state_transactioncs
– метрика для контроля специфичных транзакционных операций.
Динамика операций отображается на виджете линейный график.
Autovacuum
Метрики автовакуума фиксируют активность процессов очистки, включая число «мертвых» кортежей и состояние заморозки транзакций.
Уровень СРМ: База данных, Схема, Таблица
Примеры метрик:
sql_dead_tuples
– количество «мертвых» кортежей.sql_frozen_transaction
– число замороженных транзакций.
Активность процессов автовакуумирования отображается в сводной таблице
Размер базы данных
Метрики размера базы данных показывают общий объём данных и индексов.
Уровень СРМ: База данных, Схема, Таблица
Примеры метрик:
pg_database_size_bytes
– общий размер базы данных в байтах.sql_pg_relation_size
– размер конкретной таблицы вместе с индексами.
Размер базы данных, а также объёмы по каждой схеме и таблице отображется в сводной таблице
Дополнительные метрики, статус сервера и настройки
Эти метрики позволяют отслеживать конфигурационные параметры, версию СУБД и общее состояние сервера.
Уровень СРМ: Сервер PostgreSQL
Примеры метрик:
- Метрики из
pg_settings_*
– настройки памяти, таймауты и другие параметры. version()
– информация о версии PostgreSQL.pg_up
– индикатор доступности сервера.pg_settings_shared_buffers_bytes
– размер разделяемых буферов.pg_settings_effective_cache_size_bytes
– оценка объёма доступной памяти для кеширования.
Состояние сервера и настройки отображаются на виджете SingleValue.
Как СРМ помогает в мониторинге?
Определение ключевых метрик
Для каждого уровня СРМ выделяются критические метрики:
- Сервер:
- Загрузка CPU > 90% → алерт.
max_connections
близко к лимиту → риск отказа.
- Таблица:
n_dead_tup
> 20% отn_live_tup
→ требуетсяVACUUM
.seq_scan
>>idx_scan
→ нехватка индексов.
Приоритизация проблем
СРМ позволяет выявлять проблемные уровни:
- Если нагрузка на сервер высокая → смотрим БД с максимальными транзакциями.
- Если проблема в БД → анализируем таблицы с высокой активностью.
- Если тормозит таблица → проверяем индексы и запросы.
Индикаторы здоровья
Активные подключения
Указывают на ситуацию, когда число активных подключений приближается к лимиту, что может привести к отказу новых соединений.
Уровень СРМ: сервер PostgreSQL
Метрика: pg_stat_database_numbackends
/ pg_settings_max_connections_ratio
Порог: > 0.8 (80% от max_connections
)
Причины:
- Утечки подключений в приложении.
- Недостаточное число max_connections для текущей нагрузки.
Эффективность кеширования
Демонстрируют снижение эффективности кеширования, сигнализируя о необходимости перераспределения памяти или оптимизации запросов.
Уровень СРМ: сервер PostgreSQL
Метрика: Соотношение блоков хита к сумме блоков хита и чтения (на основе pg_stat_database_blks_hit
и pg_stat_database_blks_read
)
Порог: < 0.70 (70%)
Причины:
- Недостаточно выделенной памяти для кеша (например, низкий
shared_buffers
). - Частые полные сканирования таблиц, свидетельствующие о неэффективном использовании индексов.
Длительные запросы
Позволяют выявить запросы, выполнение которых превышает установленное время, чтобы оптимизировать их и избежать зависаний.
Уровень СРМ: сервер PostgreSQL
Метрика: pg_stat_activity_max_tx_duration
Порог: > 300 секунд (5 минут)
Причины:
- Медленные или зависшие запросы из-за неоптимальных планов.
- Проблемы с производительностью отдельных операций.
Количество запросов в секунду
Отслеживают нагрузку на сервер, что позволяет своевременно реагировать на перегрузки и оптимизировать работу СУБД.
Уровень СРМ: сервер PostgreSQL
Метрика: Сумма скорости (irate) транзакций commit и rollback
Порог: > 10,000 запросов/сек
Причины:
- Чрезмерная нагрузка, приводящая к перегрузке сервера.
- Неоптимизированные запросы, увеличивающие общий объём операций.
Статус сервера PostgreSQL
Отражают доступность СУБД, позволяя оперативно реагировать на сбои и проблемы с сетью.
Уровень СРМ: сервер PostgreSQL
Метрика: pg_up
Порог: 0 (если сервер недоступен)
Причины:
- Аварийное состояние СУБД.
- Проблемы с сетью или конфигурацией, приводящие к отсутствию отклика сервера.
Дашборды
Дашборд сервера PostgreSQL отображает показатели:
- текущее количество соединений,
- число транзакций,
- активность блокировок,
- операции INSERT/RETURN/UPDATE/DELETE.
Скриншот дашборда
Показатели работы сервера PostgreSQL в части autovacuum и Frozen Transaction вынесены в отдельный дашборд. На дашборде отображаются показатели:
- Число «мертвых» кортежей (Dead Tuples)
- Возраст транзакций (Frozen Transaction)
- Время с момента последнего вакуума
- Активность процессов автовакуумирования (Autovacuum)
Скриншот дашборда
Файлы конфигурации
- TKE-конфигурация – Конфигурационный файл, описывающий TКЕ.
- Шаблон – Шаблон метрик и индикаторов здоровья.
- Дашборды – Файл конфигурации дашбордов.
- Экспортер – Файл настроек экспортёров для сбора метрик PostgreSQL.