Содержание

(этап 4) установка агента Tantor и последующем добавлении инстанса СУБД в платформу

Для установки агента Tantor и последующем добавлении инстанса СУБД в платформу необходимо перейти на сервер СУБД и произвести предложенные Платформой действия. https://docs.tantorlabs.ru/tp/5.3/instance_adding.html

!! Установку агента всегда начинаем на лидере в кластере !!

Узнаем IP адрес нашего сервера СУБД

ip a

пример вывода:

inet 10.2.0.11/24 brd 10.2.0.255 scope global eth0

Установка PMA агента Платформы Tantor при условии если везде вход по паролю и через графический интерфейс команда не проходит, то установку делаем через доп ключи читайте оф документацию https://docs.tantorlabs.ru/tp/5.3/ug_agents_config.html пример:

pmaagent configure --config_postgres_patroni -h 10.2.0.11 -p 5432 -d postgres -U postgres -W postgres -P 8008 -D

дополнительно смотрите тех документацию по ссылке выше, а также help агента после его установки

pmaagent --help
pmaagent instances add --help

Проверка службы старта агента.

sudo systemctl daemon-reload
sudo systemctl start pmaagent.service
sudo systemctl status pmaagent.service

Если нет связи с агентом, перезапустить демон агента

systemctl stop pmaagent.service
systemctl start pmaagent.service

Конфиг агента
/var/lib/pma/agent/agent.yml
Лог агента
/var/lib/pma/agent/logs/pmaagent.log

Установка дополнительных элементов для взаимодействия Птатформы и СУБД. (расширений / EXTENSION в СУБД Tantor)(pg_stat_statements, pg_store_plans, Advanced analytics)

https://docs.tantorlabs.ru/tp/5.3/pg_monitor_installation.html

Для работы Advanced analytics, создание ключей RSA под root на сервере tplatform

sudo -i
ssh-keygen -t rsa

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

cp /root/.ssh/id_rsa* /opt/tantor/eco/ssh/

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

ssh-copy-id -i /opt/tantor/eco/ssh/id_rsa postgres@db1
ssh-copy-id -i /opt/tantor/eco/ssh/id_rsa postgres@db2
ssh-copy-id -i /opt/tantor/eco/ssh/id_rsa postgres@db3

Проверьте возможность зайти на сервер базы данных с помощью добавленного ключа:

ssh postgres@db1
ssh postgres@db2
ssh postgres@db3

Настройка параметров и расширений / EXTENSION на наблюдаемой СУБД: pg_stat_statements, pg_store_plans, Advanced analytics.


Текущий вариант через «alter system set», создаст отдельный файл /var/lib/postgresql/tantor-be-16/data/postgresql.auto.conf , который будет преобладать в приоритете при запуске СУБД над файлом postgresql.conf, что очень удобно, если мы хотим отделить изменяемые параметры от дефолтных.
Данный способ работает только в рамках текущего сервера СУБД в standalone.
В отказоустойчивых кластерах типа Patroni, необходимо использовать единую конфигурацию для всех узлов.
Также данные настройки можно применить с помощью Платформы через модуль Конфигурации.

Подключаемся к одному из серверов, где установлена СУБД Tantor, например db1 В дальнейшем эти операции нужно выполнить на каждой наблюдаемой БД.

sudo -iu postgres psql

Выполняем команды на создание расширений и параметров: Если в параметре shared_preload_libraries уже указаны другие расширения, то добавить pg_stat_statements, pg_store_plans через запятую.

create EXTENSION pg_stat_statements;
create EXTENSION pg_store_plans;
alter system set shared_preload_libraries = pg_stat_statements, pg_store_plans, auto_explain;
alter system set logging_collector = on;
alter system set log_line_prefix = '%m [%p:%v] [%d] %r %a ';
alter system set log_lock_waits = on;
alter system set lc_messages = 'en_US.UTF-8';
alter system set track_io_timing = on;
alter system set deadlock_timeout = 1000;
alter system set log_min_duration_statement = 1000;
alter system set log_filename = 'postgresql-%F.log';
alter system set log_destination = 'stderr';
alter system set log_statement = 'all';

Перезагрузка СУБД и проверка сервиса СУБД, должно быть active (running)

sudo systemctl restart tantor-be-server-16.service
sudo systemctl status tantor-be-server-16.service

Добавляем параметры auto_explain

sudo -iu postgres psql
alter system set pg_store_plans.min_duration = 1000;
alter system set auto_explain.log_min_duration = 1000;
alter system set auto_explain.log_nested_statements = 'true';
alter system set auto_explain.log_analyze = on;
alter system set auto_explain.log_buffers = on;
SELECT pg_reload_conf();

Сколько параметров установлено в файлах параметров конфигурации

select sourcefile, count(*) from pg_settings group by sourcefile;

Какие параметры из каких файлов конфигурации были считаны и применены при запуске экземпляра Так же через этот вывод можно проверить себя, правильно ли вы задали параметры до перезагрузки СУБД.

select name, setting, substring(sourcefile, 39) file, sourceline, applied from pg_file_settings;

Для корректной работы модуля Advanced Analytics требуется добавить следующее разрешение в файле pg_hba.conf:

nano /var/lib/postgresql/tantor-be-16/data/pg_hba.conf
host     postgres         postgres         127.0.0.1/32             trust

Чтобы новые параметры pg_hba.conf применились, выполните:

sudo -iu postgres psql -c "SELECT pg_reload_conf();"

или restart наблюдаемой СУБД.

sudo systemctl restart tantor-be-server-16.service

Чтобы изменения вступили в силу для Advanced analytics, на сервере tplatform перезапустите контейнер

docker restart pg_monitor_collector

Посмотрите результат в Платформе, обновив страницу Overview с открытым инстансом БД в браузере. Должны появится графики
В модуле Advanced analytics инстансом БД также должны появиться данные

Ротация и очистка логов СУБД Tantor ''/var/lib/postgresql/tantor-be-16/data/log.''

Эти параметры уже заданы, при необходимости измените под требования заказчика. Для просмотра или изменения можно использовать Платформу Tantor или командами в psql:
alter system set <параметр = значение>; – изменить
show <параметр>; – посмотреть

logging_collector = on              # Включение сбора логов
log_directory = 'log'               # Директория для логов (относительно PGDATA)
log_filename = 'postgresql-%F.log'  # Шаблон имени файла
log_rotation_age = 1d               # Ротация ежедневно
log_rotation_size = 10MB            # Или при достижении размера

Посмотреть логи по примеру, имя файла у вас будет свой:

less /var/lib/postgresql/tantor-be-16/data/log/postgresql-2023-10-01_135334.log

Даем привилегии УЗ postgres на использование crontab

sudo usermod -aG crontab postgres

Логинимся под УЗ postgres

su - postgres

Создаем скрипт очистки Вставляем строки, скрипт будет искать файлы с расширением и удалять, оставляя за последние 14 дней. Не забудьте указать правильный путь на ваши логи.

nano cleanup_logs.sh
#!/bin/bash
find /var/lib/postgresql/tantor-be-16/data/log/ -type f -name "*.log" -mtime +14 -exec rm {} \;
find /var/lib/postgresql/tantor-be-16/data/log/ -type f -name "*.csv" -mtime +14 -exec rm {} \;

Применяем бит исполнения файла скрипта

chmod +x cleanup_logs.sh

Вставляем задание на выполнение в cron, сохраняем и проверяем.

crontab -e
0 0 * * * /var/lib/postgresql/cleanup_logs.sh  ## выполнение раз в день в 0:00

проверяем, что запись добавилась

crontab -l