===== (этап 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