# Установка Мониторинга — подключение к внешней PostgreSQL

## Цель

Установить Мониторинг с подключением к внешней базе данных PostgreSQL вместо встроенной. Применяется, когда инфраструктура использует выделенный сервер БД (PostgreSQL 15 или Postgres PRO 15).

## Контекст

Мониторинг использует двухступенчатое хранение данных:

- **ClickHouse** — первичное хранение необработанных данных, собираемых с устройств по SNMP.
- **PostgreSQL** — агрегированные и обработанные данные: значения счётчиков, статусы устройств и другие производные метрики.

По умолчанию обе БД устанавливаются и конфигурируются вместе с Мониторингом. На этой странице описано подключение Мониторинга к внешней PostgreSQL.

## Предусловия

- Внешняя PostgreSQL развёрнута и доступна по сети с сервера Мониторинга.
- Версия PostgreSQL соответствует «Требования к серверу для установки Принтум» (PostgreSQL 15 или Postgres PRO 15).
- Время отклика от сервера Мониторинга к внешней БД — в пределах 2–5 мс.
- Создан пользователь БД с правами на чтение, удаление, редактирование строк и столбцов в базе, а также удаление, создание, редактирование таблиц.
- База данных уже создана на сервере PostgreSQL.
- Подготовлены остальные параметры установки Мониторинга (см. соответствующую страницу установки — онлайн или офлайн).

## Что потребуется

- `POSTGRESQL_HOST` — адрес сервера БД.
- `POSTGRESQL_PORT` — порт подключения.
- `POSTGRESQL_DATABASE` — имя базы (база уже должна существовать).
- `POSTGRESQL_USER` — имя пользователя для подключения.
- `POSTGRESQL_PASSWORD` — пароль пользователя.
- (Опционально) `POSTGRESQL_SSLMODE` — режим шифрованного соединения.
- (Опционально, при `verify-ca` или `verify-full`) `POSTGRESQL_CERT_CA` — абсолютный путь к CA-сертификату.

## Шаги установки

### Шаг 1. Подготовить базовую установку Мониторинга

Выполнить шаги онлайн- или офлайн-установки до момента запуска `install.sh` (создать пароль администратора, подготовить сертификаты при необходимости).

### Шаг 2. Сформировать команду установки с параметрами внешней PostgreSQL

Добавить в команду установки следующие параметры:

```
POSTGRESQL_HOST=<POSTGRESQL_HOST>
POSTGRESQL_PORT=<POSTGRESQL_PORT>
POSTGRESQL_DATABASE=<POSTGRESQL_DATABASE>
POSTGRESQL_USER=<POSTGRESQL_USER>
POSTGRESQL_PASSWORD=<POSTGRESQL_PASSWORD>
```

Пример итоговой команды:

```
sudo -E POSTGRESQL_HOST=<POSTGRESQL_HOST> POSTGRESQL_PORT=<POSTGRESQL_PORT> POSTGRESQL_DATABASE=<POSTGRESQL_DATABASE> POSTGRESQL_USER=<POSTGRESQL_USER> POSTGRESQL_PASSWORD=<POSTGRESQL_PASSWORD> ./install.sh -s agent
```

### Шаг 3. (Опционально) Включить шифрованное соединение

Если внешняя БД поддерживает шифрованное соединение, добавить:

```
POSTGRESQL_SSLMODE=<POSTGRESQL_SSLMODE>
```

Допустимые значения:

- `allow`,
- `prefer`,
- `require`,
- `verify-ca`,
- `verify-full`.

Подробности — в официальной документации PostgreSQL: [https://www.postgresql.org/docs/current/libpq-ssl.html#LIBPQ-SSL-PROTECTION](https://www.postgresql.org/docs/current/libpq-ssl.html#LIBPQ-SSL-PROTECTION). Другие значения означают, что шифрование не будет включено и параметр будет игнорироваться.

При значении `verify-ca` или `verify-full` дополнительно указать:

```
POSTGRESQL_CERT_CA=<POSTGRESQL_CERT_CA>
```

где `<POSTGRESQL_CERT_CA>` — абсолютный путь до CA-сертификата, которым выдан сертификат сервера БД.

## Ожидаемый результат

- Установка завершается без ошибок подключения к внешней PostgreSQL.
- Мониторинг использует переданную внешнюю БД для хранения агрегированных данных.

## Как проверить установку

- Открыть Личный кабинет Мониторинга и убедиться, что данные отображаются.
- На сервере внешней PostgreSQL — проверить наличие активных подключений от сервера Мониторинга.

## Типовые ошибки

- **Connection refused / timeout к PostgreSQL** — проверить сетевую доступность и открытие порта `POSTGRESQL_PORT`.
- **Authentication failed** — проверить логин/пароль и права пользователя БД.
- **Database does not exist** — база должна существовать заранее.
- **SSL handshake failed** при `verify-ca`/`verify-full` — проверить путь к CA-сертификату.

## Что проверить перед эскалацией

- Версия PostgreSQL.
- Параметры подключения (хост, порт, БД, пользователь).
- Логи сервера PostgreSQL за время установки.
- Сетевая связность `сервер Мониторинга → сервер БД` на `POSTGRESQL_PORT`.

## Следующие шаги

- Установка Мониторинга — подключение к внешней ClickHouse
- Завершение установки Мониторинга — первый вход и проверка

## Связанные страницы

- [Установка Мониторинга — онлайн, автоматические сертификаты](http://wiki.printum.io/books/3-ustanovka/page/ustanovka-monitoringa-onlain-avtomaticeskie-sertifikaty)
- [Установка Мониторинга — офлайн, автоматические сертификаты](http://wiki.printum.io/books/3-ustanovka/page/ustanovka-monitoringa-oflain-avtomaticeskie-sertifikaty)
- [Установка Мониторинга — подключение к внешней ClickHouse](http://wiki.printum.io/books/3-ustanovka/page/ustanovka-monitoringa-podkliucenie-k-vnesnei-clickhouse)
- [Требования к серверу для установки Принтум](http://wiki.printum.io/books/3-ustanovka/page/trebovaniia-k-serveru-dlia-ustanovki-printum)