postgres_exporter — отдельный процесс рядом с node_exporter: тот снимает метрики хоста, этот подключается к PostgreSQL как обычный клиент и превращает системные представления (pg_stat_*) в формат Prometheus.
Строка подключения — через переменную окружения, не флаг:
DATA_SOURCE_NAME="user=postgres_exporter password=xxx host=localhost port=5432 sslmode=disable" postgres_exporter
Слушает :9187/metrics по умолчанию (порт задаётся --web.listen-address, как у большинства Prometheus-экспортеров).
Первое, на что стоит алертить — сама доступность базы:
pg_up == 0
pg_up — не про CPU/память, а про то, смог ли экспортер вообще подключиться и выполнить простой запрос. Если база упала целиком или закончились свободные подключения (max_connections) — именно эта метрика уйдёт в 0 раньше всех остальных.
Встроенных метрик хватает на базовый мониторинг (размер баз, количество подключений, коммиты/роллбэки, репликационный лаг), но для специфичных SQL-запросов раньше был флаг --extend.query-path с YAML-файлом произвольных запросов — в актуальных версиях он помечен deprecated, проверяй в чейнджлоге конкретной версии, прежде чем на него закладываться.
Отдельный пользователь для экспортера — не заводить его под суперпользователем ради пары SELECT из системных представлений:
CREATE USER postgres_exporter WITH PASSWORD 'xxx';
GRANT pg_monitor TO postgres_exporter;
Роль pg_monitor — встроенная в PostgreSQL, даёт доступ на чтение ровно к тем представлениям статистики, которые нужны для мониторинга, без прав на содержимое пользовательских таблиц.
#prometheus #postgresql #lgtm
