Шаг 1.

Проверить, что в директории:

/opt/tantor/eco/ssh

лежат ключи:

id_rsa

id_rsa.pub

Для этого выполните:

ls -la /opt/tantor/eco/ssh
CODE

Если указанных файлов там нет, то переходим к решению.

  • Решение

Если указанные ключи сгенерированы и лежат в домашней папке:

ls -la $HOME/.ssh
CODE

То необходимо просто их скопировать:

cp $HOME/.ssh/id_rsa* /opt/tantor/eco/ssh/
CODE

Если же их нет и там, то сгенерировать ключи командой:

ssh-keygen -t rsa
CODE

И после этого скопировать в требуемую папку:

cp $HOME/.ssh/id_rsa* /opt/tantor/eco/ssh/
CODE

Шаг 2.

Проверить доступ с хоста платформы к хосту с целевой БД (выполнять от имени пользователя под которым запущена платформа и для которого сгенерированы ключи):

ssh postgres@<DB host name or ip>
CODE

Если вход не осуществляется, то необходимо выполнить:

ssh-copy-id -i /opt/tantor/eco/ssh/id_rsa.pub postgres@<DB host name or ip>
CODE

*При выполнении может потребоваться ввести пароль для пользователя postgres


Аналогичное действие если скопировать содержимое ключа id_rsa.pub в файл authorized_keys расположенный на хосте с БД в домашней директории пользователя postgres. Как правило это:

/var/lib/postgresql/

В итоге у вас должен появиться файл:

/var/lib/postgresql/.ssh/authorized_keys

Результат проверить всё той же командой:

ssh postgres@<DB host name or ip>
CODE

Шаг 3.

На хосте с наблюдаемой базой данных убедиться что установлено расширение pg_stat_statements.

postgres@deb-127-2:~$ psql
psql (15.8 (Debian 15.8-0+deb12u1))
Type "help" for help.

postgres=# \dx
                                            List of installed extensions
        Name        | Version |   Schema   |                              Description
--------------------+---------+------------+------------------------------------------------------------------------
 pg_stat_statements | 1.10    | public     | track planning and execution statistics of all SQL statements executed
 plpgsql            | 1.0     | pg_catalog | PL/pgSQL procedural language
(2 rows)

postgres=#
CODE

Если расширение pg_stat_statements не установлено, установите его следующей командой

create extension pg_stat_statements;
CODE

Шаг 4.

На хосте с наблюдаемой базой данных убедиться что добавлены разрешения в файле pg_hba.conf

host    all     postgres        127.0.0.1/32    trust   # pg-monitor : ssh port forwarding IPv4
host    all     postgres        ::1/128         trust   # pg-monitor : ssh port forwarding IPv6
CODE

Если нет то добавьте эти правила. Должна выполняться 

Шаг 5.

Убедитесь что предыдущие шаги выполнены верно, выполнив проверку 

root@deb-127-1:~# ssh 'postgres@deb-127-2.local.net'
Last login: Wed Oct 30 11:35:54 2024 from 192.168.5.214
postgres@deb-127-2:~$
postgres@deb-127-2:~$ psql -h 127.0.0.1 -p 5432 -U postgres -c "SELECT clock_timestamp(), count(*) FROM pg_stat_get_activity(NULL);"
        clock_timestamp        | count
-------------------------------+-------
 2024-10-30 03:37:35.309063-05 |     9
(1 row)

postgres@deb-127-2:~$
CODE

Если данная команда не выполняется, проверьте предыдущие шаги

Шаг 6.

Для отображения логов обязательными  параметрами postgresql являются

# требуется минимально для сбора логов со стороны Advanced Analytics
lc_messages = 'en_US.UTF-8'
logging_collector = on
log_destination = 'stderr'
log_filename = 'postgresql-%F.log'
log_line_prefix = '%m [%p:%v] [%d] %r %a '
CODE


Шаг 7.

# Настройки для  Advanced analytics BEGIN
log_lock_waits = on
auto_explain.log_analyze = on
auto_explain.log_buffers = on
track_io_timing = on
auto_explain.log_nested_statements = 'true'
# установить подходящее вам значение
deadlock_timeout = 1000ms
log_min_duration_statement = 10s
pg_store_plans.min_duration = 10s
auto_explain.log_min_duration = 10s

# минимум none для показа ошибок log_statement = 'none'
# Для СУБД типа PostgresPro вместо ‘pg_stat_statements , pg_store_plans’ указать pgpro_stats shared_preload_libraries = 'pg_stat_statements, pg_store_plans, auto_explain' # Настройки для Advanced analytics END

Шаг 8.

Перезапустите контейнер отвечающий за аналитику:

docker restart pg_monitor_collector
CODE

 Шаг 9.

Проверьте работу модуля.


Если проблема всё еще не решена — обращайтесь в поддержку.