!!!Контейнер с базой данных и экспортер должны находиться в одной сети.
Подготовительные работы
Итак мы имеем сервер с установленным на нем postgresql. Создадим пользователя, через которого экспортер будет подключатся к базе, так как использовать стандартного пользователя postgres не есть хорошо. Новый пользователь будет иметь полный read-only доступ к базе:
sadmin@db01:~$ sudo -u postgres psql
---
postgres=# create user postgresql_exporter with password 'Pwdpwd1122';
postgres=# grant select on all tables in schema public to postgresql_exporter;
Проверим доступ к базе, подключится из под этого пользователя и попробуем создать базу например:
sadmin@db01:~$ psql -U postgresql_exporter -h localhost postgres
---
postgres=> create database test1;
ERROR: permission denied to create database
Пользователь postgresql_exporter теперь имеет доступ ко всем созданным таблицам на текущий момент. При появлении новых схем или табличек в базе нам нужно будет повторно переназначать права. Что бы избежать повторных действий, можем воспользоваться фичей дефолтного назначения прав.:
postgres=# alter default privileges in schema public
postgres-# grant select on tables to postgresql_exporter; Конфигурация экспортера в докер компоуз файле
postgres-exporter:
image: prometheuscommunity/postgres-exporter
ports:
- 9187:9187
environment:
DATA_SOURCE_NAME: "postgresql://postgresql_exporter:postgresql_exporter_password@postgres:5432/shop?sslmode=disable"