Диагностика работы модуля Advanced analytics
Ссылка на статью с настройкой модуля: 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 ../
Если указанных файлов там нет, проверяем создан ли у пользователя первичный ключ, посмотрев содержимое папки пользователя ~./ssh/:
root@deb-127-1:~# ls /root/.ssh/
root@deb-127-1:~#
Если файл с публичным ключом в указанном каталоге присутствует, то его необходимо скопировать в папку /opt/tantor/eco:
root@deb-127-1:~# cp /root/.ssh/id_rsa* /opt/tantor/eco/ssh/
root@deb-127-1:~#
Если же их нет и там, то необходимо сгенерировать ключи командой:
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:~#
passphrase в данном случае не нужно указывать, нам требуется автоматическая авторизация по ключу
И после этого скопировать в требуемую папку:
root@deb-127-1:~# cp /root/.ssh/id_rsa* /opt/tantor/eco/ssh/
root@deb-127-1:~#
Убедимся что ключ успешно скопирован
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:~#
Шаг 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:
В данном случае мы видим, что ключи не скопированы и требуется ввод пароля
Для того, чтобы авторизация осуществлялась по ключу необходимо скопировать публичный ключ на хост с наблюдаемой б.д. :
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:~#
*При выполнении 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:~$
*Данный способ передачи ключа на удаленный хост приводится как пример, вы можете воспользоваться любым известным вам способом организации авторизации по 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=#
Если расширение pg_stat_statements не установлено, установите его следующей командой
create extension pg_stat_statements;
Шаг 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
Если нет то добавьте эти правила. Должна выполняться
Шаг 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:~$
Если данная команда не выполняется, проверьте предыдущие шаги
Шаг 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 '
Шаг 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 |
Шаг 8.
На хосте с установленной платформой тантор перезапустите контейнер отвечающий за сбор данных модуля расширенная аналитика :
root@deb-127-1:~# docker restart pg_monitor_collector
pg_monitor_collector
root@deb-127-1:~#
Шаг 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:~$
Подождать некоторое время, сбор статистики производится с интервалом 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:~$
Шаг 10.
Если проблема всё еще не решена — обращайтесь в поддержку.
*Имена хостов приводимые в статье
deb-127-1 192.168.130.159 - хост с развернутой платформой тантор
deb-127-2 192.168.130.150 - хост с наблюдаемой базой данных
Операционная система Debian 12.7