Перейти к содержимому
Перейти к основному содержимому

Проверка PostgreSQL

Проверка PostgreSQL создаётся в дашборде и выполняется агентом рядом с базой. Строка подключения хранится только локально в agent.yaml на вашем хосте и на сервер Flaree не отправляется. В задании проверки указывается лишь connectionRef — имя строки из секции connections:.

Предварительные требования

  • Агент Flaree установлен и в статусе Online (см. установку на Linux).

  • Тариф Pro: проверки баз данных недоступны на Starter (там только http, tcp и heartbeat).

  • Сетевая доступность от хоста агента до PostgreSQL (по умолчанию TCP 5432).

  • Read-only пользователь с правами на системные представления:

    CREATE ROLE flaree_ro WITH LOGIN PASSWORD '<пароль>';
    GRANT pg_monitor TO flaree_ro;

    Роли pg_monitor достаточно для всех видов проверок, включая чтение pg_stat_replication.

Минимальная конфигурация

Локально, в /etc/flaree-agent/agent.yaml, опишите строку подключения:

connections:
main_db: "Host=10.0.0.5;Port=5432;Username=flaree_ro;Password=<пароль>;Database=app"

В дашборде: Агенты → ваш агент → Назначенные проверки → Новая проверка, тип postgres. В JSON-конфиге задания укажите имя из connections::

{ "connectionRef": "main_db" }

Агент подтянет задание при следующей синхронизации конфига (каждые 30 секунд) и начнёт выполнять SELECT 1 с заданным интервалом.

Полная конфигурация

Чекер поддерживает три вида проверок через массив checks:

{
"connectionRef": "main_db",
"checks": ["liveness", "replication_lag", "connections"],
"maxReplicationLagBytes": 10485760
}
КлючТипПо умолчаниюОписание
connectionRefstringИмя строки подключения из connections: в agent.yaml. Обязателен.
checks[]array["liveness"]Виды проверок: liveness, replication_lag, connections.
maxReplicationLagBytesnumberбез лимитаПорог отставания реплики в байтах; при превышении проверка падает с ошибкой replication_lag_exceeded.

Что делает каждая проверка:

  • livenessSELECT 1; падает, если соединение или запрос не прошли.
  • replication_lag — максимум pg_wal_lsn_diff() по pg_stat_replication; значение публикуется в метаданных результата как replication_lag_bytes.
  • connections — число сессий текущей базы из pg_stat_activity; публикуется как connections.

Интервал и таймаут задаются в форме проверки в дашборде, а не в JSON.

Проверка работы

  • Подключитесь к базе с хоста агента теми же реквизитами, что указали в connections:.
  • Убедитесь, что счётчик проверок с type="postgres" растёт на локальных метриках агента.
  • Откройте компонент в дашборде — статус станет Operational в течение одного-двух интервалов.
psql "host=10.0.0.5 port=5432 user=flaree_ro dbname=app" -c "SELECT 1"

curl -s http://127.0.0.1:9090/metrics | grep 'type="postgres"'
# flaree_agent_checks_total{type="postgres",ok="true"} 12

Troubleshooting

  • Проверка не доходит до агента или компонент без данных — чек-лист нет данных.
  • Ошибка unknown_connection:main_db в результате — имя в connectionRef не совпадает с ключом в connections:; после правки agent.yaml перезапустите агента.
  • Ошибка missing_connectionRef — в JSON-конфиге задания нет поля connectionRef.
подсказка

Пароль из connections: остаётся на вашем хосте. Бэкенд Flaree видит только имя main_db и результат проверки.

Связанные страницы: MySQL · Redis · концепция агента.