Подготовка PostgreSQL
Сетевой доступ и роль мониторинга
Разрешите подключения от Smart Monitor Data Collector к каждому инстансу PostgreSQL. Создайте отдельную роль без прав суперпользователя:
CREATE ROLE sm_monitor LOGIN PASSWORD '<пароль>';
GRANT pg_monitor TO sm_monitor;
Проверьте, что роль выполняет запрос к pg_stat_activity на каждом узле. Не используйте учетную запись владельца приложения или суперпользователя.
Расширения Tier 1
Для статистики запросов добавьте pg_stat_statements в shared_preload_libraries, перезапустите PostgreSQL и создайте расширение в наблюдаемой базе:
CREATE EXTENSION pg_stat_statements;
Для анализа bloat создайте pgstattuple. Для профиля ожиданий установите стороннее расширение pg_wait_sampling. Значения track_io_timing = on и compute_query_id = on или auto расширяют состав доступных сигналов.
Журнал и pgaudit
Журнал и аудит поддерживаются для PostgreSQL 15-17. Настройте:
logging_collector = on
log_destination = 'jsonlog'
Для аудита используйте профиль ddl, role и объектный аудит через роль-маркер:
CREATE ROLE sm_auditor NOLOGIN;
GRANT SELECT, INSERT, UPDATE, DELETE ON <объект> TO sm_auditor;
pgaudit.role = 'sm_auditor'
pgaudit.log = 'ddl, role'
pgaudit.log_parameter = off
pgaudit.log_catalog = off
pgaudit.log_relation = on
pgaudit.log_statement_once = on
Параметр pgaudit.log_parameter должен оставаться выключенным. Иначе в журнал могут попасть значения параметров запросов и содержимое прикладных таблиц.
Если кластером управляет Patroni, меняйте параметры PostgreSQL через DCS, а не только в postgresql.conf. После изменения сверяйте конфигурацию Patroni и фактические значения pg_settings на каждом узле.
TLS
Защитите четыре участка маршрута:
| Участок | Требование |
|---|---|
Smart Monitor Data Collector - PostgreSQL | ssl = on, сертификат узла и sslmode=verify-full |
Smart Monitor Data Collector - Patroni REST | HTTPS и проверка корневого сертификата |
Smart Monitor Data Collector - PgBouncer | client_tls_sslmode = require |
Smart Beat - Smart Monitor Data Collector | TLS на входе beats и проверка сертификата агентом |
Сертификат PostgreSQL должен содержать адрес подключения в Subject Alternative Name. Используйте удостоверяющий центр инсталляции.
Перевод Patroni REST на HTTPS влияет на балансировщики, patronictl и внешние системы мониторинга. Обновите их конфигурации в том же окне работ. Иначе чтение состояния может продолжить работать, а операции switchover или проверки здоровья завершатся ошибкой.