Ссылка на статью с настройкой модуля: https://docs.tantorlabs.ru/tp/5.0/pg_monitor_installation.html

Шаг 1.

Проверить, что в директории /opt/tantor/eco/ssh присутствует файл  id_rsa.pub

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

root@deb-127-1:~# ls -laF /opt/tantor/eco/ssh/
total 8
drwxr-xr-x 2 root root 4096 Nov  7 13:43 ./
drwxr----- 8 root root 4096 Nov  8 11:25 ../
CODE

Если указанных файлов там нет, проверяем создан ли у пользователя первичный ключ, посмотрев содержимое папки пользователя ~./ssh/:

root@deb-127-1:~# ls /root/.ssh/
root@deb-127-1:~#
CODE

Если файл с публичным ключом в указанном каталоге присутствует, то его необходимо скопировать в папку /opt/tantor/eco:

root@deb-127-1:~# cp /root/.ssh/id_rsa* /opt/tantor/eco/ssh/
root@deb-127-1:~#
CODE

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

root@deb-127-1:~# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa
Your public key has been saved in /root/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:nNMRWBPB3qSec64tnePw1YmPxMp9GH6ZlZBlemYAUvI root@deb-127-1
The key's randomart image is:
+---[RSA 3072]----+
|         *B=.    |
|        . =o.. o |
|         ..E  *  |
|       . oo..+ + |
|        S...  = .|
|         .+ o..oo|
|          .=.=+.=|
|          o+O+o= |
|          .*++o. |
+----[SHA256]-----+
root@deb-127-1:~#
CODE

passphrase в данном случае не нужно указывать, нам требуется автоматическая авторизация по ключу

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

root@deb-127-1:~# cp /root/.ssh/id_rsa* /opt/tantor/eco/ssh/
root@deb-127-1:~#
CODE

Убедимся что ключ успешно скопирован

root@deb-127-1:~# ls -laF /opt/tantor/eco/ssh/
total 16
drwxr-xr-x 2 root root 4096 Nov 12 07:00 ./
drwxr----- 8 root root 4096 Nov  8 11:25 ../
-rw------- 1 root root 2602 Nov 12 07:00 id_rsa
-rw-r--r-- 1 root root  568 Nov 12 07:00 id_rsa.pub
root@deb-127-1:~#
CODE

Шаг 2.

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

root@deb-127-1:~# ssh postgres@deb-127-2
The authenticity of host 'deb-127-2 (192.168.130.150)' can't be established.
ED25519 key fingerprint is SHA256:a17sBLj7Q1xtdhgMTDcbUw6/MyQzU4VwuTOYoph3Ens.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'deb-127-2' (ED25519) to the list of known hosts.
Debian GNU/Linux 12
postgres@deb-127-2's password:
CODE

В данном случае мы видим, что ключи не скопированы и требуется ввод пароля

Для того, чтобы авторизация осуществлялась по ключу необходимо скопировать публичный ключ на хост с наблюдаемой б.д. :

root@deb-127-1:~# ssh-copy-id -i /opt/tantor/eco/ssh/id_rsa.pub postgres@deb-127-2
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/opt/tantor/eco/ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
Debian GNU/Linux 12
postgres@deb-127-2's password:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'postgres@deb-127-2'"
and check to make sure that only the key(s) you wanted were added.

root@deb-127-1:~#
CODE

*При выполнении  ssh-copy-id потребуется ввести пароль для пользователя postgres, который должен быть заранее установлен на хосте с наблюдаемой базой данных.

Проверяем  результат :

root@deb-127-1:~# ssh 'postgres@deb-127-2'
Debian GNU/Linux 12
Linux deb-127-2 6.1.0-26-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.112-1 (2024-09-30) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Wed Oct  9 16:19:23 2024 from 192.168.130.151
postgres@deb-127-2:~$
postgres@deb-127-2:~$
CODE

*Данный способ передачи ключа на удаленный хост приводится как пример, вы можете воспользоваться любым известным вам способом организации авторизации по ssh ключам без указания пароля


Шаг 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.

На хосте с установленной платформой тантор перезапустите контейнер отвечающий за сбор данных модуля расширенная аналитика :

root@deb-127-1:~# docker restart pg_monitor_collector
pg_monitor_collector
root@deb-127-1:~#
CODE

 Шаг 9.

Убедиться в том, что соединения от модуля расширенной аналитики проходят до базы данных можно следующим способом

Включить полное логирование в наблюдаемой базе данных

postgres@deb-127-2:~$ psql -d postgres
psql (16.4 (Debian 16.4-1.pgdg120+2))
Type "help" for help.

postgres=# ALTER SYSTEM SET log_statement = 'all';
ALTER SYSTEM
postgres=# select pg_reload_conf();
 pg_reload_conf
----------------
 t
(1 row)

postgres=#
\q
postgres@deb-127-2:~$
CODE

Подождать некоторое время, сбор статистики производится с интервалом 1 минуту

Проанализировать содержимое лог файла на предмет исполнения запросов от модуля

postgres@deb-127-2:~$ cat /var/log/postgresql/postgresql-16-main.log | grep 'pg-monitor.pgstat' | head -n 5
2024-11-12 16:51:03.418 MSK [5770:3/17634] [postgres] 127.0.0.1(58304) 08194085d3a7 [40] : pg-monitor.pgstat LOG:  execute pgstat: SELECT clock_timestamp(), * FROM pg_stat_get_activity(NULL);
2024-11-12 16:51:04.501 MSK [5770:3/17635] [postgres] 127.0.0.1(58304) 08194085d3a7 [40] : pg-monitor.pgstat LOG:  execute pgstat: SELECT clock_timestamp(), * FROM pg_stat_get_activity(NULL);
2024-11-12 16:51:05.581 MSK [5770:3/17636] [postgres] 127.0.0.1(58304) 08194085d3a7 [40] : pg-monitor.pgstat LOG:  execute pgstat: SELECT clock_timestamp(), * FROM pg_stat_get_activity(NULL);
2024-11-12 16:51:06.662 MSK [5770:3/17637] [postgres] 127.0.0.1(58304) 08194085d3a7 [40] : pg-monitor.pgstat LOG:  execute pgstat: SELECT clock_timestamp(), * FROM pg_stat_get_activity(NULL);
2024-11-12 16:51:07.743 MSK [5770:3/17638] [postgres] 127.0.0.1(58304) 08194085d3a7 [40] : pg-monitor.pgstat LOG:  execute pgstat: SELECT clock_timestamp(), * FROM pg_stat_get_activity(NULL);
postgres@deb-127-2:~$
CODE


 Шаг 10.

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


*Имена хостов приводимые в статье

deb-127-1 192.168.130.159  - хост с развернутой платформой тантор

deb-127-2 192.168.130.150  - хост с наблюдаемой базой данных

Операционная система Debian 12.7