===== (этап 4) установка агента Tantor и последующем добавлении инстанса СУБД в платформу =====
Для установки агента Tantor и последующем добавлении инстанса СУБД в платформу необходимо перейти на сервер СУБД и произвести предложенные Платформой действия.
[[https://docs.tantorlabs.ru/tp/5.3/instance_adding.html]]
> !! Установку агента всегда начинаем на лидере в кластере !!
* Элемент ненумерованного спискаОткрыть рабочее пространство в Платформе
* Элемент ненумерованного спискаДобавить новый инстанс (сервер СУБД) Add instance
* Элемент ненумерованного спискаВыбрать тип инстанса (в наше примере Tantor)
* Элемент ненумерованного спискаУказать IP адрес, порт и имя БД
* Элемент ненумерованного спискаПлатформа сообщает, что агент не установлен на выбранном инстансе и предлагает выбрать тип и версию ОС инстанса
* Элемент ненумерованного спискаДалее необходимо выполнить ряд предлагаемых Платформой действий на узле сервера СУБД, для исключения ошибки скопировать, **каждое** действие в буфер можно кликнув на пиктограмму в конце каждой строки.
Узнаем 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