Оглавление

Глава

PL6: Платформа Tantor 6

страница

I

Обзор курса

7

Предварительная подготовка

Материалы курса

Разделы курса

О курсе

О компании Тантор Лабс

О курсе

Платформа Tantor

СУБД Tantor Postgres

Tantor xData

Доработка расширений PostgreSQL

Конференции PGBootCamp

1

Возможности Платформы Tantor

18

Возможности Платформы Tantor

Работа с экземплярами PostgreSQL: Обзор

Расширение pg_stat_statements

Работа с экземплярами: Графики

Работа с экземплярами: Конфигурация

Работа с экземплярами: Обслуживание

Работа с экземплярами: Браузер БД

Браузер БД -> Аудит

Браузер БД -> SQL-редактор и Схема

Работа с экземплярами: Профилировщик запросов

Профилировщик запросов -> Планы

Работа с экземплярами: Текущая активность

Репликация и Табличные пространства

Работа с экземплярами: Настройки мониторинга

Работа с экземплярами: Расширенная аналитика

Работа с экземплярами: Задачи

Модули Платформы Tantor

Оповещения

2-1

Архитектура Платформы Tantor

37

Виды установки Платформы Tantor

Агенты Платформы Tantor

Архитектура Платформы Tantor

Типичная Архитектура

Масштабируемая архитектура

Агент

Файлы Агента

Список контейнеров

2-2

Интеграция - Swagger UI

46

Swagger UI

Страница Swagger UI

Токены

Ввод токена в Swagger UI

Практика 1

2-3

Начало работы с Платформой

52

Первый вход в Платформу

Лицензия на использование Платформы

Начальная страница Платформы - список тенантов

Тенант: Расширенная информация

Настройки тенанта: Пользователи

Страница пользователя Платформы

Включение пользователя в группы

Настройки тенанта: Группы

Тенант: Рабочие пространства

Тенант: Рабочие пространства

Практика 2

2-4

Разграничение доступа

64

Виды пользователей Платформы Tantor

Группы пользователей

Внешняя аутентификация

Страница тенанта

Страница тенанта

Страница рабочих пространств

Страница экземпляра

Практика 3

3

Мониторинг

73

Панель управления Платформой

Экземпляры PostgreSQL

Страница тенанта со списком экземпляров

Рабочее пространство: Агенты

3-2

Patroni

78

Рабочее пространство: Кластеры Patroni

Рабочее пространство: КЛАСТЕРЫ

Страница кластера Patroni: ОБЗОР И УПРАВЛЕНИЕ

Страница кластера Patroni: МОНИТОРИНГ

Страница кластера Patroni: Конфигурация

Страница кластера Patroni: Применение изменений

Практика 4

3-3

Обзор экземпляра

86

Страница Обзор

Страница Обзор

Страница Обзор -> УВЕДОМЛЕНИЯ -> Подсказки системы

Оповещения (сообщения, уведомления)

Экземпляр: Сессии

Экземпляр: Транзакции

Экземпляр: Ввод/Вывод на диск

Экземпляр: Ввод/Вывод блоков

Экземпляр: Нагрузка CPU

Экземпляр: Доступно ОЗУ

Экземпляр: Размер данных

Экземпляр: Размер диагностических логов

Экземпляр: Среднее время запроса

Экземпляр: 5 самых длительных запросов

Экземпляр: % КОНТР. ТОЧЕК

Экземпляр: Временные файлы

Экземпляр: Временные файлы (события)

Экземпляр: Сеть

Практика 5

3-4

Оповещения

106

Оповещения

Страница со списком оповещений

Страница оповещения: ОБЗОР

Страница оповещения: СВЯЗАННЫЕ ОПОВЕЩЕНИЯ

Страница оповещения: ЖУРНАЛ СОБЫТИЙ

3-5

Оповещения через e-mail

112

Интеграция со службами сообщений

Настройки тенанта: Почтовый сервер (SMTP)

Интеграция со службами сообщений

Отправка тестового письма

Шаблоны писем

Редактор шаблона писем

3-6

Оповещения через Telegram и Mattermost

119

Посылка сообщений в каналTelegram

Создание канала Telegram

Создание бота для канала Telegram

Добавление бота в канал Telegram

Создание канала уведомлений в Платформе

Добавление правил для канала Telegram в Платформе

Пример сообщений в канале Telegram

Mattermost

Практика 6

3-7

Экземпляр: Профилировщик запросов

129

Экземпляр: Настройки мониторинга

Экземпляр: Настройки мониторинга -> ТРИГГЕРЫ

Экземпляр: Профилировщик запросов

Экземпляр: Профилировщик запросов: СТАТИСТИКА

Экземпляр: Профилировщик запросов: ПЛАНЫ

Экземпляр: Профилировщик запросов: простой план

Экземпляр: Профилировщик запросов: долгий запрос

Экземпляр: Профилировщик запросов: tilemap

Экземпляр: Профилировщик запросов: piechart

Экземпляр: Профилировщик запросов: диаграмма

Экземпляр: Профилировщик запросов: рекомендации

Экземпляр: Профилировщик запросов: статистика

Практика 7

Практика 8

Практика 9

3-8

Расширенная аналитика

145

Экземпляр: Расширенная аналитика

Экземпляр: Проверка настройки аналитики

Экземпляр: страница pg-monitor

Экземпляр: Расширенная аналитика

Расширенная аналитика: ошибки в логе PostgreSQL

Расширенная аналитика: статистика по таблицам

Расширенная аналитика: взаимоблокировки

Расширенная аналитика: Проблемные запросы

Расширенная аналитика: PSA (pg_stat_activity)

Расширенная аналитика: CHECKPOINT

Расширенная аналитика: Логи

Расширенная аналитика: Мегазапросы

Расширенная аналитика: PG config

Практика 10

4

Конфигурирование и обслуживание PostgreSQL

160

Текущая активность

Текущая активность: Завершить процесс

Текущая активность: ОЖИДАНИЕ и ЗАБЛОКИРОВАНО

Текущая активность: дерево блокировок

Практика 11

4-2

Конфигурация экземпляра PostgreSQL

166

Экземпляр: Конфигурация

Экземпляр: изменение параметров конфигурации

Параметры конфигурации: настройка и фильтр

Описание параметров

Группы параметров конфигурации и модификаторы

Модуль: Группы параметров

Сравнение и создание групп параметров

Модификаторы групп параметров

Редактирование модификаторов

Синхронизация на странице Конфигурация

Синхронизация на странице модуля: Группы параметров

4-3

Параметры конфигурации Patroni

178

Список кластеров Patroni и их экземпляров

Кластер Patroni: МОНИТОРИНГ

Страница Конфигурация у экземпляра в кластере Patroni

Страница настройки кластера

Практика 12

4-4

Браузер БД

184

Браузер БД

Аудит объектов Баз Данных

Аудит объектов Баз Данных: графики

Аудит объектов Баз Данных: Рекомендации

Статистика по таблице

Браузер БД: Схема данных

Браузер БД: SQL-редактор

Практика 13

4-5

Обслуживание баз данных

193

Обслуживание баз данных

Запуск задачи обслуживания

Статус задач обслуживания

Обслуживание индексов и счетчика транзакций

Практика 14

4-6

Планировщик Платформы Тантор

199

Планировщик Платформы

Страница со списком задач

Добавление задачи

Добавление действий в задачу

Редактирование действий задачи

Задачи в Журнале событий

Фильтры в Журнале событий

Экземпляр: страница Репликация у мастера

Экземпляр: пункт меню Репликация на странице реплики

Настройка тенанта: Резервное копирование

Мониторинг бэкапов

4-7

Анонимайзер (маскировка данных)

211

Обзор анонимайзера

Словари анонимайзера

Мета-словари

Шаблон сенситивного словаря

Источники данных

Сканирование

Результат сканирования

Создание предпросмотра

Предпросмотр

Дамп

Загрузка дампа

Практика 15

5

Установка Платформы Тантор

224

Способы установки Платформы Tantor

Утилита диагностики Платформы Tantor

Запуск инсталлятора Платформы Tantor

Обновление Платформы Tantor

Очистка места после обновления

5-2

Обзор docker и docker-compose

230

docker и docker-compose

Статусы контейнеров docker

Сетевая изоляция контейнеров docker

Сети docker типа bridge

Содержимое файла docker-compose.yml

Файл docker-compose.yml

Файл docker-compose.yml: networks

Файл docker-compose.yml

Файл docker-compose.yml: volumes

Файл /etc/hosts в контейнере docker

Установка и обновление docker и docker-compose

5-3

Установка Платформы, Prometheus, Grafana

242

Установка Prometheus и Grafana

Создание в Grafana соединения с Prometheus

Импорт Dashboard в Grafana

Интеграция с Triafly

Деинсталляция Платформы

Установочные файлы

Установка Платформы

Установка Платформы

Установка Платформы вне докера

Установка Платформы вне докера

Практика 16

5-4

Установка Агента Платформы Tantor

254

Установка Агента Платформы

Установка Агента в веб-интерфейсе

Установка Агента в веб-интерфейсе

Регистрация Агента в Платформе через веб-интерфейс

Установка и регистрация Агента в командной строке

Перезапуск Агента после регистрации в Платформе

Регистрация экземпляра PostgreSQL в командной строке

Практика 17

Практика 18

Авторские права

Учебное пособие, практические задания, презентации (далее документы) предназначены для учебных целей.

Документы защищены авторским правом и законодательством об интеллектуальной собственности.

Вы можете копировать и распечатывать документы для личного использования в целях самообучения, а также при обучении в авторизованных ООО «Tantor Labs» учебных центрах и образовательных учреждениях. Авторизованные ООО «Tantor Labs» учебные центры и образовательные учреждения могут создавать учебные курсы на основе документов и использовать документы в учебных программах с письменного разрешения ООО «Tantor Labs».

Вы не имеете права использовать документы для обучения сотрудников или других лиц без разрешения ООО «Tantor Labs». Вы не имеете права лицензировать, коммерчески использовать документы полностью или частично без разрешения ООО «Tantor Labs».

При некоммерческом использовании (презентации, доклады, статьи, книги) информации из документов (текст, изображения, команды) сохраняйте ссылку на документы.

Текст документов не может быть изменен каким-либо образом.

Информация, содержащаяся в документах, может быть изменена без предварительного уведомления и мы не гарантируем ее безошибочность. Если вы обнаружите ошибки, нарушение авторских прав, пожалуйста, сообщите нам об этом.

Отказ от ответственности за содержание документа, продукты и услуги третьих лиц:

ООО «Tantor Labs» и связанные лица не несут ответственности и прямо отказываются от любых гарантий любого рода, включая потерю дохода, нанесенные прямым или непрямым, специальным или случайным использованием документа. ООО «Tantor Labs» и связанные лица не несут ответственности за любые убытки, издержки или ущерб, возникшие в результате использования информации, содержащейся в документе или использования сторонних ссылок, продуктов или услуг.

Авторское право © 2025, ООО «Tantor Labs»

Создал: Олег Иванов

!

Создан: 11 октября 2025 г.
По вопросам обучения обращайтесь: edu@tantorlabs.ru


Слайд 1

Слайд 1


Слайд 2

Предварительная подготовка

Для успешного прохождения курса достаточно опыта администрирования любой СУБД семейства PostgreSQL или знаний в объеме курса "Tantor: Администрирование PostgreSQL".

В курсе будут рассмотрены возможности Платформы Tantor.

Для успешного прохождения курса рекомендуется слушать инструктора, если будут возникать вопросы задавать их, выполнять практические задания.


Слайд 3

Материалы курса

К материалам курса относятся:

1) Учебное пособие в форме книги в формате pdf, которое содержит теоретическую часть курса.

2) Практические задания в форме книги в формате pdf.

3) Виртуальная машина с установленными в операционной системе Astra Linux 1.7: Платформой Tantor версии 6,  СУБД Tantor Postgres версии 17.5. Может предоставляться доступ к виртуальной машине на время курса или образ в формате ova. Образ виртуальной машины можно использовать с Oracle VirtualBox версии 6.1 и выше.


Слайд 4

Разделы курса

1.  Введение

2. Подготовка к работе (3 части)

3. Мониторинг (7 частей)

4. Конфигурирование и обслуживание (5 частей)

8. Установка и обновление (3 части)


Слайд 5

О курсе

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

Примерное расписание:

1) начало в 10:00

2) перерыв на обед 13:00-14:00. Начало обеда может сдвигаться на полчаса в диапазоне от 12:30 до 13:30, так как обычно совмещается с перерывом между главами.

3) окончание теоретической части до 17:00.

Курс состоит из теоретической части (глав) и практических заданий. Длительность глав примерно 20-40 минут. Точное время начала изложения глав и времени на практические задания определяет инструктор. Длительность выполнения упражнений может отличаться у разных слушателей и это не влияет на эффективность усвоения материала курса. Доделывать упражнения можно в перерывах между главами или в конце каждого дня. Порядок следования глав и упражнений на эффективность усвоения материала курса не влияет. Проверка выполнения заданий не производится. Для успешного усвоения материала курса достаточно:

1) слушать инструктора, просматривая в процессе изложения инструктора текст на слайдах и под слайдом

2) задавать инструктору вопросы, если возникает внутреннее несогласие (появляются вопросы)

3) выполнять практические задания и читать текст в практических заданиях

В материалы курса входят:

1) учебник в формате pdf

2) практические задания в формате pdf

3) образ виртуальной машины в формате ova


Слайд 6

О компании Тантор

С 2016 года команда Тантор работала на международном рынке поддержки эксплуатации СУБД PostgreSQL и обслуживала клиентов из Европы, Северной и Южной Америки,  Ближнего Востока. Команда Тантор разработала программное обеспечение Платформа Tantor и в последующем создала СУБД Tantor Postgres, основанную на программном коде свободно распространяемой СУБД PostgreSQL.

Платформа Tantor доступна клиентам с 2020 года

В 2021 году компания полностью переориентировались на российский рынок, где сконцентрировала свои основные направления деятельности на проектирование и разработку СУБД Tantor Postgres, а также развитие Платформы Tantor - инструмента управления и мониторинга БД, основанных на PostgreSQL.

Проектирование и разработка продуктов основывается на накопленном многолетнем опыте в эксплуатации высоконагруженных программных систем в государственном и частном секторах.

В конце 2022 года компания вошла в Группу Астра


Слайд 7

Платформа Tantor

Платформа Tantor - программное обеспечение  для управления и мониторинга СУБД Tantor Postgres, любых форков PostgreSQL, кластеров Patroni. Позволяет удобно управлять большим числом экземпляров PostgreSQL.

Относится к классу программных продуктов, в который входит Oracle Enterprise Manager Cloud Control.

Преимущества использования Платформы Tantor:

1. Сбор показателей работы экземпляров PostgreSQL, хранение и обработка показателей, рекомендации по настройке производительности

2. Интуитивно понятный и функциональный графический интерфейс позволяет сосредоточиться на показателях работы экземпляров PostgreSQL

3. Графический интерфейс продуман до мелочей и эстетически приятен, что повышает удовлетворённость от повседневного использования Платформы

4. Графические элементы (размер, цвета, толщина линий, шрифты) оптимизированы для удобства восприятия при долговременной работе

5. Информация, отображаемая Платформой, не перегружена неважными деталями, информация подаётся максимально просто и понятно, что позволяет сосредоточиться на важных метриках работы экземпляров PostgreSQL

6. Автоматизирует рутинные задачи, повышая эффективность работы и снижая вероятность ошибок

7. Управляет не только СУБД Tantor Postgres, но и другими СУБД семейства PostgreSQL

8. Интеграция с почтовыми системами, службами каталогов, мессенджерами, Prometeus, Grafana

9. Простое внедрение: развертывание и ввод СУБД под обслуживание Платформой Tantor с помощью Ansible

10. Гибкое лицензирование: доступны постоянные (без ограничения срока) и срочные (на 1, 2 ,3 года) лицензии.

Платформа Tantor DLH

Тантор Лабс также выпускает Платформу Tantor DLH - программное обеспечение, позволяющее организовать процесс трансформации и загрузки данных по логике Extract Transform Load или Extract Load Transform в СУБД Tantor Postgres для организации хранилищ и витрин данных. Относится к классу программных продуктов, в который входит Oracle Data Integrator.


Слайд 8

СУБД Tantor Postgres

СУБД Tantor Postgres - реляционная база данных семейства PostgreSQL с повышенной производительностью и стабильностью. Выпускается в нескольких редакциях (сборках): BE (Basic Edition), SE (Special Edition), SE 1C, Certified Исполнение 1 (сертифицированные SE и SE 1C) и Certified Исполнение 2 (Сертифицированный BE). Редакция Special Edition высоконагруженных OLTP-систем  и хранилищ данных размерами до 100ТБ. Редакция Special Edition 1C для приложений 1С.

Для всех редакций доступна техническая поддержка, помощь в построении архитектурных решений, миграции с СУБД других производителей. Программное обеспечение Тантор Лабс включено в "Единый реестр российских программ для электронных вычислительных машин и баз данных".

При приобретении СУБД Tantor Postgres бесплатно предоставляется лицензия на Платформу Tantor для управления приобретенными СУБД Tantor Postgres.


Слайд 9

Tantor xData

Программно-аппаратный комплекс (ПАК) Tantor XData обеспечивает рабочие нагрузки большого масштаба и критичности с высокой производительностью и доступностью. Консолидация различных рабочих нагрузок Tantor Postgres SE на машине баз данных XData в корпоративных центрах обработки данных помогает организациям повысить операционную эффективность, сократить объем администрирования и снизить затраты.

Программно-аппаратный комплекс (ПАК) Tantor XData предназначен миграции с комплексов иностранных производителей и обеспечивает аналогичную нагрузочную способность. Является заменой высоконагруженным СУБД размером до ~50Тб на один экземпляр, обслуживающие нагрузку типа OLTP, работающие на программно-аппаратных комплексах иностранных производителей. Для СУБД, обслуживающих хранилища данных размером до ~120Тб на один экземпляр.

Является заменой для тяжёлых ERP от 1C при миграции с СУБД иностранных  производителей. Позволяет консолидировать несколько СУБД в одном ПАК. Может использоваться при миграции с SAP на 1С:ERP.

Предназначен для создания облачных платформ.

Преимуществом при эксплуатации xData является наличие в составе ПАК удобной графической системы мониторинга работы СУБД: Платформы Tantor.

C 2025 года выпускается вторая версия ПАК:

xData 2A - на процессорах x86-64 на основе серверов Aquarius.

xData 2Y - на процессорах x86-64 на основе серверов Yadro.

xData 2B - на процессорах Baikal-S на основе серверов Элпитех.


Слайд 10

Доработка расширений PostgreSQL

Сотрудники Тантор Лабс дорабатывают и создают расширения для СУБД  PostgreSQL.

Репозитории расширений:  https://github.com/orgs/TantorLabs

Список расширений:

1. pg_cluster

2. pg_anon

3. pg_perfbench  MIT License

4. ansible_tantor_agent  MIT License

5. pg_configurator MIT License

6. pg_store_plans

7. ldap2pg PostgreSQL License

8. citus GNU Affero General Public License v3.0

9. wal-g Apache License, Version 2.0 (lzo - GPL 3.0+)

10. odyssey BSD 3-Clause "New" or "Revised" License

11. plantuner

12. pg_orchestrator MIT License

13. pgtools

14. pipelinedb Apache License 2.0


Слайд 11

Конференции PGBootCamp

Тантор Лабс является активным участником организации конференций сообщества PostgreSQL в рамках глобальной инициативы PG BootCamp.

Участие в конференции бесплатно и возможно онлайн и оффлайн: https://pgbootcamp.ru/

Можно стать докладчиком на конференции.

Материалы докладов конференций в открытом доступе: https://github.com/PGBootCamp

Выступления https://www.youtube.com/@PGBootCampRussia

Конференция PGBootCamp проводилась:

Екатеринбург 10 апреля 2025

Казань 17 сентября 2024

Минск 16 апреля 2024

Москва 5 октября 2023

Конференция Tantor JAM проводилась в Москве 19 сентября 2015 года, материалы выступлений:  https://tantorlabs.ru/jam-2025 и https://tantorlabs.ru/jam-2024


Слайд 12


Слайд 13

Возможности Платформы Tantor

Dashboard (приборная панель): готовые графики для наиболее важных метрик:, таких как соединения с базами данных, транзакции, попадание в буферный кэш, WAL, репликация,  контрольные точки, блокировки; CPU, RAM, IO, место в файловых системах, сеть. Группировка и фильтрация метрик по экземплярам и рабочим пространствам.

Конфигуратор: рекомендации по установке значений параметров конфигурации PostgreSQL

Внесение изменений в значения параметров: генерация команд ALTER SYSTEM,  хранение истории изменений, отмена и применение через агентов Платформы к экземплярам

Встроенный анализатор планов запросов от Tensor: В Платформу встроен лицензированный анализатор планов запросов от компании Tensor с рекомендациями исправления запросов и использования индексов, который не требует доступа в интернет и передачи запросов во внешние системы.

Повседневное обслуживание: планирование запуска VACUUM/VACUUM FULL/REINDEX/ANALYZE

Мониторинг и уведомления: установка пороговых значений (предупреждение, критическое значение, значение восстановления) для метрик, настройка уведомлений о превышении, маршрутизация получателей уведомлений по уровню важности

Интеграция с системами уведомлений: Мессенджеры (Telegram/e-mail), Triafly BI (экспорт для расширенной аналитики), SIEM (security information and event management, всего лишь передача уведомлений службе syslog).

Интеграция с системами мониторинга: по REST API (OpenAPI, тестирование на странице Swagger UI)

Интеграция со службами каталогов по протоколу LDAP: любые, если известны параметры, в документации даны примеры для FreeIPA, AldPro, Active Directory

Управление кластерами Patroni: просмотр и изменение параметров, мониторинг репликации и событий failover

Интеграция с системами резервирования: Backman и RuBackup

Аналитика: анализ диагностических журналов PostgreSQL


Слайд 14

Работа с экземплярами PostgreSQL: Обзор

Страница "Обзор" экземпляра - основная, с которой начинают работу с экземпляром. На ней отображаются "плитки" (прямоугольные элементы графического интерфейса) с основными показателями работы экземпляра PostgreSQL.

В левой части показывается меню из 13 пунктов (для реплик PostgreSQL пункт "Обслуживание" не показывается) в 6 версии Платформы. В 5 версии Платформы было 12 пунктов меню, в 6 версии в меню был добавлен пункт: "Мониторинг бэкапов".

Меню закреплено. Если нужно спрятать меню, чтобы освободить пространство на экране, нужно кликнуть на стрелку в прямоугольнике, которая находится сверху справа на плитке меню:

В предыдущих версиях Платформы для "схлопывания" меню до пиктограмм использовался значок кнопки, который располагался внизу меню:  

Набор "плиток" на странице "Обзор экземпляра" нельзя изменить. Это можно сделать на странице "Графики", которая изначально пуста.

https://docs.tantorlabs.ru/tp/6.0/instances/overview.html


Слайд 15

Расширение pg_stat_statements

Для того, чтобы в плашках "5 САМЫХ ДЛИТЕЛЬНЫХ ЗАПРОСОВ" и "СРЕДНЕЕ ВРЕМЯ ЗАПРОСА" отображались данные, нужно, чтобыв параметре shared_preload_libraries

была загружена библиотека pg_stat_statements и в мониторируемых базах данных было установлено расширение: create extention pg_stat_statements;

При добавлении экземпляра в Агент Платформы, проверяется наличие расширений:

root@tantor:~# pmaagent instances add --name 'Patroni1' --environment 'SERVER' --type 'PostgreSQL' --db-host '10.0.2.15' --db-port '5434' --db-user 'pma_user' --db-pass 'pma_user' --db-admin-user 'postgres' --db-admin-pass 'postgres' --patroni-cluster-hosts '172.18.0.2,172.18.0.7,172.18.0.8' --patroni-user 'appuser' --patroni-password 'appass' --patroni-port '8008' --confirm

################################################################################

#                                PMA Agent. Version 6.0.0.                     #

#                           Add PostgreSQL and Patroni instances               #

#                    Local date/time: Thursday, 02-Oct-25 00:14:20 MSK         #

################################################################################

...

-  Please make sure the instance of PostgreSQL that is listening the port [5434]

-  is properly configured, and its client authentication (pg_hba) is consistent.

- Testing database connection using provided host [10.0.2.15]...            [OK]

- Checking if the PostgreSQL instance is in recovery mode...                [OK]

- Checking if the [postgresql-contrib] packaged is installed......          [OK]

- Checking if the [pg_stat_statements] extension is installed......       [WARN]

- Could not detect availability of the extension [pg_stat_statements].

Need to create the extension.

- Checking if the [pg_store_plans] extension is installed......           [WARN]

- Could not detect availability of the extension [pg_store_plans].

Need to create the extension.

- Testing connection to database with provided parameters...                [OK]

...

Набор "плиток" на странице "Обзор экземпляра" нельзя изменить. Это можно сделать на странице "Графики", которая изначально пуста.

По умолчанию, отображаются актуальные данные за 30 минут. Интервал можно изменить:

 можно выбрать интервалы от 30 минут до 7 дней.

Выбрать можно только интервалы: 30 минут, час, 3, 8, 12, 24 часа, 7 дней. Другие интервалы указать нельзя.


Слайд 16

Работа с экземплярами:  Графики

Графики метрик показываются один за другим. Размер графиков не настраивается.

Выбор метрик для отображения на странице "Графики" сохраняется до закрытия окна браузера, то есть до завершения веб-сесcии.

Метрики разбиты на три группы: СИСТЕМА, POSTGRES, ПЛАТФОРМА. Список метрик не меняется.

По умолчанию, отображаются актуальные данные за 30 минут. Интервал можно изменить, как и на странице "Обзор":

 можно выбрать интервалы от 30 минут до 7 дней.

В дополнение, можно выбрать дату и время,

с которого начинается отрисовка на графиках

с точностью до минуты.

Дату можно выбрать не дальше, чем на

7 дней от текущей даты.

Предназначение этих метрик - расследование инцидентов, произошедших в прошлом. При возникновении проблемы, можно воспользоваться графиками для сопоставления параметров на том интервале, когда возникла проблема.

Платформа может сохранять данные метрик дольше 7 дней. Настройка очистки накопленных данных делается на странице https://хост_Платформы/pg-monitor/cleardbdisk

https://docs.tantorlabs.ru/tp/6.0/instances/charts.html


Слайд 17

Работа с экземплярами:  Конфигурация

На странице "Конфигурация" показываются параметры экземпляра PostgreSQL и lдаются рекомендации по установке значений параметров. Если текущее значение параметра отличается от рекомендуемого конфигуратором, встроенным в Платформу Tantor, то на это указывает значок "!=".

Можно создать группу параметров, связать её с несколькими экземплярами и применять значения параметров к ним.

https://docs.tantorlabs.ru/tp/6.0/instances/configurations.html


Слайд 18

Работа с экземплярами:  Обслуживание

Для реплик PostgreSQL пункт "Обслуживание" не показывается. По наличию этого пункта можно отличить ведущий (мастер, основной, primary) кластер от реплики (резервного, standby).

На странице "Обслуживание" всего три действия по обслуживанию баз данных:

1) Зацикливание идентификатора транзакции,

2) Раздутие индексов,

3) Раздутие таблиц.

Для таблиц можно выполнить VACUUM, VACUUM FULL, ANALYZE.

Для индексов REINDEX и REINDEX CONCURRENTLY.

Для зацикливания VACUUM FULL (опционально ANALYZE), VACUUM FREEZE, INDEX_CLEANUP, SKIP LOCKED, DISABLE_PAGE_SKIPPING, TRUNCATE.

Основная задача страницы - показать список объектов и процент раздутия:

В разделе нет возможности послать задачу по расписанию, только немедленно.

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

https://docs.tantorlabs.ru/tp/6.0/instances/maintenance.html


Слайд 19

Работа с экземплярами:  Браузер БД

На странице "Браузер БД" три кнопки у каждой из баз данных: Аудит, SQL-редактор, Схема данных.

https://docs.tantorlabs.ru/tp/6.0/instances/DB_browser.html


Слайд 20

Работа с экземплярами:  Браузер БД -> Аудит

На странице "Браузер БД" три кнопки у каждой из баз данных: Аудит, SQL-редактор, Схема данных.

Страница Аудит - одна из наиболее полезных. На этой странице проверяется структура объектов базы данных, выдаются типичные проблемы. Даются рекомендации по устранению проблем. Можно запустить команды Analyze и Vacuum Full.


Слайд 21

Браузер БД -> SQL-редактор и Схема

На странице SQL-редактора можно выполнять команды SQL, набирая их в окне браузера. При наборе команд есть автоматические подсказки.

На этих страницах можно переключаться между SQL-редактором и Схемой.

Схема показывает структуру выбранной таблицы, последовательности или команду создания представления, подпрограммы (функции или процедуры).

На странице в двух местах показывается название базы данных, с которой создана сессия.

Пользователь, под которым была создана сессия на странице не показывается.

Значком "+" можно открыть несколько окон для редактирования и выполнения запросов.

Значком "x" можно закрыть окна ненужных запросов. Окно единственного запроса не закрывается.


Слайд 22

Работа с экземплярами: Профилировщик запросов

При клике на строку запроса появится страница с деталями выполнения запроса. Под графиком есть 7 точек, кликая на которые можно переключить график на отображение:

Time Query/Second, Calls/Second, Rows/Second, CPU Time/ Second, IO Time/Second, Dirtied Blocks/Second, Temp Blocks(Write)/Second.

Есть выбор интервала отображения от 30 минут до 7 дней:

https://docs.tantorlabs.ru/tp/6.0/instances/query_profiler.html


Слайд 23

Профилировщик запросов -> Планы

Для того, чтобы планы показывались, нужно, чтобы в кластере были установлены библиотеки pg_stat_statements и pg_store_plans:

alter system set shared_preload_libraries =  pg_stat_statements, pg_qualstats, pg_store_plans, pg_prewarm, pg_stat_kcache, auto_explain ;

В базе данных были установлены расширения:

create extension if not exists pg_stat_statements;

create extension if not exists pg_store_plans;

Показываться будут только запросы, длительность которых превышает значение параметра pg_store_plans.min_duration. Значение можно установить командой:

alter system set pg_store_plans.min_duration = '0s';

Профилировщик обеспечивает мониторинг параметров выполнения запросов и их планов в выбранном временном промежутке с использованием скользящего окна. Его цель - проведение анализа и выявление проблемных запросов в базе данных. Профилировщик не только отслеживает параметры выполнения, но и проводит анализ планов запросов, предоставляя подсказки для оптимизации.  Это инструмент, который помогает идентифицировать и решать возможные проблемы с производительностью запросов.

При клике на вкладке "ПЛАНЫ" откроется страница со списком планов:


Слайд 24

Работа с экземплярами: Текущая активность

Кликнув на строку с именем базы данных, откроется список процессов. На странице три вкладки: ВЫПОЛНЕНИЕ, ОЖИДАНИЕ, ЗАБЛОКИРОВАНО. Показывается текст запроса, который выполняется в сессии. Нажав на кнопку "Завершить" сессия будет прервана вызовом функции pg_terminate_backend(PID). Отображаемые столбцы можно выбирать, сортировать строки по столбцам.

Порядок отображения столбцов можно менять перетаскивая их мышкой.

Кнопкой "Заморозить" отключается автоматическое обновление страницы (раз в 5 секунд).

Есть возможность визуализации блокировок в виде

дерева, что позволяет легко определить,

какая транзакция блокирует другие транзакции.


Слайд 25

Репликация и Табличные пространства

В этих двух пунктах меню отображаются некоторые свойства этих объектов.

Физические реплики мониторятся Платформой Tantor и у них есть свои страницы "Работа с экземплярами". Меню "Репликация" у физических реплик отлично от мастера и показывает "СТАТУС" репликации и адрес, откуда реплика получает журналы.

Пример данных "ИНФОРМАЦИИ О ПОДКЛЮЧЕНИИ", при установленных значениях параметров на реплике:

primary_conninfo = 'user=postgres port=5432'

primary_slot_name = 'replica'

По ссылке из поля "Основной экземпляр" можно перейти на страницу управления экземпляром мастера:

https://docs.tantorlabs.ru/tp/6.0/instances/replication.html


Слайд 26

Работа с экземплярами: Настройки мониторинга

На этой странице можно выбрать базы данных, наблюдение за метриками которых будет производиться агентом Платформы Tantor. По умолчанию, выбрана та база данных, которая была указана как база для подключения агента Платформы при его конфигурировании. Остальные базы данных нужно выбирать отдельно. Выбранные базы будут выводиться в пунктах меню: Обслуживание и Браузер БД.

В вкладке "ТРИГГЕРЫ" выдаются 39 метрик, за которыми наблюдает Платформа Tantor. У каждой метрики три пороговых значения: предупреждение, критическое предупреждение, восстановление.

У большинства метрик есть возможность поменять пороговые значения, кликнув на три точки и выбрав "Редактировать".

По умолчанию, мониторинг всех метрик включён. Такие метрики обозначаются зелёной линией. Мониторинг метрик можно отключить. Отключённые метрики обозначаются серой линией:

https://docs.tantorlabs.ru/tp/6.0/instances/monitoring_config.html


Слайд 27

Работа с экземплярами: Расширенная аналитика

Анализируется текстовый диагностический лог кластера. На этой странице меню много ссылок, по которым можно посмотреть то, что выводится в лог кластера, накопительной статистики и то, что собирается расширениями pg_stat_statements, pg_store_plans, auto_explain.

Для сбора данных нужно установить расширения, задать формат названия файла журнала и другие параметры конфигурации кластера PostgreSQL.

Расширенная аналитика разработана российской компанией Тензор и является частью Платформы Tantor.

https://docs.tantorlabs.ru/tp/6.0/instances/pg_monitor/pg_monitor.html


Слайд 28

Работа с экземплярами: Задачи

На этой странице можно добавлять задачи, выполняемые по расписанию и указывать имя и пароль пользователя в операционной системе для запуска команд в linux и имя и пароль для запуска SQL-команд в базе данных. После добавления задачи нужно указать действия, которые будут выполняться. Действиями могут быть команды в linux и базе данных. Имя базы данных указывается при добавлении действия.

Добавив действие, можно запустить задачу немедленно. Для того, чтобы на странице со списком задачи появились кнопки "Включить, Отключить, Запустить сейчас, Пропустить", нужно галочкой выбрать задачу.

https://docs.tantorlabs.ru/tp/6.0/instances/tasks.html

Для страницы конкретной задачи аналогично, чтобы появились кнопки "Включить", "Отключить", нужно выбрать галочкой действие.

https://docs.tantorlabs.ru/tp/6.0/instances/actions.html

Со страницы конкретной задачи можно перейти в "Журнал событий", кликнув на кнопку с такой же надписью.


Слайд 29

Модули Платформы Tantor

Для открытия списка модулей нужно кликнуть на значок четыре квадратика слева. Откроется всплывающее меню со списком модулей. Если выбрать "Все модули", то откроется страница с плашками модулей. В 6 версии Платформы 8 модулей.

"SQL Редактор, Схема данных, Группы параметров, Мониторинг бэкапов, Задачи" могут открываться через страницу экземпляра PostgreSQL.

Модуль "Анализ планов запросов" позволяет вставить план запроса и визуализировать его. План не передаётся на внешние сервера, анализируется программным обеспечением Tensor, встроенным в Платформу Tantor.

"Swagger API" всего лишь открывает в новом окне браузера ссылку https://имя_хоста-Платформы/docs/ в которой высвечиваются страницы Swagger UI, описывающий (документирующий) REST API Платформы. Для доступа к этой странице аутентификация не нужна.


Слайд 30

Оповещения

При нажатии на значок колокольчика появляется всплывающее окно с оповещениями (алёртами, уведомлениями). Если в этом окне кликнуть на "Все оповещения", то откроется страница со списком всех оповещений, в том числе "закрытых" (неактивных). Оповещение можно закрыть вручную, оно может закрыться автоматически при снижении значения метрики ниже уровня "восстановления".

Уведомления настраиваются на странице "Настройки тенанта".

https://docs.tantorlabs.ru/tp/6.0/instances/ug_alerts.html


Слайд 31


Слайд 32

Виды установки Платформы Tantor

Типичная установка программного обеспечения выполняется на один хост или виртуальную машину с операционной системой:

Astra Linux версий 1.7.5+, 1.8

RedOS 7.3+

Centos 7+

Платформа устанавливается в виде набора docker-контейнеров. Минимальные версии, которые должны быть установлены в операционной системе:

docker -v

Docker version 20.10.13

docker-compose -v

Docker Compose version v1.29.2

Типичная установка позволяет обслуживать до 1000 экземпляров PostgreSQL. Для обслуживания большего числа экземпляров Платформу нужно устанавливать в режиме отказоустойчивости. Установку в режиме отказоустойчивости и миграцию на новые версии помогает выполнить техническая поддержка Тантор Лабс. Примерная схема установки описана в документации по 4 версии: https://docs.tantorlabs.ru/tp/4.2/vm_installation.html

При типичной установке миграция на новые версии Платформы Tantor выполняется стандартным инсталлятором с минимальным простоем доступа к Платформе.

Платформа версии 6.0 поддерживает версии PostgreSQL от 10 до 17.x версии. Более новые версии PostgreSQL поддерживаются более новыми версиями Платформы.

Если после перезагрузки хоста Платформа не доступна и страница входы выдаёт "Network error", то достаточно перезапустить контейнер:

docker restart reverse-proxy

и выполнить команду:

sudo crontab -e

которая откроет в редакторе файл /var/spool/cron/crontab/root

в него в самый конец нужно добавить строку:

@reboot /usr/bin/docker restart reverse-proxy

Директива @reboot в конце файла запускает команду перезапуска контейнера reverse-proxy после того, как linux запустится и сетевые интерфейсы будут инициализированы.

Хост Платформы должен иметь полное (Fully Qualified Domain Name) имя, которое должно разрешаться в IP-адрес на хостах, где будут установлены агенты Платформы.


Слайд 33

Агенты Платформы Tantor

Для мониторинга и управления экземплярами PostgreSQL нужно установить программу-агента. Это небольшая, нересурсоёмкая программа, которая запускается в фоновом режиме как служба systemd. Агент, обычно, скачивается в виде пакета deb или rpm с хоста Платформы. Доступ в интернет не обязателен. Агент не использует docker. Инсталлятор использует утилиту systemctl для добавления службы агента в автозапуск. Отсутствие утилиты не препятствует установке агента, он может запускаться любыми способами.

Агент выполняется с правами пользователя операционной системы postgres, что упрощает взаимодействие с экземпляром PostgreSQL и улучшает безопасность, так как не используются права root.

Для корректной работы Платформы на хосте агента должны быть открыты порты TCP 443, 4222 в сторону хоста с установленной Платформой для подсоединения агента.

Агент подсоединяется к Платформе используя имя хоста Платформы. Имя должно разрешаться а IP-адрес.

После того, как агент установлен, Платформа начинает получать метрики, получает возможность  применять конфигурации, выполнять регламентные работы и прочее.

Агент - это легковесное приложение, написанное на языке Golang. Агент отправляет только изменившиеся данные на основе срезов и предвыборки данных, что снижает объем сетевого трафика и нагрузку на Платформу.

Агенты обновляются на новые версии независимо от обновления Платформы, что минимизирует простои в работе Платформы.

Агент при выполнении операций учитывает нагрузку на хост и подождёт перед выполнением операции, если хост перегружен.

Клиентская часть представляет собой веб-интерфейс, который позволяет управлять базами данных в браузере. В адресной строке браузера достаточно ввести FQDN (полное доменное имя) хоста с установленной Платформой. Браузер подсоединится на порт 443, который является стандартным для протокола https. Появится страница аутентификации.

Платформа написана на языке Golang, конфигуратор на Python, фронтенд на JavaScript  (фреймворк Angular). Внутри Платформы используется СУБД Tantor Postgres с расширением PipelineDB для обработки "на лету" потока метрик из экземпляров PostgreSQL, которыми управляет.


Слайд 34

Архитектура Платформы Tantor

Агенты собирают метрики PostgreSQL из pg_stat_*, pg_stat_statements, pg_store_plans, диагностического лога кластера, метрики linux (CPU, RAM, HDD, сеть), выполняют операции обслуживания (VACUUM, ANALYZE, командные файлы) заданные через Платформу администратором и по расписанию, применяют конфигурации и публикуют изменения метрик в шину сообщений NATS.

Шина сообщений (NATS). Асинхронный обмен данными: topics/streams: metrics (телеметрия), commands (управляющие задания), events (события), развязка источников/потребителей, буферизация и горизонтальное масштабирование. Взаимодействие выполняется по протоколу HTTPS.

Keeper (быстры вставки(ingest)/очереди метрик). Принимает и нормализует потоки метрик из NATS, агрегирует и записывает их в хранилище Платформы.

Backend (REST/WebSocket API). Бизнес-логика: каталог экземпляров PostgreSQL, политики  доступа, алёрты, задания, интеграции. Отдаёт данные UI и управляет агентами (через NATS). API позволяет Платформе интегрироваться со внешними системами.

pg_configurator (advice engine) - сервис рекомендаций по параметрам PostgreSQL, профилям нагрузки, автовакуума, настройкам памяти и I/O. Возвращает рекомендации и готовые патчи конфигурации.

OperDB (PostgreSQL, центральное хранилище). Хранит метрики, события, конфигурации, модели рабочих пространств/ролей, историю рекомендаций и выполненных задач. Доступ - через PgBouncer.

Web UI (SPA) - панели мониторинга, профили запросов, журнал событий, конструктор алертов, каталог БД, работа с рабочими пространствами/пользователями и пр.

Интеграции. Мессенджеры (Telegram, Mattermost, e-mail): доставка уведомлений о событиях; Triafly BI: экспорт исторических данных мониторинга для долговременной аналитики и построения произвольной отчетности; отправка событий/инцидентов по Syslog (это называют "SIEM", Security Information and Event Management).


Слайд 35

Типичная Архитектура

Клиент-серверная архитектура: Платформа основана на клиент-серверной архитектуре, в которой клиентская часть представляет собой веб-интерфейс, а серверная часть состоит из нескольких модулей, написанных на языках Golang, Python и JS Angular.

Сбор метрик: сбор метрик осуществляется с помощью Агента. Агент наблюдает за базой данных и операционной системой. Он собирает информацию о метриках из администрируемой базы данных и отправляет их через брокер сообщений NATS на backend-сервер. Агент также имеет возможность отправлять только изменившиеся данные на основе срезов и предагрегации данных для снижения объема сетевого трафика и нагрузки на сервер.

Хранение метрик: метрики хранятся в основанной на PostgreSQL СУБД, которая была дополнена специальными расширениями для обработки большого количества метрик «на лету». Полученные данные сохраняются в OperDB и могут быть распределены по рабочим пространствам.

Сбор и хранение журналов СУБД: с помощью дополнительного сервиса pg-monitor возможно настроить сбор и аналитику журналов СУБД с последующей визуализацией в графическом интерфейсе. Этот сервис является опциональным, так как требует дополнительное защищенное соединение ssh к наблюдаемым экземплярам.

Масштабирование: Платформа поддерживает горизонтальное масштабирование большинства компонентов.

Отказоустойчивость: Платформа обеспечивает отказоустойчивость путем дублирования основных компонентов.

Безопасность: среда исполнения Агента не требует наличия дополнительных открытых сетевых портов. Однако Агенту необходимо иметь сетевое подключение до портов NATS как точки обмена данными с серверной частью Платформы. Также Агент выполняется от имени пользователя postgres, что с одной стороны позволяет иметь возможность глубоко интегрироваться с СУБД, а с другой — минимизирует его влияние не среду операционной системы.


Слайд 36

Масштабируемая архитектура

Масштабируемый вариант архитектуры Платформы используется, если Платформа работает более с чем 1000 экземпляров PostgreSQL. Экземпляры разделены между несколькими OperDB.

Масштабируемость Платформы основана на Python-скрипте Patroni. Patroni позволяет преобразовать OperDB в высокодоступный кластер с автоматическим контролируемым и аварийным переключением. OperDB испольует расширения для обработки большого числа метрик:

sudo docker exec -it operdb psql -U postgres -p 5432 pma -c "\dx"

                List of installed extensions

        Name        | Description                                

--------------------+---------------------------

 btree_gin          | support for indexing common datatypes in GIN

 http               | HTTP client for PostgreSQL

 pg_columnar        | Hydra Columnar extension

 pg_cron            | Job scheduler for PostgreSQL

 pg_framework       | Tantor PG Framework

 pg_stat_statements | track execution statistics of all SQL statements

 pg_store_plans     | track plan statistics of all SQL statements executed

 pg_throttle        | throttle resources usage

 pgcrypto           | cryptographic functions

 pipelinedb         | PipelineDB

 plpgsql            | PL/pgSQL procedural language

 plpython3u         | PL/Python3U untrusted procedural language

 uuid-ossp          | generate universally unique identifiers (UUIDs)

В Платформе Tantor любой архитектуры есть модули:

pg_anon - утилита и расширение для анонимизации (маскировки) данных в управляемых СУБД.

pg-explain - модуль расширенной аналитики.

Swagger - набор инструментов для создания, генерации кода REST-клиентов и документирования REAST-API по спецификации OpenAPI.


Слайд 37

Агент

Агент периодически (с частотой раз в несколько секунд) соединяется с базой данных мониторируемого экземпляра PostgreSQL. Агент использует строку подключения из файла:

cat /var/lib/pma/agent/agent.yml | grep connectionString

connectionString:  postgresql://%s:%s@%s:%d/%s?application_name=%s&default_query_exec_mode=cache_describe

Для связи по API с кластером Patroni агент может аутентифицироваться по сертификату SSL (TLS).

Полученные агентом метрики передаются ПлатформеTantor.

Файл службы агента:

cat /etc/systemd/system/multi-user.target.wants/pmaagent.service

[Unit]

Description=PMA Agent

After=network.target

[Service]

Restart=on-failure

Type=notify

EnvironmentFile=/etc/sysconfig/pmaagent

User=postgres

ExecStart=/usr/sbin/pmaagent

ExecReload=/bin/kill -HUP $MAINPID

[Install]

Агент работает под пользователем операционной системы postgres.

Агент написан на языке Go и использует драйвер pgx, а не libpq. Поэтому, не все параметры, которые работают в libpq, работают в pgx. Драйвер pgx (ParseEnvLibpq) распознаёт только переменные окружения: PGHOST PGPORT PGDATABASE PGUSER PGPASSWORD PGSSLMODE PGSSLCERT PGSSLKEY PGSSLROOTCERT PGAPPNAME PGCONNECT_TIMEOUT PGTARGETSESSIONATTRS. Не работает:

PGOPTIONS="-c log_disconnections=off", также, параметр options нельзя передать в строке соединения.


Слайд 38

Файлы Агента

Исполняемый файл агента: /usr/sbin/pmaagent.

Файл описателя службы агента: /usr/lib/systemd/system/pmaagent.service

Директория агента: /var/lib/pma/agent

В директории лежит конфигурационный файл агента: /var/lib/pma/agent/agent.yml

В конфигурационном файле путь к файлу лога:

path: /var/lib/pma/agent/logs

file: pmaagent.log

указана конечная точка Платформы, куда агент передаёт метрики:

endpoint: tcp://education.tantorlabs.ru:4222

Список параметров командной строки агента: /usr/sbin/pmaagent --help

Пример команд:

completion  Generate the autocompletion script for the specified shell

configure   Configure the pmaagent

deregister  Deregistering the pmaagent

help        Help about any command

instances   Manage instances

register    Registering the pmaagent

start       Start the PMA Agent (default command)

version     Print version information and quit


Слайд 39

Список контейнеров

Список контейнеров из которых состоит Платформа: docker ps

NAMES           PORTS

pg-explain

pg-monitor_dispatcher

pg-monitor_collector

reverse-proxy   80->80, 443->443, 4222->4222, 5666->5666, 8443->8443

keeper

pg_configurator 7777

frontend          80

pg_anon         8000

swagger_ui        80, 8080

backend

nats

pg_bouncer      6432

operdb          5432

tns_db          5432

maindb          5432

Войти в шелл контейнера можно командой: docker exec -it pg_configurator sh

Посмотреть размеры образов: docker images

Посмотреть конфигурацию контейнера: docker container inspect reverse-proxy

Посмотреть лог контейнера: docker logs operdb --tail 10

Посмотреть версию СУБД: docker exec -it tns_db psql -U monitor -p 5432 -d pg-monitor -c "select version()"

Два контейнера содержат СУБД Tantor Postgres SE, один (Тензор) PostgreSQL.

Посмотреть список портов: docker port reverse-proxy

Чтобы команду docker можно было запускалась не только под root: usermod -aG docker astra

usermod -aG docker postgres

Перезапуск Платформы: systemctl restart docker

Перезапуск отдельного контейнера: docker restart pg_monitor_collector

Пересоздание контейнеров без потери конфигурации и данных, собранных в Платформе:

cd /opt/tantor/eco

docker-compose --env-file /opt/tantor/eco/platform.env -f /opt/tantor/eco/docker-compose.yml down

docker-compose --env-file /opt/tantor/eco/platform.env -f /opt/tantor/eco/docker-compose.yml up -d


Слайд 40


Слайд 41

Swagger UI

В Платформе есть интерфейс (API) для взаимодействия с внешними системами по протоколу REST. Платформа имеет методы для работы с с агентами, экземплярами, группами, метриками, тенантами, пользователями, рабочими пространствами. REST-интерфейс описан в формате OpenAPI.

API (Application Programming Interface) определяет правила, каким образом одна программа может запрашивать данные или использовать функционал другой программы. REST (Representational State Transfer) - протокол взаимодействия через запросы по протоколу HTTP методами (GET, POST, PUT, DELETE, INFO и другим) с адресами (конечными точками) представленными в виде URL. OpenAPI описывает структуру JSON или YAML документа, содержащего описание конечных точек REST API, обеспечивает единообразие и стандартизацию документирования REST API.

Swagger использован в Платформе для документирования конечных точек REST Платформы на основе стандарта OpenAPI. Документация Swagger позволяет понять принцип работы API другим разработчикам, которые будут создавать клиентов для взаимодействия с Платформой по протоколу REST.


Слайд 42

Страница Swagger UI

Swagger UI - набор веб-страниц для визуализации конечных точек REST, написанных в спецификации OpenAPI. Swagger UI позволяет отправлять запросы к API прямо из браузера и тестировать авторизацию через токены Платформы. Swagger UI доступен по ссылке https://хоста/docs/ Для доступа к этой странице аутентификация не нужна. Ссылку можно открыть перейдя в любой из тенантов и кликнув на значок "Модули" слева внизу страницы. Значок второй снизу в виде четырёх квадратов.

https://docs.tantorlabs.ru/tp/6.0/admin/swagger_ui.html


Слайд 43

Токены

Токены используются для доступа к функционалу Платформы Tantor по REST API.

Ссылку "Токены" можно открыть перейдя в любой из тенантов и кликнув на значок "Настройки тенанта" в левой панели. Откроется список токенов. Для добавления нового токена нужно нажать красную кнопку "Добавить новый токен". Появится окно с токеном, который нужно скопировать в буфер обмена. После закрытия окна доступа к токену не будет, токен можно будет только удалить. Метка токена не уникальна и может повторяться.

Конечные точки: agents, db_instances, groups, metrics, tenant, users, workspaces, datasets.

Чтобы протестировать доступ к конечным точкам через Swagger API нужно нажать кнопку Authorize и ввести токен, соответствующего конечной точке типа.

Токен типа "установка" нужен для использования методов agents. Для установки Агентов.

Токен типа "метрики" нужен для использования методов metrics.

Токен типа "датасеты" нужен для использования методов datasets. Для Triafly.

Токен типа "публичное API" нужен для использования всех остальных API-методов.

https://docs.tantorlabs.ru/tp/6.0/admin/admin_tokens.html


Слайд 44

Токены

После получения токена, его можно ввести в Swagger UI, нажав кнопку "Authorize". После чего выбрать REST метод, для доступа к которому подходит токен, заполнить значения параметров метода и нажать кнопку Execute. Swagger UI пошлет запрос в Платформу Tantor, получит и отобразит результат.

Вместе с результатом отображается и сам запрос в виде параметров утилиты командной строки curl:

curl -X 'GET' 'https://хост/integration/users?page=1&limit=9'

-H 'accept: application/json'

-H 'Authorization: Bearer eyJhbG...Xysg'

Результат выдается в том формате, в котором его выдаёт служба REST. Пример вывода списка пользователей тенанта, запрошенных токеном тип "публичное API" в формате JSON:

{

...

  "results": [

    {

      "userType": "internal",

      "userID": 3,

      "userName": "user",

      "login": "user@dba1.ru",

      "userEmail": "user@dba1.ru",

      "isActive": true,

      "isDefPass": false,

      "authTypeID": 0,

...

}

Для диагностики Swagger UI показывает заголовки протокола HTTP:

content-length: 765

content-type: application/json

server: nginx  vary: Origin  x-firefox-spdy: h2


Слайд 45

Практика 1

Войдите в Платформу. 

логин: student@student.ru 

пароль: Student123!

Учётные записи пользователей операционной системы:

astra/astra

postgres/postgres

root/root


Слайд 46


Слайд 47

Первый вход в Платформу

Для создания пользователя нужно указать его имя и email. Email будет использоваться для аутентификации пользователя. Имя не уникально, может быть изменено в любой момент.

После создания пользователя, ему можно установить пароль выбрав "Сбросить пароль" в контекстном меню. Пароль может быть автоматически сгенерирован или установлен вручную. Если настроен адрес почтового сервера, то на email автоматически будет выслано письмо с паролем для входа в Платформу. На этот адрес также будут направляться уведомления Платформы. Если посылка письма будет неудачна, то будет выдано предупреждение, которое можно проигнорировать. Пароль при этом будет установлен.

При первом входе нового пользователя будет выдано окно смены пароля, придётся установить новый пароль. Выполняются проверки на "слишком распространённые" пароли, также на сложность пароля. Например, пароль "Student12!" и "Owner123!" слишком распространены, а "Owner12!" и "Student123!" не слишком.

После успешной смены пароля будет предложено прочесть и принять лицензионное соглашение.


Слайд 48

Лицензия на использование Платформы

Лицензию на использование Платформы можно посмотреть в меню "Настройки системы" -> "Лицензия". Сразу после установки Платформы используется 30-дневная пробная лицензия.

Меню "Настройки системы" открывается при клике на значок шестерёнка слева внизу страницы.


Слайд 49

Начальная страница Платформы - список тенантов

Для "владельцев системы" (Платформы); "владельцев тенанта", пользователей тенанта начальной страницей является список тенантов. Внешний вид для владельцев Платформы и пользователей немного отличается. У владельцев есть меню "Настройки системы" (значок шестерёнки слева), выдаётся название OperDb (БД Платформы Тантор), которая указывалась при создании тенанта, в контекстном меню есть пункт "Удалить тенант", "Переименовать", "Расширенная информация".

Значок "шестерёнка" справа вверху над таблицей со списком тенантов - это универсальный элемент таблицы, позволяющий выбирать столбцы для отображения в таблице.

Значок "три точки" справа на каждой строке таблицы -  это универсальный элемент таблицы, по которому вызывается контекстное меню.

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

Тенант (владение) - логический объект, который содержит рабочие пространства (workspaces). В рабочих пространствах содержатся объекты управления: экземпляры, обслуживающие кластера баз данных PostgreSQL и кластера Patroni. Тенанты имеют владельцев и пользователей. В списке владельцев тенанта отображаются владельцы системы.

Число неуспешных задач и бэкапов отображается за последние сутки, от чем написано во всплывающем окне, которое появится, если навести мышь на букву "i" в кружочке:


Слайд 50

Тенант: Расширенная информация

Тенант (владение) - логический объект, который содержит рабочие пространства (workspaces). В рабочих пространствах содержатся объекты управления: экземпляры, обслуживающие кластера баз данных PostgreSQL и кластера Patroni. Тенанты имеют локальных для тенантов владельцев и пользователей, рабочие пространства, экземпляры и собственные настройки.

При добавлении владельца тенанта на странице "Расширенная информация" пользователь, если он не существует в списке пользователей тенанта, будет добавлен в этот список и получит права владельца тенанта.

При удалении владельца системы он полностью удаляется из Платформы, даже если он есть в списке владельцев тенантов.

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

Изменения прав, добавление в группы действуют немедленно, переподсоединяться не нужно. Если пользователь обратится к странице, на которую нет прав выдастся предупреждение, будет выполнен логаут и выдана страница логина.

Добавить пользователя тенанта в список владельцев системы нельзя - будет выдана ошибка "Пользователь с такой почтой уже существует".

Добавить владельца системы в список пользователей тенанта нельзя - будет выдана ошибка "Данный адрес электронной почты уже используется, пожалуйста, попробуйте другой адрес электронной почты".


Слайд 51

Настройки тенанта: Пользователи

На странице "Пользователи" показан список пользователей, в том числе владельцев тенанта, на ней можно добавить пользователя тенанта. Пользователь будет иметь тип "локальный". Ещё есть "внешний". Хоть пользователь и локальный, но его можно добавить в другие тенанты, пароль и имя при этом сохранятся.

Переименовать пользователя можно на странице любого тенанта, где он есть в списке пользователей.

Смена статуса активен/неактивен действует на все тенанты.

При удалении локального пользователя из любого тенанта он удаляется из всех тенантов и Платформы полностью.

Пользователя тенанта можно добавить на странице "Настройки тенанта" (значок "ползунки" на левой полосе меню) -> "Пользователи".

По умолчанию, только что созданный созданный пользователь (если он не в списке владельцев тенанта) не имеет прав на рабочие пространства тенанта.

Права на рабочие пространства и их содержимое даётся группам, в которые можно включать локальных пользователей тенанта. Напрямую пользователям эти права не даются.


Слайд 52

Страница пользователя Платформы

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

Неактивный пользователь при вводе правильного и неправильного пароля получит ошибку "Account suspended. Please contact administrator". Так как отличить правильный или не правильный пароль по этому сообщению нельзя, это защищает от подбора пароля неактивных пользователей, что указывает на безопасность Платформы в мелочах.


Слайд 53

Включение пользователя в группы

Пока пользователь является владельцем тенанта его статус активен/неактивен нельзя поменять и нельзя изменить членство в группах. Соответствующие кнопки и ползунок для владельцев тенанта неактивны.


Слайд 54

Настройки тенанта: Группы

Для выдачи прав на рабочие пространства используются группы внутри тенанта.

Добавить и удалить группу можно на странице "Группы":

Кликнув на группу откроется страница с четырьмя свойствами группы, которые и так видны в списке: название, описание, тип, количество пользователей. Но эта страница примечательна вкладкой: РАБОЧИЕ ПРОСТРАНСТВА, на которой можно добавить группе права на просмотр (read) и редактирование (write) содержимого рабочих пространств. При установке прав на редактирование (write) автоматически устанавливается право на просмотр.

Право на "Редактирование" в предыдущих версиях Платформы называлось "Администратор рабочего пространства".

Право на "Просмотр" в предыдущих версиях Платформы называлось "Пользователь с правами просмотра" (Viewer).

вкладка ПОЛЬЗОВАТЕЛИ просто перенаправляет на страницу "Пользователи".


Слайд 55

Тенант: Рабочие пространства

Рабочие пространства (workspaces) - логический объект, который содержит объекты управления: экземпляры, обслуживающие кластера баз данных PostgreSQL и кластера Patroni. На конкретное рабочее пространство можно дать привилегию группе: просмотр (read) и редактирование (write).

При добавлении рабочего пространства достаточно указать его название, которое должно быть уникальным в пределах тенанта, регистр букв важен. Можно создать несколько рабочих пространств с одинаковым названием, но разным регистром букв: "Edu1" и "edu1".

Пиктограммы снизу плашек более понятны в строковом отображении (следующая страница учебника) обозначают число: экземпляров "список" (2),  невыполненных по расписанию задач планировщика "листок с крестиком" (1), невыполненных бэкапов "перечеркнутый полукруг" (0), число незакрытых оповещений "колокольчик" (4).

При нажатии на значок "три точки" в правом верхнем углу плашки появится всплывающее меню с пунктами: Открыть, Переименовать, Показать оповещения, Показать неудачные задачи, Удалить.

Удалить рабочее пространство можно только, если в нём нет экземпляров, иначе выдастся ошибка:


Слайд 56

Тенант: Рабочие пространства

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

Значок четыре квадратика слева внизу страницы означает совсем другое - он открывает меню со списком модулей.

Цветовая индикация состояния рабочего пространства:

Красная линия - в рабочих пространствах есть экземпляры PostgreSQL и существуют оповещения с уровнем важности "Проблема", касающиеся одного или нескольких экземпляров рабочего пространства.

Желтая линия - в рабочих пространствах есть экземпляры PostgreSQL и существуют оповещения с уровнем важности "Предупреждение", касающиеся одного или нескольких экземпляров рабочего пространства.

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

Если полоска бесцветная (не видна), то в рабочих пространствах нет экземпляров.

При нажатии на оповещения откроется общая страница оповещений тенанта, на которую можно попасть кликнув на значок колокольчика в левой полосе страницы, но с включённым фильтром по названию рабочего пространства.


Слайд 57

Практика 2

1. В меню личного кабинета найдите "Лицензионное соглашение".

2. На стартовой странице создайте два тенанта. 

3. Внутри одного тенанта, создайте минимум три новых рабочих пространства. 

4. Поменяйте название у одного из них.

5. Выполните поиск по имени пространства.

6. Удалите одно рабочее пространство.

7. Посмотрите меню стартовой страницы, и ее функционал.


Слайд 58


Слайд 59

Виды пользователей Платформы Tantor

Владельцы системы (System owners) - полные права на все действия в Платформе во всех тенантах. Не могут быть добавлены как пользователи, в том числе владельцы тенантов. По умолчанию, присутствуют в списке владельцев всех тенантов, которые существовали при создании нового владельца системы. Если создать тенант, то в списке владельцев будет только владелец системы, который создал этот тенант.

Владельцы тенанта (Tenant owners) - локальные пользователи, которые имеют полный доступ к одному или нескольким тенантам и рабочим пространствам и экземплярам внутри этих тенантов. Внутри других тенатов могут не быть владельцами, а быть обычными локальными пользователями, права которым даются только через группы.

Локальные пользователи - не добавленные в список владельцев тенанта пользователи. В других тенантах могут быть добавлены в список владельцев тенанта. Пользователя можно убрать из списка владельцев тенанта, при этом он не будет удалён из Платформы и удаление не повлияет на права в других тенантах.

После добавления пользователя в Платформу как обычного или владельца тенанта, этот пользователь не будет выводиться в списке пользователей других тенантов. Его можно добавить в другие тенанты, это будет тот же самый пользователь Платформы, его имя и пароль не останутся прежними. Однако, находясь в любом тенанте можно изменить имя, пароль, статус активности пользователя и это подействует и будет видно во всех тенантах. Например, пользователь станет неактивен во всех тенантах и не сможет подсоединиться к Платформе. Добавив пользователя в тенант удалить его из этого тенанта и оставить в других где он есть невозможно, он будет высвечиваться в тех тенантах, в которых был когда-либо добавлен.

Удаление пользователя из списка пользователей находясь в любом тенанте полностью удалит пользователя из Платформы и из всех тенантов. Чтобы удалить пользователя нужно установить ему статус неактивен. Чтобы установить статус неактивен, нужно найти его в списке пользователей тенанта, где он не является владельцем и там можно будет поменять статус активен/неактивен.

Внешние пользователи и внешние группы - импортированные по протоколу LDAP в Платформу. После импорта внешние пользователи не связаны с локальными группами и локальными пользователями. Внешние пользователи при входе в Платформу указывают "логин", а не email. В Платформе есть локальные группы. Пользователи могут находиться в нескольких группах с разными правами.


Слайд 60

Группы пользователей

В Платформе есть локальные группы. Пользователи могут находиться в нескольких группах с разными правами. Права на рабочие пространства пользователям (кроме владельцев системы и тенантов) даются только через группы. В группы добавляются одно или несколько рабочих пространств. На каждое рабочее пространство устанавливается привилегия просмотр (read) и/или редактирование (write).

Одно рабочее пространство (workspace) может быть в нескольких группах своего тенанта с разными или одинаковыми правами.

Одного пользователя можно добавить в несколько групп. Будет действовать объединение всех прав этих нескольких групп.

Внешние группы импортируются по протоколу LDAP в Платформу.


Слайд 61

Внешняя аутентификация

В Платформе есть возможность не создавать пользователей Платформы, а импортировать их по LDAP-протоколу. Например, из служб Active Directory, FreeIPA, ALD pro, параметры подключения к которым приведены в документации Платформы Tantor. Для других LDAP-каталогов нужно знать и указать путь к списку пользователей и групп в LDAP-каталоге, шаблон поискового запроса на членство пользователя в группах, название атрибутов класса пользователя: логин, имя, фамилия, email.

Внешние пользователи будут аутентифицироваться внешним LDAP-сервером. Внешние группы также могут импортироваться, единственно их названия и описание не меняются на страницах Платформы.

Тип у таких пользователей и групп будет отображаться как "Внешний", а не "Локальный".

При удалении LDAP-каталога, удаляются все импортированные из него пользователи и группы.

Преимущество внешних пользователей в том,

что их не нужно создавать, управлять паролями и

членством пользователей в группах. Это

выполняется в LDAP-сервере.

https://docs.tantorlabs.ru/tp/6.0/admin/ldap.html


Слайд 62

Страница тенанта

На странице тенанта выводится список рабочих пространств.

У пользователя с правом владения тенантом на странице есть графические элементы:

1) красная кнопка с надписью "Добавить рабочее пространство" ("Add workspace")

2) значок "Настройки тенанта" на левой линейке меню.

Отображение списка в виде плашек (прямоугольников) можно поменять на отображение в виде строк, нажав на значок с двумя полосками справа вверху страницы, слева от красной кнопки.


Слайд 63

Страница тенанта

На слайде показано отображение рабочих пространств в виде списка для обычных пользователей (не владельцев).

Пространства, на которые не даны привилегии не отображаются в списке. Всего есть два вида прав: read и/или write, которые даются через группы пользователей.

Если нажать на значок три точки в правой части строки или плашки рабочего пространства, то откроется всплывающее меню. Для права read в меню три строки: Открыть, показать оповещения, Показать неудачные задачи. Для права write+read (без read не устанавливается) дополнительно выдаются: Переименование рабочего пространства, Удалить рабочее пространство.


Слайд 64

Страница рабочих пространств

На странице рабочего пространства есть три вкладки: КЛАСТЕРЫ, ЭКЗЕМПЛЯРЫБ АГЕНТЫ.

У пользователя с правом write отображается красная кнопка "Добавить экземпляр" (на вкладке ЭКЗЕМПЛЯРЫ) или "Добавить кластер Patroni" (на вкладке КЛАСТЕРЫ). Страница на вкладке АГЕНТЫ не различаются.

При клике на три точки, у пользователя с правом write во всплывающем меню есть дополнительные пункты:

1) Тестовое подключение - агент попытается подключиться к базе данных экземпляра под своей ролью кластера PostgreSQL и выдаст результат во всплывающем окне.

2) Переместить в другое табличное пространство

3) Добавить задачу

4) Добавить метку

4) Браузер БД - открывает всплывающее окно для ввода деталей подсоединения к экземпляру. После нажатия на красную кнопку "Подключиться" откроется страница "Схема данных", с возможностью открыть "SQL-редактор".

5) Удалить.

У пользователя с правом read выдаются пункты

1) Открыть

2) Открыть расширенную аналитику.


Слайд 65

Страница экземпляра

Страница экземпляра - основная, с которой работает администратор баз данных (DBA). У пользователя с правом write на экземпляр, в меню дополнительный пункт "Настройки мониторинга", а также больше графических элементов на других страницах.

В примере на слайде открыт пункт меню "Обслуживание". У пользователя с правом write есть красная кнопка "Собрать данные".

Все отличия нет смысла перечислять и запоминать. Достаточно знать, что пользователь с правом read может просматривать данные по работе экземпляра и работе Платформы с экземпляром (уведомления), но не может вносить изменения в работу экземпляра PostgreSQL.

Право read предназначено для мониторинга, что является частью функционала Платформы Tantor. Право write - для управления кластерами баз данных PostgreSQL и Patroni.


Слайд 66

Практика 3

1. Войдите во вкладку управления пользователями

2. Создайте нескольких пользователей, измените имя пользователя, удалите пользователя.

3. В контекстном меню настроек войдите во вкладку управления группами пользователей, создайте несколько групп пользователей, измените имя группы.

4. Распределите пользователей между группами, соотнесите группы пользователей с рабочими пространствами и уровнями полномочий.


Слайд 67


Слайд 68

Панель управления Платформой

Появилась в 6 версии Платформы, располагается в левой части страниц.

1 - переход к списку тенантов

2 - переход к рабочим пространствам тенанта

3 - журнал событий, открывает страницу с логами событий, относящихся к данному тенанту

4 - открывает окно "Оповещения"

5 - Смена темы, позволяет выбрать одну из тем оформления Платформы:

светлая;

тёмная;

системная, автоматически меняет оформление Платформы на светлое или тёмное в зависимости от темы на вашем ПК.

6 - Помощь, позволяет перейти к Базе знаний и документации Платформы, а также открывает окно с информацией об установленной версии Платформы.

7 - Модули Платформы

8 - Аккаунт

https://docs.tantorlabs.ru/tp/6.0/instances/ug_platform_control_panel.html


Слайд 69

Экземпляры PostgreSQL

На стартовой странице Платформы, которая по умолчанию показывается после аутентификации, выдаётся список тенантов.

Если кликнуть на тенант, то откроется страница с рабочими пространствами, входящими в этот тенант и на которые есть права у пользователя.

На второй вкладке страницы "Экземпляры" выдаются все экземпляры, входящие в рабочие пространства данного тенанта. На этой вкладке можно выделить экземпляры, привязать группу параметров конфигурации (одну на выбор из списка) и синхронизировать (применить значения группы параметров к экземпляру) параметры выбранных экземпляров с их группами параметров.

Экземпляр с привязанной группой отображается зеленой галочкой в столбце "ПРИВЯЗ." Экземпляр с параметрами конфигурации, значения которых синхронизированы с группой параметров отображается зеленой галочкой в столбце "СИНХР." После нажатия на кнопку "Синхронизировать с группой параметров" появится окно со списком параметров: старые, новые значения и нужен ли рестарт экземпляра. Если новые значения неверные, можно отказаться от синхронизации и разбираться с группой параметров.

Цветовой индикатор статуса экземпляра:

красная линия - у экземпляра есть критический алёрт (оповещение);

жёлтая линия - у экземпляра есть предупреждающий алёрт;

зелёная линия - у экземпляра нет алёртов.

https://docs.tantorlabs.ru/tp/6.0/instances/admin_instances.html


Слайд 70

Страница тенанта со списком экземпляров

Если кликнуть на рабочее пространство на странице тенанта, то откроется страница со списком экземпляров в этом рабочем пространстве. На странице три вкладки: КЛАСТЕРЫ (Patroni), ЭКЗЕМПЛЯРЫ (PostgreSQL), АГЕНТЫ (Платформы). В таблице отображаются основные характеристики этих объектов управления.

При нажатии на значок три точки появится контекстное меню. Значения пунктов меню:

"Тестовое подключение" позволяет проверить, может ли Платформа подключиться к экземпляру. Если есть проблемы с подключением, откроется окно с описанием проблемы.

"Добавить метку" - позволяет добавить метку (описание) экземплярs, чтобы идентифицировать его. Например, "Primary" или "для тестов".

Если экземпляр входит в кластер Patroni, то во всплывающем меню добавятся пункты:

"Перезагрузить", "Повторная инициализация", "Перезапустить" и не будет пункта "Переместить в другое пространство". Пункты добавлены так как, если экземпляр не сможет перезапуститься и перезагрузиться, то это будет проблем Patroni. Если экземпляр не входит в кластер Patroni, то при наличии ошибки в параметрах конфигурации экземпляр не запустится и для исправления параметров нужно будет вручную редактировать файлы параметров конфигурации, например, postgresql.auto.conf В Платформе 6 версии Агент Платформы меняет параметры конфигурации командой ALTER SYSTEM SET, которая не работает на остановленном экземпляре. Функционала хранения версий файлов параметров конфигурации нет. В СУБД Tantor Postgres 17.5 появилась утилита pg_disg_setup.py, но утилита хранит только историю параметров расширений. Платформа 6 версии не использует эту утилиту, да и для ванильных версий PostgreSQL её нет.

Проблемы с параметрами могут быть, например, в том, что изменения 8 параметров конфигурации мастера передаются через WAL на реплики, где процесс startup проверяет, что значения 5 параметров на реплике не меньше, чем на мастере. Если это не так, startup останавливает применение WAL, а при остановке экземпляра реплики, экземпляр не запускается. Поэтому, перед остановкой и перезапуском экземпляра PostgreSQL стоит визуально проверить параметры конфигурации хотя бы в postgresql.auto.conf и иметь возможность его редактировать. Другими словами, иметь терминальную сессию с хостом экземпляра, а имея такую сессию легко перезапустить экземпляр в этой сессии.

https://habr.com/ru/articles/903030/

https://docs.tantorlabs.ru/tp/6.0/instances/instances_list.html


Слайд 71

Рабочее пространство: Агенты

На странице АГЕНТЫ можно получить команды для обновления агента до текущей версии Платформы. На то, что версия Агента не соответствует текущей версии Платформы указывает треугольник красного цвета рядом с версией Агента. При использовании Агента более старой версии новый функционал будет отсутствовать. Например, будут отсутствовать пункты меню, которые относятся к новшествам. Старый функционал при этом будет работать.

Цвет вертикальной линии слева у Агентов означает:

зелёный - Агент доступен;

красный - Агент не доступен.

Удалить Агент можно только в том случае, если он не обслуживает ни один экземпляр.

Пункт меню "Список экземпляров" нужен, чтобы определить, какие экземпляры обслуживает Агент.

https://docs.tantorlabs.ru/tp/6.0/instances/ug_agents.html


Слайд 72


Слайд 73

Рабочее пространство: Кластеры Patroni

Кластер баз данных PostgreSQL обслуживается только одним экземпляром PostgreSQL.

Patroni - это программа для управления кластером баз данных PostgreSQL и его физическими репликами. Patroni занимается мониторингом доступности мастера и, в случае его недоступности, автоматически продвигает (promote) одну из реплик до мастера и автоматически начинает восстановление сбойнувшего мастера. Patroni может выполнять автоматическое или ручное продвижение и хранит свои данные в распределенном хранилище конфигурации etcd. Для подсоединения клиентов к кластеру PostgreSQL, обычно, используется балансировщик нагрузки (HAproxy), который подсоединяет клиента к текущему мастеру.

Patroni текущего мастера периодически обновляет статус ключа "leader" в etcd, имеющий срок жизни (TTL, Time To Live). Если срок истёк, реплики соревнуются за роль "leader". Patroni того экземпляра, который создал ключ "leader" выполняет promote реплики до мастера и перенастраивает на остальных экземплярах маршруты потоковой репликации, чтобы реплики забирали WAL с нового мастера. Бывшего мастера пытается восстановить в виде новой реплики утилитой pg_rewind. Также может добавлять ("инициализировать") новые реплики или пересоздавать существующие, используя утилиту pg_basebackup.

Переоценивать Patroni не стоит, качество программного обеспечения PostgreSQL существенно выше, чем etcd и Patroni.

Платформа может управлять экземплярами PostgreSQL, входящими в "кластер Patroni".

Для добавления "кластера Patroni" сначала нужно установить и настроить на несколько узлов (хостов, виртуальных машин):

1) кластер etcd (три хоста с тремя IP адресами)

2) язык Python, так как Patroni написан на этом языке

3) Patroni

4) PostgreSQL.

После запуска и конфигурирования Patroni экземпляры PostgreSQL можно добавить в Платформу Tantor. При добавлении экземпляра нужно установить флажок "Экземпляр является членом кластера Patroni". После добавления экземпляра в списке кластеров появится кластер Patroni.

https://docs.tantorlabs.ru/tp/6.0/instances/ug_clusters_pages.html


Слайд 74

Рабочее пространство: КЛАСТЕРЫ

1 - поле для поиска кластера по столбцу ИМЯ

2 - кнопка красного цвета, открывает окно добавления нового кластера

3 - столбцы с информацией о кластере:

"PATRONI" - версия Patroni;

"КОЛ-ВО ЦПУ" - общее число ядер процессоров на всём кластере Patroni;

"ОБЪЕМ ОЗУ" - общий объём оперативной памяти, доступной на всём кластере Patroni;

"ДИСК ОСНОВНОГО ЭКЗЕМПЛЯРА" - размер занятого/общего дискового пространства на экземпляре мастера (primary, основного, лидера) PostgreSQL;

"ЭКЗЕМПЛЯРЫ" - число экземпляров PostgreSQL в кластере Patroni.

Цвет линии слева отражает состояние кластера Patroni:

зелёная - запущен, работает без ошибок;

жёлтая - используется асинхронная репликация или не работает какой-то экземпляр реплики;

красная - не запущен экземпляр мастера (primary) или не запущена реплика;

фиолетовая - на кластере проводится обслуживание.

Если кликнуть на имя кластера, то отобразится станица кластера Patroni.

Если кликнуть на три точки справа строки, появится всплывающее меню. В этом меню можно поставить Patroni на паузу и перейти на страницу просмотра и редактирования параметров конфигурации экземпляров PostgreSQL "Конфигурация"("Cluster config").


Слайд 75

Страница кластера Patroni: ОБЗОР И УПРАВЛЕНИЕ

На странице две вкладки: "ОБЗОР И УПРАВЛЕНИЕ" и "МОНИТОРИНГ".

1- характеристики кластера

2 - открывает страницу с параметрами конфигурации экземпляров PostgreSQL, входящие в кластер Patroni. Эти параметры конфигурации одинаковые для всех экземпляров.

3 - "Пауза/Обслуживание" - приостанавливает активность Patroni. Во время паузы(обслуживания)  Patroni не будет пытаться менять роли экземплярам, переинициализировать кластера PostgreSQL.

4 - состояние экземпляров PostgreSQL. Один из экземпляров - primary (основной, ведущий, мастер), остальные экземпляры - физические реплики.

"TTL" - время в секундах. Если по истечении этого времени мастер не обновит статус, начнутся выборы нового мастера (лидера).

По нажатию на три точки справа появится всплывающее меню:

Перезагрузить (Reload) - отправляет экземпляру команду reload, перечитать файлы параметров конфигурации без остановки экземпляра;

Повторная инициализация (Reinitialize) - заново инициализирует экземпляр;

Перезапустить (Restart) - останавливает и заново запускает экземпляр;

Переключиться (Switchover) - делает мастером мастер.

Ограничения для "Переключения":

Если есть синхронная реплика (параметр synchronous_mode = true), то переключиться можно только на нее. Если синхронной реплики нет (параметр synchronous_mode = false), то можно выполнить переключение на любую работающую реплику.


Слайд 76

Страница кластера Patroni: МОНИТОРИНГ

На вкладке "МОНИТОРИНГ"

Изменение ролей экземпляра - график, показывающий историю смены ролей экземпляров. На этом графике можно увидеть, как менялись роли экземпляров кластера за выбранный период. Период можно выбрать справа вверху страницы от 30 минут до 7 дней. если провести мышкой по графику, появится всплывающее окно, в котором будут отображаться роли экземпляров.

История изменений статуса узла кластера - таблица с историей изменения ролей (мастер или реплика) за отображаемый на странице период времени.


Слайд 77

Страница кластера Patroni: Конфигурация

На странице "Конфигурация" (Cluster config) кластера Patroni две вкладки: "ПАРАМЕТРЫ PATRONI" и "ПАРАМЕТРЫ POSTGRESQL".

При переходе на страницу появляется всплывающее окно с предупреждением, что Платформа считывает только те параметры, которые действуют, а не параметры из файлов конфигурации. Если поставить галочку в чекбоксе "Больше не показывать", то окно не будет автоматически появляться при переходе на страницу. Окно можно вернуть, на жёлтый треугольник левее значка фильтрации (воронки).

Если значения параметров на экземплярах PostgreSQL различаются, то такие параметры не показываются. Пример параметров, которые будут отличаться на мастере и репликах: transaction_read_only и in_hot_standby (на репликах on, на мастере off), primary_conninfo, primary_slot_name и не только.

Параметры Patroni, которые нельзя отредактировать через Платформу:

pg_ident, pg_hba, ignore_slots, slots, pause, config_file, data_directory, transaction_read_only.

Если поменять значения параметров, кнопка "Применить настройки" станет активной и её можно будет нажать. По нажатии на кнопку появится окно со списком новых значений и кнопкой "Применить и перезагрузить".


Слайд 78

Страница кластера Patroni: Применение изменений

Если поменять значения параметров, кнопка "Применить настройки" станет активной и её можно будет нажать. По нажатии на кнопку появится окно со списком новых значений и кнопкой "Применить и перезагрузить".

"Перезагрузить" (Reload) означает перечитать файлы конфигурации (pg_reload_conf()). Параметры, которые требуют перезапуска экземпляра ("перезапустить кластер") будут только сохранены в файле postgresql.auto.conf, экземпляры перезапускаться не будут.

Через Платформу можно перезапустить по одному экземпляры PostgreSQL, если они входят в кластер Patroni, но лучше перезапускать вручную в командной строке хоста экземпляра.


Слайд 79

Практика 4

1. Изучите представленную информацию о находящихся здесь экземплярах, и агентах (см. одноименные вкладки).

2. Изучите меню с опциями Экземпляра, откройте Экземпляр, выполните проверку (тест) соединения экземпляра и СУБД, посмотрите расширенную аналитику, выполните команду "добавить метку", переместите экземпляр в другое рабочее пространство.

3. Войдите во вкладку "Агенты", изучите представленную информацию. Откройте меню с опциями Агента, посмотрите список с экземплярами, возможно какой-то Агент нуждается в обновлении.

4. Войдите в систему под пользователями с разными уровнями полномочий, изучите, как изменились возможности системы.


Слайд 80


Слайд 81

Страница Обзор

Страница "Обзор" экземпляра - основная, с которой начинают работу с экземпляром.

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

Чуть ниже отображается IP адрес и порт экземпляра PostgreSQL: 10.0.2.15:5432

Ниже -  тип, сборка и версия СУБД

Ниже - метка и значок карандаша, кликнув на который можно отредактировать метку.

У двух плиток на слайде отображается красный треугольник, который на странице браузера немного мерцает:        , при наведении курсора на треугольник появляется окно с текстом: "Нажмите, чтобы показать предупреждения". При клике на треугольник откроется страница уведомлений. Красный цвет означает "проблема", жёлтый - "предупреждение":

При наличии проблем и предупреждений на плитке появляется линия слева, цвет которой такой же, как у треугольника.

https://docs.tantorlabs.ru/tp/6.0/instances/overview.html


Слайд 82

Страница Обзор

На этом слайде у третьей плитки появился желтый прямоугольник и жёлтая линия. Добавилось предупреждение о том, что оперативной памяти стало мало.

На плитке УВЕДОМЛЕНИЯ (справа внизу) добавилась строка с этим предупреждением. Строка добавлена над предыдущими оповещениями с уровнем важности "Проблема".

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

Выпадающее окно/Popout - откроется всплывающее окно с увеличенным графиком. В этом окне могут быть настройки отображения графика, а также диапазоны отображения данных от 30 минут до 7 дней.

Инфо/Info - всплывающее окно с техническим описанием того, что отображается на графике и ссылкой "Подробнее", по нажатию на которую в отдельном окне браузера появится страница Базы знаний Тантор о том, что отображается на графике.

База знаний Тантор установлена локально в Платформе и не требует доступа в интернет. База знаний доступна по адресу https://хост_Платформы/know_base/ru/

Ссылка на Базу знаний Тантор есть под значком "?" на левой вертикальной панели меню.


Слайд 83

Страница Обзор -> УВЕДОМЛЕНИЯ -> Подсказки системы

На плитке УВЕДОМЛЕНИЯ две вкладки: "Оповещения" и "Подсказки системы". Активная вкладка отображается чёрным цветом, неактивная серым. Серый цвет путает: кажется, что вкладка некликабельна. Однако, кликнуть на вкладку серого цвета можно, содержимое плитки поменяется и высветятся рекомендации.

На вкладке "Подсказки системы" также есть текст серого цвета, но он уже прямо призывает:  "Нажмите, чтобы увидеть необходимые изменения". При клике на текст, появится всплывающее окно "Рекомендации по конфигурации".

Рекомендации можно скопировать в буфер обмена или записать. Эти рекомендации не видны на странице "Параметры" в рекомендованных значениях, которая открывается через пункт меню "Конфигурация", не видны ни на странице "Оповещения", ни на "Журнал событий", то есть кроме всплывающего окна рекомендации больше нигде не видны.

Поэтому, записав рекомендуемые значения, их можно ввести вручную на странице "Конфигурация":

Значение параметра pg_statements.max из рекомендаций соответствует рекомендуемому конфигуратором Платформы. Значение pg_statements.track в конфигураторе отсутствуют. Рекомендации конфигуратора консервативны.


Слайд 84

Оповещения (сообщения, уведомления)

По нажатию на красную кнопку "Посмотреть все сообщения" откроется страница "Оповещения".

Также, на эту страницу можно перейти кликнув на значок колокольчика на левой панели меню и в открывшемся всплывающем окне кликнуть на текст "Все оповещения". Однако, при таком переходе  может быть установлен фильтр на сообщения. Например, будут показываться сообщения со статусом = "открыто". На наличие фильтра укажет красный кружок рядом со значком "воронки" в правом верхнем углу страницы "Оповещения":

Число в кружке - это количество условий фильтрации.

При клике на значок воронки откроется всплывающее окно, в котором можно поменять условия фильтрации:


Слайд 85

Экземпляр: Сессии

При нажатии на три точки в верхней части плитки, появится меню с пунктом "Выпадающее окно", нажав на который появится всплывающее окно (панель) с графиком большего размера, чем на плитке.

В окне Сессии показывается текущее число сессий, максимальное, которое определяется параметром конфигурации PostgreSQL max_connections. Изменение этого параметра требует рестарт экземпляра. Значение параметра на репликах должно быть не меньше, чем на мастере, иначе реплика приостановит применение WAL. Значение по умолчанию 100.

В примере на слайде показана работа экземпляра с запущенным тестом с 50 сессиями:

pgbench -T 6000 -P 10 -c 50

Цвета линий графика показаны в верхней части окна: активные сессии - синий (в среднем, 10), ожидающие (в среднем, 40) - красный. Если кликнуть на другие типы сессий, она появятся на графике. В примере на слайде показаны простаивающие (idle) сессии и простаивающие в открытой транзакции (Idle in transaction).

При выборе в меню "(i) Инфо", появится описание того, что отображается в окне:


Слайд 86

Экземпляр: Транзакции

В окне транзакции показываются зафиксированные и прерванные (отмененные, откаченные) транзакции.

В примере на слайде показывается график изменения TPS стандартно теста, запущенного командой: pgbench -T 6000 -P 10 -c 50

но с открытым моментальным снимком в сессии с той же базой данных:

begin transaction isolation level repeatable read;

select 1;

На графике видно, что сначала TPS около 670, потом довольно быстро снижались до небольших значений. После того как транзакция была завершена и моментальный снимок исчез, горизонт базы данных перестал удерживаться и TPS увеличился до значений около 400.

Желтая и красная линии - это предустановленные значения для триггера xact_rollback (Rollbacked transactions) по числу транзакций, откатываемых в секунду:


Слайд 87

Экземпляр: Ввод/Вывод на диск

Число показывает последнее значение скорости передачи данных между диском и оперативной памятью.

График показывает скорость передачи данных между диском и оперативной памятью за выбранный интервал. В отображается два графика для:

Read - синий цвет, скорость чтения с диска.

Write - красный цвет, скорость записи.


Слайд 88

Экземпляр: Ввод/Вывод блоков

Показывает последнее значение скорости, с которой процессы экземпляра отправляют блоки (по умолчанию 8Кб) из буферного кэша экземпляра PostgreSQL в страничный кэш linux или запрашивают чтение блоков файлов данных (доступ к которым идёт через буферный кэш).

В окне отображается график для следующих метрик:

Dirtied (голубой) - число блоков в кэше буферов, содержимое которых поменялось с последней завершенной контрольной точки или загрузки в буферный кэш.

Read (красный) - число чтений блоков из буферного кэша.

Write (синий) - число изменений блоков в буферном кэше.

 Temp Read (оранжевый) - число чтений блоков из локальных кэшей серверных процессов, которые используется для временных таблиц, индексов.

 Temp Write (зелёный) - число изменений блоков в локальных кэшах серверных процессов, которые используются для временных таблиц, индексов.

На графике можно убрать или добавить отображение указанных метрик, масштаб графика при этом может измениться. В примере на слайде убран график красного цвета и зеленый график Dirtied проявил значения около 40. При отображении красного графика зеленый не был заметен. На красном графике значения около 16000 блоков в секунду и постепенно увеличиваются, при том, что TPS в то же время уменьшались. Серверным процессам приходилось читать всё больше блоков таблиц, чтобы добраться до актуальных версий.

После завершения транзакции, удерживавшей моментальный снимок, был всплеск записи и скорость чтения блоков уменьшилась до 20000 блоков в секунду.


Слайд 89

Экземпляр: Нагрузка CPU

НАГРУЗКА ЦПУ X4. после "X" в названии плашки число ядер, например, «НАГРУЗКА ЦПУ X4» - четыре ядра.

Показывает популярную (среди администраторов linux) метрику "CPU load".

На плашке отображается метрика load1 - нагрузка за последнюю минуту.

В окне графики для трёх метрик:

load1 - загрузка за интервал в 1 минуту;

load5 - загрузка за за интервал в 5 минут;

load15 - загрузка за за интервал в 15 минут.

Цвет линии на левом крае плашки:

Красный - проблема. Загрузка процессора превысила пороговое значение. Значение настраивается на странице триггеров.

Желтый - предупреждение:


Слайд 90

Экземпляр: Доступно ОЗУ

Плашка показывает текущее значение объема доступной оперативной памяти.

На плашке показывается "Объем ОЗУ" (11.5Гб) - общий объем памяти в linux.

На графике отображаются:

Available - оценка объема памяти, доступной для приложений без своппинга;

Buffers - память, используемая буфеами ядра linux;

Cached - память, используемая файловым кэшем linux и SLAB.

Цвет линии на левом крае плашки:

Красный - проблема.

Желтый - предупреждение:

Пороговые значения 40/20/50 можно поменять на 30/10/40 или 50/30/60:


Слайд 91

Экземпляр: Размер данных

Плашка показывает сумму размеров всех баз данных кластера PostgreSQL.

В размер не входят WAL-файлы и другие служебные файлы.


Слайд 92

Экземпляр: Размер диагностических логов

Плашка показывает размер файлов диагностических логов кластера PostgreSQL.

Это не размер директории pg_wal с WAL-файлами.


Слайд 93

Экземпляр: Среднее время запроса

Средняя длительность выполнения всех запросов.

Пример показывает как увеличивалось время запросов теста pgbench при удержании горизонта базы данных. После снятия удержания, время выполнения запросов уменьшилось.


Слайд 94

Экземпляр: 5 самых длительных запросов

"TOP 5 Queries" - среднее время выполнения пяти самых долгих запросов и "others" (остальных запросов).

При нажатии на плашке на запрос, появляется всплывающее меню с пунктами: "скрыть график" (скрывает линию запроса на графике), "подробнее" - открывает страницу профилирования этого запроса.


Слайд 95

Экземпляр: % внеочередных контрольных точек

% КОНТР. ТОЧЕК - % внеочередных контрольных точек. На плашке показывается процент контрольных точек, который был выполнен НЕ по времени, а "по требованию" (required). Такое происходит, если экземпляр стал генерировать большой объем журнальных данных так, что если выполнять контрольную точку по времени, то был бы превышен объем, заданный параметром max_wal_size. Чтобы не допустить этого, контрольная точка по времени, а она в 90% вероятности выполняется (если параметр checkpoint_completion_target = 0.9), завершается без задержек (с максимальной скоростью и нагрузкой на I/O) и начинается контрольная точка по требованию.

Если такое происходит нечасто и вызвано загрузками или реорганизацией данных, то это нормально. Если процент внеочередных (не по времени) контрольных точек всегда больше нуля, то стоит увеличить значение max_wal_size. Значение checkpoint_timeout уменьшать не стоит, оно выбирается из других принципов.

На графике отображается:

Automatic - контрольная точка, созданная автоматически.

Required - созданная суперпользователем вручную.

Если вынужденные (Required) контрольные точки составляют более 25% в час, по умолчанию будет создано предупреждение; если более 50% - сообщение о проблеме.

Пороговые значения выбраны эмпирически, чтобы уменьшить вероятность возникновения предупреждений при наличии массовых загрузок или типичных задач по реорганизации данных.

Оповещение автоматически закроется, когда процент внеочередных контрольных точек станет меньше 10%:

Пороговые значения можно поменять с 50/25/70 на: 50/25/70 или 90/75/100.


Слайд 96

Экземпляр: Временные файлы

временные файлы - объем, записанный на диск при выполнении запросов, включая работу как с временными таблицами, так и сохранение данных при нехватке памяти (параметры для каждого процесса, а не для экземпляра: work_mem, hash_mem_multiplier, maintenance_work_mem, temp_buffers). Ограничение на размер временных файлов для каждого процесса задаётся параметром temp_file_limit. Временные файлы создаются в табличных пространствах, названия которых можно указать в параметре temp_tablespaces, минимальный размер временных файлов, создание которых будет логироваться в диагностический журнал, задаётся параметром log_temp_files.

Плашка показывает скорость увеличения размера временных файлов.

График также показывает скорость увеличения размера временных файлов (Temp files size), а не общий размер временных файлов.

Триггер также установлен на скорость увеличения размера временных файлов:

Пороговые значения можно поменять с 1/10/0.8 на: 0.5/5/0.3 или 10/50/5.


Слайд 97

Экземпляр: Временные файлы

Пример команд для тестирования создания и увеличения размера временных файлов:

create temp table temp1 (id integer);

insert into temp1 select * from generate_series(1, 20000000);

select pg_table_size('temp1');

 pg_table_size

---------------

     725155840

Всплески на графике - вставки по 20млн. строк во временную таблицу. Размер временной таблицы и её временных файлов будет расти. После первой вставки оповещение не создавалось, так как вставки проходили в локальный кэш буферов процесса.

В примере на слайде превышение скорости увеличения размера временных файлов таблицы длилось 2 минуты. Через 5 минут после окончания (через 7 минут после начала возникновения оповещения) увеличения размера временных файлов оповещение было автоматически закрыто.

Интервал времени восстановления - 5 минут.


Слайд 98

Экземпляр: Сеть

График показывает сетевой трафик выбранного сетевого интерфейса. Выбрать интерфейс можно с помощью угловых стрелок на плашке, а в окне графика - в правом верхнем углу.

В окне выдаются графики Received (голубой цвет линии) и Sent (красный цвет линии) в kB (или более крупных единиц измерения) в секунду.

Кроме рассмотренных в этой главе, ещё имеются плашки и графики:

% блоков из буфера - процент "попадания в буферный кэш экземпляра" (cache hit). У метрики hit_read_ratio есть пороговые значения: 90/80/95 и они не меняются.

зацикливание (wraparound). Прогресс-бар показывает число использованных номеров транзакций в текущем цикле. Маркер на индикаторе покажет ожидаемое начало аварийного автовакуума. Для СУБД с 32-битным счетчиком (ванильный PostgreSQL, Tantor BE, Tantor Free) число транзакций в цикле небольшое, около 4млрд. Для СУБД с 64-битным счетчиком (Tantor Postgres SE и SE1C), зацикливание не актуально. У этой плашки нет графика.

репликация - графика нет, на плашке может отражаться зелёный кружок - репликация работает без сбоев, красный треугольник - проблема с репликацией, серый кружок - реплик нет.

статистика автовакуума - число активных рабочих процессов автовакуума (autovacuum workers). Число процессов рассчитывает процесс autovacuum launcher, но это число ограничено значением параметра autovacuum_max_workers.


Слайд 99

Практика 5

1. Ознакомьтесь с описанием каждого окна страницы Обзор экземпляра.

"Обзор"/"Overview", раскройте "Выпадающее окно"/"Popout",

проанализируйте представленную информацию.

2. Измените временной интервал отображения информации,

проанализируйте результаты.

3. В окне "5 самых длительных запросов"/"TOP 5 total query time", внизу,

кликните на один из запросов и откройте "Подробнее"/"Details", изучите

представленную информацию.

4. Посмотрите число сетевых интерфейсов.


Слайд 100


Слайд 101

Оповещения

Для уведомления о том, что происходит в Платформе используется Журнал событий.

Для уведомления о том, что происходит в работе экземпляров PostgreSQL или хостов используются Оповещения (Alerts).

Оповещения связаны с тенантом. После выбора тенанта в левом вертикальном меню появляется значок колокольчика, при клике на который открывается всплывающее окно с открытыми  оповещениями, внизу страницы ссылка "Все оповещения", при клике на которую откроется страница "Оповещения" со списком оповещений текущего рабочего пространства.

Если есть не закрытые оповещения, то на колокольчике в красном кружке отображается их число.

Колокольчик с числом оповещений всегда остается на том же месте, пока вы находитесь в тенанте, какую бы страницу Платформы вы не открыли, благодаря этому, вы не упустите появление новых оповещений.

Оповещения нужны для быстрого уведомления о проблемах и предупреждениях.


Слайд 102

Страница со списком оповещений

Попасть на страницу Оповещения можно с других страниц Платформы, а не только кликнув на значок колокольчика. Кликнув на цифру в столбце ОПОВЕЩЕНИЯ на странице тенанта; нажав на красную кнопку "Просмотреть все сообщения" на странице Обзор экземпляра. В этой плашке показываются только оповещения, относящиеся к выбранному экземпляру. При открытии страницы со списком оповещений может быть установлен фильтр на оповещения, но его можно убрать.

Также можно переходить на страницу с конкретным оповещением кликнув на полоску или красный или треугольный значок в плашках на странице "Обзор" экземпляра.

В примере на слайде страница "Оповещения" была открыта через значок колокольчика, поэтому был выставлен фильтр по 2 параметрам (красный кружок у значка воронки справа вверху страницы): по рабочему пространству и статусу "открыто". Нажав на значок воронки можно поменять условия фильтрации сообщений.

Критичность может быть: Предупреждение, проблема, Не определено, ОК.

Статусов может быть пять: один Открыто и Закрыто одним из четырёх способов.

Кроме фильтрации можно отсортировать оповещения, кликнув на название столбца таблицы со списком оповещений.

Нажав на три точки, появится меню с пунктами "Подробнее" и "Закрыть".


Слайд 103

Страница оповещения: ОБЗОР

При нажатии в списке оповещений а строку или выборе в меню "Подробнее" или при клике на треугольный значок на странице Обзор экземпляра откроется страница с описанием конкретного оповещения.

Если выбрать "Закрыть", то появится всплывающее окно, где опционально (необязательно) можно написать текст о причине закрытия или закрыть без комментария.

На странице три вкладки: ОБЗОР, СВЯЗАННЫЕ ОПОВЕЩЕНИЯ, ЖУРНАЛ СОБЫТИЙ.

 

В Платформе есть возможность увидеть список всех типов событий, которые могут

вызвать оповещения. Для этого можно перейти в пункт меню "Настройка Мониторинга" (Monitoring Config) и перейти во вкладку "Триггеры". Пороговые значения некоторых их триггеров можно  редактировать. Обычно, предлагается три комбинации пороговых значений, чтобы регулировать (повышать или снижать) чувствительность к событию.

Агент постоянно собирает метрики с наблюдаемой базы данных и отправляет их в Платформу, где они обрабатываются. Оповещения срабатывают, если метрики по тем или иным параметрам превышают пороговые значения. Превышение этих значений выявляет триггер.


Слайд 104

Страница оповещения: СВЯЗАННЫЕ ОПОВЕЩЕНИЯ

На вкладке СВЯЗАННЫЕ ОПОВЕЩЕНИЯ после описания оповещения есть три вкладки ПО ВРЕМЕНИ, ПО ЭКЗЕМПЛЯРАМ, ПО РАБОЧИМ ПРОСТРАНСТВАМ.

По этим характеристикам высвечиваются оповещения. Однако, для долгоживущих оповещений (на слайде 1 день 1:28:14) выдается много оповещений, логически не связанных с исходным. Избежать этого нельзя, так как есть опасность отфильтровать связанные оповещения, поэтому выдаются все оповещения: за интервал пока оповещение было открыто, возникших на том же экземпляре или экземплярах рабочего пространства.


Слайд 105

Страница оповещения: ЖУРНАЛ СОБЫТИЙ

На вкладке ЖУРНАЛ СОБЫТИЙ после описания оповещения выводится история статусов оповещения. В примере на слайде оповещение было закрыто вручную.

При закрытии в поле "решение (необзязательно)" был вставлен текст, но на вкладке ЖУРНАЛ СОБЫТИЙ текст не выводится. Видно только, что оповещение "Resolved by student", где student - имя пользователя Платформы.

Текст решения выводится только на вкладке ОБЗОР в поле "комментарий".

Поменять статус с "закрыто" на "открыто" нельзя.


Слайд 106


Слайд 107

Интеграция со службами сообщений

О появлении оповещений можно посылать уведомления. В Платформе 6 версии поддерживается передача уведомлений:

1. по e-mail

2. в чат Telegram

3. в чат Mattermost.

Это позволяет оперативно получать информацию о происходящих событиях от Платформы.

https://docs.tantorlabs.ru/tp/6.0/admin/admin_reports.html


Слайд 108

Настройки тенанта: Почтовый сервер (SMTP)

Подключение к почтовому серверу настраивается:

1. на странице "Настройки системы" - для отправки владельцам системы писем о выдаче прав владельца системы или о смене пароля владельца системы.

2. на странице "Настройки тенанта" - для отправки писем о событиях тенанта: сообщений о смене пароля пользователя с правами владельца тенанта, локальных пользователей, а также уведомлений о возникновении оповещений.

На страницах указываются детали подсоединения к почтовому серверу по протоколу SMTP (Simple Mail Transfer Protocol). По этому протоколу отсылаются почтовые сообщения уведомлений.

Для добавления почтового сервера нужно ввести имя его хоста, порт для протокола SMTP (обычно 25 или 465), имя для аутентификации отправителя и пароль. Галочка SSL/TLS не играет роли, так как Платформа отправляет письма, переключая почтовую сессию на протокол TLS.

После добавления деталей почтового сервера, можно протестировать отправку письма. Для этого нужно нажать на кнопку "Протестировать", в появившемся окне указать e-mail получателя письма.

Если почтовый сервер примет сообщение, то на несколько секунд появится зелёное окно с текстом "Тестовое письмо успешно отправлено". Это будет означать, что настройка SMTP сервера выполнена корректно. При любой ошибке отправки письма (неверные имя/пароль, сервер использует протокол TLS 1.0, сервер не понимает команду STARTTLS) выдаётся красное всплывающее окно с одинаковым текстом "Не удалось проверить подключение к SMTP-серверу" без указания причины.

https://docs.tantorlabs.ru/tp/6.0/admin/smtp.html


Слайд 109

Интеграция со службами сообщений

Можно посылать уведомления разной важности на разные e-mail. Для этого нужно добавить два e-mail и добавить правила. В правиле к первому e-mail указать уровень важности(критичности) "Предупреждение", а в правиле ко второму e-mail уровень важности "Проблема". Канал передачи (e-mail) можно приостановить и активировать. В приостановленных каналах менять правила нельзя, в активированных можно. Удалить можно любой канал.


Слайд 110

Отправка тестового письма

Для отправки тестового письма на странице "Настройки тенанта": должен быть сконфигурирован "Почтовый сервер (SMTP)".

Кликнув на три точки справа в строке, появится контекстное меню с пунктом "Отправить тестовое письмо". Нажав на него, будет сделана попытка отправки почтового сообщения. Если сообщение будет успешно принято SMTP-сервером, то появится окно "Подключено успешно".

https://docs.tantorlabs.ru/tp/6.0/admin/reports_email.html


Слайд 111

Шаблоны писем

В Платформе 6 версии есть 11 шаблонов писем для уведомлений о событиях тенанта. Шаблонов для писем на странице "Настройки системы" нет. Названия шаблонов:

Оповещения

Добавлено ЦПУ

Восстановление пароля

Подтверждение настроек email

Новый пользователь

Проблема с оплатой

Anonymizer Operation Status

Регулярные уведомления

Сброс пароля

Owner permissions granted for Tenant

User permissions granted for Tenant.

Список шаблонов не расширяется (в него нельзя добавить еще один шаблон).


Слайд 112

Редактор шаблона писем

Можно отредактировать шаблоны писем.

В правой части списка мы видим команды, можем нажать на "Предпросмотр" того, как будет выглядеть тело письма.

Можно отредактировать тему (Subject) письма. В заголовке нельзя использовать "ПОЛЯ ШАБЛОНА" - переменные замены.

Переменные замены будут заменены текстом с данными, которые были доступны Платформе на момент отправки письма.

Формат тела письма - HTML.


Слайд 113


Слайд 114

Посылка сообщений в канал Telegram

Для настройки и корректной работы интеграции с Telegram нужен доступ к хосту telegram.org из Платформы.

Оповещения посылаются по всем активным каналам (трёх типов e-mail, telegram, mattermost) в соответствии с правилами, установленными для каналов. То есть получая уведомления по e-mail, сконфигурировав telegram уведомления будут отправляться и на e-mail и в telegram-канал. Правила позволяют настроить передачу сообщений по рабочим пространствам и уровням важности (WARNING и PROBLEM). Параметров "тип сообщений" или "'экземпляр PostgreSQL" в правилах нет.

Если правил нет, то уведомления не посылаются.

"Приостановить" в выпадающем меню - отключит отправку уведомлений по каналу. Статус канала будет отображаться как "Отключено", а не "Активно".

https://docs.tantorlabs.ru/tp/6.0/admin/reports_telegram.html


Слайд 115

Создание канала Telegram

В приложении Telegram нужно:

Создать частный канал (НЕ группу и НЕ чат).

В приложении Telegram выберите "Создать канал". Введите имя канала. В окне "Типа канала" отобразится "Частная" и ссылка-приглашение. Частный канал означает, то добавляться в него смогут только по этой ссылке. Эта ссылка Платформой не используется, её можно передавать пользователям Платформы, которые хотя получать уведомления. Пользователь Telegram, создавший канал является его владельцем, может добавлять/удалять администраторов канала и удалять канал. Если нажать "Далее", то появится окно "Контакты", в котором Telegram склоняет к приглашению в канал контактов. Если нажать "Далее" откроется окно канала с сообщением "Канал создан" и поле для публикации сообщений в канале.

Получить идентификатор созданного частного канала из 13 чисел с помощью бота @FIND_MY_ID_BOT

Напишите любое сообщение и опубликуйте в канале. Нажмите на сообщение и выберите в выпадающем меню "Переслать". В строке поиска наберите @find_my_id_bot и выберите имя "Get my ID". Сверьтесь с названием и аватаром бота. Вместо бота "Get my ID" можно использовать и другие боты, которые могут выдать идентификатор канала. Идентификатор канала это 13 цифр со значком минус в начале: "-100xxxxxxxxxx". Запишите этот номер, его нужно будет ввести при добавлении канала в Платформе.


Слайд 116

Создание бота для канала Telegram

Бот нужен для того, чтобы Платформа через него публиковала сообщения в канале. Пользователи Telegram привязаны к номерам телефонов и Платформа не может публиковать сообщения как пользователь (человек) Telegram.

Создать бота с помощью бота @BotFather, получитьAPI Token бота.

Найдите бот по имени "BotFather". Не ошибитесь в выборе бота: У правильного бота больше 3 миллионов пользователей и синяя галочка.

В окне чата с ботом BotFather наберите:

/start, высветятся команды

наберите /newbot, выдастся сообщение о том, что надо придумать и ввести имя вашему боту

Имя не уникальное, оно будет высвечиваться у вас в Telegram. Дальше будет предложено придумать username боту. username должно оканчиваться на "bot" и быть уникальным. Придумайте username, которое ещё не занято. Можно набрать несколько раз. Как только введённое имя окажется незанятым, ваш бот будет создан и в выданном тексте будет API Token. Его нужно сохранить. Токен можно в будущем снова получить, можно отозвать и создать новый. Также можно будет удалить бота, если он вам не нужен. В приложении Telegram можно нажать на кнопку Open и давать команды BotFather через встроенное приложение в Telegram:


Слайд 117

Добавление бота в канал Telegram

Добавить созданного бота как администратора в канал с единственным правом - публикации сообщений (остальные права не нужно давать).

Для добавления нужно открыть канал, кликнуть на заголовок с именем канала. Выбрать "Администраторы". В открывшемся окне "Управление" выбрать "Добавить администратора". Найти имя вашего бота в окне глобального поиска. Не ошибитесь в имени бота при поиске, а то добавите чужого бота. Выбрав имя откроется окно с правами. Нужно убрать все права, кроме "Отправка сообщений" и нажать ссылку в верхнем правом углу "Готово".

Это все действия, которые нужно выполнить в приложении Telegram. В канал можно приглашать пользователей, которые хотят получать сообщения от Платформы. Так как канал частный, то он не будет виден в глобальном поиске и без ссылки или добавления в канал, сторонние пользователи Telegram не смогут добавиться в канал.

Созданный канал можно удалить, имя канала освободится. Боту можно поменять API Token.

Как создатель каналы вы являетесь владельцем канала и можете удалить его Бота можно из списка администраторов канала:


Слайд 118

Создание канала уведомлений в Платформе

Создать в Платформе канал уведомлений, указав идентификатор канала и API Token бота, которые были получены в приложении Telegram.

Для этого выбрать в левой вертикальной полоске меню значок "Настройки тенанта" -> "Каналы уведомлений" -> "Telegram" и на открывшейся странице со списком каналов Telegram нажать кнопку в правом верхнем углу "Добавить канал". Появится всплывающее окно "Добавление канала Telegram".

После ввода идентификатора и токена нажать красную кнопку "Добавить канал" и канал будет добавлен в список каналов тенанта.

Дальше нажать справа в строке канала три точки и выбрать "Открыть". Появится страница описания канала. На странице отображается идентификатор канала, но API Token не отображается. Если вы в BotFather отзовёте токен (Revoke current token), то будет создан новый API Token. Все клиенты со старым токеном не смогут взаимодействовать с ботом. Чтобы Платформа смогла передавать сообщения в канал, нужно будет выбрать в меню "Установить токен" и ввести новый API Token.

Для проверки того, что Платформа может посылать сообщения в канал, можно нажать в меню на пункт "Тестовое подключение".

Если удалить бота из администраторов канала или сам канал, то зелёная плоска с лева в строке не будет показываться и при тестировании будет выдана ошибка:


Слайд 119

Добавление правил для канала Telegram в Платформе

Добавить правило для отсылки уведомлений в канал Telegram для оповещений с уровнем важности Проблема (PROBLEM) и/или Предупреждение (WARNING).

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

Добавленные правила появятся на странице канала в виде списка под строкой с параметрами канала уведомлений. В меню, которое вызывается при клике на три точки справа на строке правила есть единственный пункт "Удалить правило".


Слайд 120

Пример сообщений в канале Telegram

Первое сообщение - результат выбора в меню пункта "Тестовое подключение".

Шаблоны сообщений для Telegram не редактируются. В сообщении выводится время во временной зоне Платформы с точностью до секунд. Время такое же как на странице "Оповещения" Платформы.

В примере на слайде в канале два подписчика: владелец канала и бот.

Числа в сообщениях отображаются синим цветом, это особенность Telegram, кликать на числа синего цвета не нужно.


Слайд 121

Mattermost

Mattermost - мессенджер с открытым исходным кодом для использования в организациях и компаниях. Является открытой альтернативой Slack и Microsoft Teams. Mattermost используют Группа Компаний Астра, Boeing, Tesla, ЦЕРН. Позволяет выполнить миграцию со службы уведомлений Slack. Mattermost имеет клиентское приложение под iOS, доступное в AppStore.

При добавлении канала Mattermost на странице Платформы достаточно указать "URL веб-хука" и канала, для которого этот веб-хук создан. Канал может быть приватным.

Веб-хук для канала создаётся в настройки канала Mattermost в меню "Интеграции" -> "Входящие веб-хуки" -> кнопка "Добавить входящий веб-хук".

В остальном, работа с каналами Mattermost в Платформе аналогична Telegram. Например, так же нужно добавлять правила для оповещений:

Во всплывающем меню, в отличие от меню для каналов Telegram, нет пункта "Установить токен", так как в Mattermost нет токенов.

При выборе Приостановить, Активировать и при добавлении канала появляются всплывающие сообщения зелёного цвета с текстом об успешной приостановке, активации или добавлении канала.

https://docs.tantorlabs.ru/tp/6.0/admin/reports_mattermost.html


Слайд 122

Практика 6

1. Нажмите на колокольчик "Оповещения"/"Alerts".

2. Изучите содержимое вкладок "Оповещения"/"Alerts" и "Журнал

событий"/"Event log", перейдите по кнопке "Посмотреть все"/"View all".

3. Воспользуйтесь фильтром, чтобы найти нужное оповещение. Войдите в

оповещение.

4. Изучите вкладки "Обзор"/"Overview", "Связанные

оповещения"/"Related alerts" и "Журнал событий"/"Event log".

5. Закройте оповещение вручную.

6. Перейдите на страницу "Настройки тенанта".

7. Создайте канал оповещения с Телеграм.

8. Перейдите на страницу "Шаблоны писем"/"Email templates", измените один из

шаблонов.


Слайд 123


Слайд 124

Экземпляр: Настройки мониторинга

На странице "Настройки мониторинга" экземпляра выбираются базы данных, по которым Агент Платформы собирает метрики. По умолчанию, выбрана только одна база данных, имя которой указывалось для подсоединения Агента при добавление экземпляра в Платформу. Отключить мониторинг этой базы данных (убрать галочку в столбце "Отслеживается") нельзя.


Слайд 125

Экземпляр: Настройки мониторинга -> ТРИГГЕРЫ

На второй вкладке "ТРИГГЕРЫ" отображается список метрик с их пороговыми значениями. Если собранные Агентом метрики выходят за границы значений триггеров, создаётся оповещение.

Список метрик не меняется. У части метрик нельзя менять пороговые значения. У метрик, у которых можно поменять пороговые значения отображается пункт "Редактировать" во всплывающем меню. Меню вызывается нажатием на три точки справа.

Если триггер редактируемый, то обычно, даётся на выбор три набора пороговых значений. Числа в этих пороговых значениях нельзя менять.

https://docs.tantorlabs.ru/tp/6.0/instances/monitoring_config.html


Слайд 126

Экземпляр: Профилировщик запросов

"Профилировщик запросов" (Query Profiler) предназначен для профилирования (оценки процесса выполнения) запросов. Профилировщик использует статистику расширения pg_stat_statements. Данные из представления pg_stat_statements группируются, чтобы не было дубликатов одинаковых запросов.  На каждой итерации сбора статистики делается выборка только 50 самых длительных запросов.

В столбце ТРЕНД показывается уменьшенный и сжатый график, который отобразится на основной панели. Чем чаще и дольше выполнялся запрос, тем больше кривая ТРЕНД соответствует графику. Для длительности 1 миллисекунда (как в примере на слайде) ТРЕНД не похож на график, по которому он рисуется.

В меню "три точки" у каждого запроса всего один пункт: "Подробнее". Этот пункт открывает то же самое, как если кликнуть на саму строчку запроса.

При нажатии на значок "+" в левой части, строка "раскроется" и покажет запрос, а значок заменится на "-":


Слайд 127

Экземпляр: Профилировщик запросов: СТАТИСТИКА

При клике на строчку запроса, откроется новая страница на вкладке СТАТИСТИКА по этому запросу.

В левой части страницы - статистика, в правой части - Текст запроса.

И на предыдущей и на этой странице справа вверху можно выбрать интервал отображения собранных данных от 30 минут до 7 дней.

На графике отображается метрика, которая указана слева вверху графика. В примере на слайде: TIME QUERY/SECOND.

Под графиком 7 точек, на которые можно кликать и будут открываться графики метрик:

1. Time Query/Second,

2. Calls/Second,

3. Rows/Second,

4. CPU Time/ Second,

5. IO Time/Second,

6. Dirtied Blocks/Second,

7. Temp Blocks(Write)/Second

При клике на вкладке "ПЛАНЫ" откроется страница со списком планов.

Для того, чтобы планы показывались, а не выдавалось "Данные не найдены", нужно, чтобы

1) в кластере были установлены библиотеки pg_stat_statements и pg_store_plans:

alter system set shared_preload_libraries =  pg_stat_statements, pg_qualstats, pg_store_plans, pg_prewarm, pg_stat_kcache, auto_explain ;

2) в базе данных были установлены расширения:

create extension if not exists pg_stat_statements;

create extension if not exists pg_store_plans;

3) показываться будут только запросы, длительность которых превышает значение параметра pg_store_plans.min_duration. Значение можно установить командой:

alter system set pg_store_plans.min_duration = '10s';

Цель профилировщика  - проведение анализа и выявление проблемных запросов в базе данных. Профилировщик не только отслеживает параметры выполнения, но и проводит анализ планов запросов, предоставляя подсказки для оптимизации.


Слайд 128

Экземпляр: Профилировщик запросов: ПЛАНЫ

При клике на вкладке "ПЛАНЫ" откроется страница ГИСТОГРАММА ПЛАНОВ. На гистограмме разными цветами показываются разные планы.

На временной шкале открывается гистограмма, которая показывает с какими планами

выполнялся выбранный запрос за указанное время.

Один и тот же запрос может выполняться разными планами.

Под гистограммой можно кликнуть на три точки, подсвеченные цветом столбцов гистограммы и появится план выполнения.

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

UPDATE pgbench_tellers SET tbalance = tbalance + $1 WHERE        tid = $2

Запрос на этой странице не виден, он будет виден на вкладке СТАТИСТИКА.

Число столбцов гистограммы зависит от частоты выполнения запроса.

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


Слайд 129

Экземпляр: Профилировщик запросов: простой план

При клике на любое место строки плана, кроме трёх точек, откроется страница с деталями плана выполнения запроса.

На странице 6 вкладок:

explain

диаграмма

отношения

план

модель

оригинал

В примере на слайде показан план запроса, который не является долго выполняющимся (pg_store_plans.min_duration), по нему не собраны данные и рекомендаций нет. На картинке нет многих столбцов, которые появляются у долгих запросов.

https://docs.tantorlabs.ru/tp/6.0/instances/query_profiler.html


Слайд 130

Экземпляр: Профилировщик запросов: долгий запрос

Для долгих запросов картинка имеет большое число столбцов.

Для создания тестовой нагрузки в виртуальной машине курса можно использовать команды:

psql -f /opt/workload/custom_init.sql

pgbench -T 60000 -P 10 -c 5 -f custom_workload.sql

При проведении мышью над большинством визуальных элементов страницы появляются всплывающие окна с подсказками.

Во врезке на слайде - продолжение заголовка таблицы, где справа есть ссылки на tilemap и piechart.

Страница создаётся анализатором планов запросов, аналогичном explain.tensor.ru. Анализатор интегрирован в Платформу Tantor и позволяет проводить анализ в рамках Платформы без отправки запросов и данных во внешние сервисы. Платформа Tantor самостоятельно собирает и хранит запросы во внутренней базе данных инсталляции Платформы.

Сервис позволяет:

Визуализировать любые планы запросов PostgreSQL, скопированные из любых источников и вставленные в окно, которое открывается из меню "Модули"->"Анализатор  плана запросов"

Отображать планы запросов, собранных опцией "Расширенная аналитика" платформы Tantor и показываемые в меню"Проблемные запросы".

Отображать планы запросов, собранных платформой Tantor с помощью расширения pg_store_plans на странице "Профилировщик запросов".

при включенном параметре track_io_timing в плане отображаются показатели времени, затраченного на операции ввода-вывода (average IO после "итоговые результаты").

Статьи с описанием визуального интерфейса Tensor:

https://habr.com/ru/company/tensor/blog/677948/

https://habr.com/ru/company/tensor/blog/477624/


Слайд 131

Экземпляр: Профилировщик запросов: tilemap

Пример tilemap, который появляется справа на плане.

На диаграмме сверху 3 вкладки: time (открыта по умолчанию), cost и rows.

Режим rows (ссылка "rows" сверху над tilemap) позволяет мгновенно оценить, в каком сегменте плана генерируется или фильтруется чересчур много записей.

Более насыщенным (красным) цветом подсвечиваются те узлы, на которых было отфильтровано (Rows Removed by Filter …) наибольшее число строк.

Визуальная ширина линий между шестиугольниками пропорциональна числу строк, которые были переданы вверх по дереву плана.

Чем ярче узел и толще его линии (связи, ветви), тем он более важен и на него стоит обратить внимание.

При проведении мышью над шестиугольниками показываются части плана, к которым эти элементы относятся. В примере - шестиугольник NL3 (Nested Loop).


Слайд 132

Экземпляр: Профилировщик запросов: piechart

Пример piechart (круговая диаграмма), который появляется справа на плане.

Круговая диаграмма, представляет долю времени, занимаемую узлом плана запроса по отношению к длительности выполнения запроса.

При проведении мышью над элементами показываются части плана, к которым эти элементы относятся. В примере - зелёный сектор.

Круговая диаграмма полезна, когда план запроса содержит много узлов и даже сокращенная форма плана занимает большую площадь. Она позволяет обратить внимание на узлы плана, на выполнение которых тратится больше всего времени.

Цвет на диаграмме и на полоске заголовков столбцов:

если доминируют красные сегменты, то тратится много времени на чтение данных (Seq Scan, Index Scan, Bitmap Heap Scan), если желтые - на обработку (Aggregate, Unique), а зелёные - это соединения (Join).


Слайд 133

Экземпляр: Профилировщик запросов: диаграмма

Piechart (круговая диаграмма) не показывают полную цепочку вложений подузлов CTE/InitPlain/SubPlan - их можно увидеть только на диаграмме выполнения.


Слайд 134

Экземпляр: Профилировщик запросов: рекомендации

Иконки рекомендаций в виде прямоугольников (IC - Index Create, SR - Service Recommendation) присутствуют на плане. При наведении на иконки откроются всплывающие окна с рекомендациями.

Также открыть страницу рекомендаций можно кликнув на ссылки "индексы" и "рекомендации".

В рекомендации по индексам даётся команда создания индекса, которую можно скопировать в буфер обмена:


Слайд 135

Экземпляр: Профилировщик запросов: статистика

При клике справа вверху "статистика", откроется страница с показателями выполнения:

временем, числом строк, RRbF (Rows Removed by Filter), типом узла, таблицей, индексом и ссылкой на номера узлов плана. При наведении на ссылку с номером узла плана появится всплывающее окно ч частью плана.


Слайд 136

Практика 7

1. Откройте страницу "Настройки мониторинга"/"Monitoring config".

2. На вкладке "Список баз данных"/"Databases list", найдите базу данных, отличную от той, которая мониторится по умолчанию и поменяйте статус мониторинга.

3. Изучите варианты фильтрации списка БД.

4. Откройте вкладку "Триггеры"/"Triggers", изучите список триггеров.

5. Отключите-включите какой-нибудь триггер.

6. Найдите триггер, который доступен для редактирования, измените пороговые значения.


Слайд 137

Практика 8

1. Откройте "Профилировщик запросов"/"Query Profiler".

2. Ознакомьтесь с основным графиком "Среднее время запросов"/"Average query time". Измените временной интервал отображения информации о запросах.

3. Найдите таблицу/список запросов, ознакомьтесь с параметрами для фильтрации, отфильтруйте запросы по параметру "количество возвращаемых строк".

4. Откройте один из запросов, ознакомьтесь с текстовым содержанием запроса.

5. Посмотрите детально содержание запроса во вкладке "Статистика"/"Statistics".

6. Посмотрите детально план запроса во вкладке "Планы"/"Plans",

раскройте план запроса и изучите текстовое содержание. Провалитесь в запрос, изучите представленную информацию: план, диаграмму, статистику и рекомендации.


Слайд 138

Практика 9

1. Откройте страницу "Репликация".

2.Изучите представленную информацию на мастере, найдите на мастере

данные по лагу репликации. На реплике, посмотрите отличия отображения

данных, войдите в реплику.

3.Перейдите во вкладку "Табличные пространства". Изучите информацию,

представленную в данной вкладке.

4.Перейдите во вкладку "Графики". Изучите окна и графики, представленные в

данной вкладке. Кликните на "Метрики". Измените временной интервал отображения информации.


Слайд 139


Слайд 140

Экземпляр: Расширенная аналитика

Открыть страницу "Расширенная аналитика" можно:

1. на странице Экземпляры из выпадающего меню, которое открывается при нажатии на значок три точки справа.

2. Открыв экземпляр и выбрав в меню Экземпляра пункт "Расширенная аналитика"

В примере на слайде на странице есть полоса прокрутки. Полоса появилась потому, что страница  имеет большую длину.


Слайд 141

Экземпляр: Проверка настройки аналитики

Расширенная аналитика читает текстовые файлы диагностических логов кластера баз данных PostgreSQL, разбирает их содержимое и загружает строки в базу данных Платформы. Если загрузка не выполнена или в журнале нет данных, то на страницах аналитики не будет данных.

Этим занимается служба "pg-monitor", которая работает в докер-контейнерах pg_monitor_dispatcher и pg_monitor_collector . Служба использует соединение по протоколу ssh от хоста Платформы до хоста с экземплярами PostgreSQL. Для этого нужна дополнительная ручная настройка клиента ssh.

Для проверки того, что журнал читается, можно зайти на страницу аналитики, кликнуть слева вверху страницы на IP адрес. Появится список IP-адресов экземпляров, которые зарегистрированы в Агенте хоста. Порт по умолчанию 5432 не отображается. Нестандартный порт 5432 отображается после двоеточия. Признака реплика это или мастер нет.

Если после клика на IP-адрес ниже поля поиска "Search..." выдаётся строка на жёлтом фоне, то диагностический файл лога не был прочитан, нужно проверить по разделу документации настроены ли ключи ssh на хосте Платформы и скопированы ли они на хост Агента; параметры конфигурации мониторируемого кластера PostgreSQL.

Вторая проверка - открыть адрес https://хост_Платформы/pg-monitor/hosts

Если в столбце Hostname нет адреса экземпляра, то Расширенная аналитика не работает, так как нет рабочего процесса, который собирает аналитику с экземпляра. Скорее всего не работает контейнер pg_monitor_dispatcher, в котором работают эти процессы. Можно запустить контейнеры:

docker start pg_monitor_dispatcher

docker start pg_monitor_collector

и проверить их статус:

docker ps -a | grep monitor | grep Up


Слайд 142

Экземпляр:  страница pg-monitor

Страница доступна по адресу https://хост_Платформы/pg-monitor

На вкладке "очистка БД" можно настроить условия очистки накопленных Платформой данных по метрикам мониторируемых экземпляров. По умолчанию 7 дней.

На вкладке "Воркеры" отображается статистика рабочих процессов.


Слайд 143

Экземпляр: Расширенная аналитика

Если кликнуть на IP-адрес, откроется выпадающий список с IP-адресами и портами экземпляров PostgreSQL.

Дальше можно кликнуть слева вверху страницы на значок с тремя полосками (три полоски напоминают бургер, поэтому называют "бургер-меню"), откроется выпадающее меню, относящееся к выбранному экземпляру PostgreSQL.

В выпадающем меню в правой части строк синем цветом местами присутствуют числа. Те строки, где есть числа кликабельны. Пункты меню, где чисел нет - не кликабельны. Чисел нет, если в диагностическом логе экземпляра отсутствуют сообщения, соответствующие пунктам меню или если по любой причине служба pg-monitor не может получить по ssh файл диагностического журнала и разобрать его содержимое.

Выбрав на странице пункт меню, страница будет отображать данные, соответствующие этому пункту, пока не будет выбран другой пункт меню. Даже если в меню экземпляра кликнуть на "Расширенная аналитика", то всё равно будет показываться предыдущий пункт меню страницы.

На части страниц меню Расширенной аналитики отсутствует. На таких страницах для возврата на предыдущие страницы придётся использовать средства браузера (кнопку "Back"/"Назад"). Либо кликать на какой-нибудь пункт меню экземпляра, а потом на пункт меню "Расширенная аналитика".

Мегазапросы - запросы, превышающие объем 1МБ входящего или исходящего трафика и превышающие время log_min_duration_statement или pg_store_plans.min_duration.

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

https://docs.tantorlabs.ru/tp/6.0/instances/pg_monitor/pg_m_page_control_panel.html


Слайд 144

Расширенная аналитика: ошибки в логе PostgreSQL

При клике в меню страницы на строку, где число ошибок непусто (на слайде строка ERROR 1) откроется страница с с тремя вкладками. На страницах время в столбце last кликабельно (в примере на слайде 13:42:31). При клике на времени откроется страница с визуализацией строки из диагностического лога.

last - время, в которое последний раз встречалась ошибка в выбранную дату. Если нажать на ссылку поля last, будет открыта страница, где будут отражены детали ошибки.

Timeline - универсальный графический элемент, красными вертикальными линиями показывающий, когда встречалась ошибка. Во всей длине одной диаграммы находятся одни сутки, разделённые на секции по часам.

На вкладке by time отображается выбор времени справа вверху. Эта вкладка полезна при большом числе сообщений в логе.


Слайд 145

Расширенная аналитика: статистика по таблицам

При выборе в меню страницы пункта "Статистика по таблицам" откроется список мониторуемых баз данных экземпляра PostgreSQL. В примере две базы данных: postgres и test_db.

Справа вверху есть текстовое поле поиска "укажите фильтр"/"specify filter", в котором можно набрать буквосочетание для первого столбца - имени базы данных. Поле поиска (фильтр) есть на многих страницах и оно выполняет поиск по одному из отображаемых на странице столбцов с текстом. Поиск выполняется по введённому буквосочетанию в одном из текстовых столбцов на странице. В каком столбце не описывается, нужно догадаться, это может быть и первый и последний столбец на странице. В примере можно набрать os и в списке останется строка по базе postgres.

На странице кликабельно только число 216. При клике на число откроется страница с деталями по таблицам и индексам.

Вкладки heatmap (карта нагрева) и пункт меню "процессы" заполняются при использовании расширения pgppro_stat_activity.


Слайд 146

Расширенная аналитика: взаимоблокировки

При клике в меню на deadlock, появится страница со списком взаимоблокировок. На этой странице 4 вкладки: по типам, по приложениям, по времени, графики.

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

Страницы с просто блокировками имеют похожее содержимое. По умолчанию, показывается строка с суммарным временем ожидания получения блокировки. В этой строке столбец "кол-во" не пуст (в примере в столбце число 6). Кликнув на строку можно раскрыть список блокировок, у них в столбце "кол-во" пусто и размер шрифта меньше:


Слайд 147

Расширенная аналитика: Проблемные запросы

Проблемные запросы - те, которые попали в диагностический лог (например, длительность превышает log_min_duration_statement) или их длительность превышает pg_store_plans.min_duration.

При наведении на строку слева у первого столбца появляется всплывающий значок из четырех горизонтальных полосок       . При нажатии на него появляется всплывающее окно "Задачи по паттерну", в котором можно добавить http/https ссылки на любые страницы. Например, на страницу задачи (task, ticket) в корпоративной программе отслеживания задач. После добавления ссылки можно самостоятельно указать дату когда задача была создана и срок решения.

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

last - время, в которое запрос с данным идентификатором последний раз выполнялся в выбранную дату. Если нажать на ссылку поля last, будет открыта страница "Запрос из архива", где будут отражены детали запроса.

Timeline - график интенсивности появления проблемных запросов. Используется универсальный графический элемент, вертикальными полосками показывающий, когда встречался запрос. В каждой полоске 10 минут. Высота полосок - число запросов в  промежутке времени. Во всей длине одной диаграммы находятся одни сутки (дата выбирается справа вверху страницы), разделённые на секции по часам. Цвет показывает относительную длительность запросов. Если запросы быстрые, то они зелёного цвета, менее быстрые - жёлтого, а самые медленные красного цвета.

https://docs.tantorlabs.ru/tp/6.0/instances/pg_monitor/pg_m_miscellaneous_control_elementes.html


Слайд 148

Расширенная аналитика: PSA (pg_stat_activity)

PSA (pg_stat_activity) - состояние запросов из представления pg_stat_acitivity.

PSA apps - мониторинг по названиям приложений


Слайд 149

Расширенная аналитика: CHECKPOINT

Статистика сообщений о контрольных точках из диагностического журнала PostgreSQL.

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

из которой можно, кликнув на Timestamp, посмотреть сообщения в журнале вокруг сообщения о контрольной точке:

в которых можно кликнув "перейти к анализу" перейти на страницу анализа плана запроса.


Слайд 150

Расширенная аналитика: Логи

Справа вверху страниц есть ссылка "Логи", кликнув на которую, откроется просмотр диагностического лога кластера баз данных PostgreSQL.

Если в сообщении присутствует идентификатор запроса, то у сообщения есть ссылка "перейти к анализу", по которой можно перейти на страницу анализа плана запроса.

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


Слайд 151

Расширенная аналитика: Мегазапросы

Мегазапросы - запросы, превышающие объем 1МБ входящего или исходящего трафика и превышающие время log_min_duration_statement или pg_store_plans.min_duration.

Виды мегазапросов:

resultset - входящий трафик к серверному процессу (тело запроса и его переменных привязки), столбцы: Метод (название приложения), кол-во, bytes, avg, last, Timeline. Кликнув на поле last у запроса, откроется страница его плана.

params - исходящий трафик от серверного процесса клиенту (результат запроса);

query - тест запросов

diff - сравнение времени выполнения запросов (пример в правом верхнем углу слайда), столбцы: Метод (название приложения), кол-во, duration, exectime, diff, +%, last, Timeline.

На страницах показываются запросы, сгруппированные по приложениям (параметр application_name, если приложение его заполняет). Кликнув на строку, "раскроются" запросы, выполнявшиеся в сессиях с названием этого приложения. Кликнув на поле last у запроса, откроется запись диагностического лога с последним выполнением запроса.

Не во всех вкладках могут присутствовать данные. Например, вкладка heatmap заполняется при использовании pgppro_stat_activity. В текущей версии pg_stat_activity данных для этой вкладки нет. Платформа Tantor поддерживает оба расширения.

https://docs.tantorlabs.ru/tp/6.0/instances/pg_monitor/pg_m_Mega-queries.html


Слайд 152

Расширенная аналитика: PG config

Самый последний пункт меню: PG config. При клике на пункт меню открывается страница со списком всех параметров конфигурации экземпляра, в том числе параметров всех загруженных  библиотек. Обычно, библиотеки загружаются параметром shared_preload_libraries.

Параметры выводятся в разделах по своим категориям.

Желтый треугольник указывает на то, что параметр может иметь значение, отличное от значения по умолчанию.

На странице две вкладки: "параметры" и "изменения".

Во вкладке "изменения" выводится история изменений параметров. Сверху - самые свежие изменения. В примере на слайде последним менялось значение параметра auto_explain.log_min_duration, сначала на 1s (в 21:53), а через две минуты (в 21:55) значение было изменено на 100s.


Слайд 153

Практика 10

1. Откройте страницу Расширенная Аналитика/Advanced analytics двумя способами: через меню на странице со списком экземпляров и через меню экземпляра.

2. Измените дату отображения данных.

3. Выберите реплику на порту 5433, посмотрите журнал логов кликнув на "Логи" справа вверху страницы Расширенная Аналитика.

4. Вернитесь на главную страницу Advanced analytics. Откройте в меню проблемные запросы. Походите по вкладкам. Кликните на запрос, посмотрите данные о запросе.

5. Кликните в правом столбце запроса на поле столбца "last", провалитесь внутрь запроса. Посмотрите информацию, представленную во вкладках: пояснение, диаграмма, отношения, план, модель, оригинал, рекомендации, статистика, tilemap, piechart.

6. Посмотреть информацию о мегазапросах.


Слайд 154


Слайд 155

Текущая активность

На странице "Текущая активность" отражаются сгруппированные данные по процессам экземпляра. Они актуальны: запрашиваются при открытии страницы обновляются раз в пять секунд.

Данные можно обновлять чаще, нажав на квадратик со стрелками справа от поля "Поиск".

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

На странице две вкладки: ПОЛЬЗОВАТЕЛИ (сессии с базами данных) и СИСТЕМА (фоновые процессы экземпляра в операционной системе). Для фоновых процессов, не связанных с базами данных, имя базы данных в столбце БАЗА ДАННЫХ пусто (в примере на слайде последняя строка в таблице).

Максимальное число сессий определяется параметром max_connections (по умолчанию 100). Число зарезервированных соединений определяется параметрами superuser_reserved_connections (по умолчанию 3) и reserved_connections (по умолчанию 0).


Слайд 156

Текущая активность: Завершить процесс

Кликнув на строку, появится страница со списком сессий базы данных или фоновых процессов. Страница перерисовывается (обновляется) часто и чтобы приостановить ее перерисовку можно нажать на красную кнопку "Заморозить", кнопка поменяет название на "Отменить заморозку". При нажатии на кнопку "Завершить" появится окно с подтверждением. Сессия прерывается вызовом функции pg_terminate_backend(PID).

На слайде показан пример списка серверных процессов (Пользователи вверху на breadcrumb). Пример фоновых процессов (Система):

При нажатии на кнопку "Завершить", вызывается функция, но фоновые процессы checkpointer, bgwriter, walwriter не остановятся:

select pg_terminate_backend(1059);
WARNING:  PID 1059 is not a PostgreSQL backend process
pg_terminate_backend
----------------------
f 


Слайд 157

Текущая активность: ОЖИДАНИЕ и ЗАБЛОКИРОВАНО

Для просмотра дерева блокировок можно создать таблицу с двумя строками и три сессии:

create table t (n numeric);

insert into t values (1);

insert into t values (2);

1 begin;

1 update t set n=1 where n=1;

2 begin;

2 update t set n=2 where n=2;

1 update t set n=2 where n=2;

3 update t set n=1 where n=1;

Сессии 1 (PID=14171) и 3 (PID=15408) заблокированы, сессия 2 (PID=10896) нет.

Если кликнуть на строку базы данных, с которой работают сессии, то появится таблица со списками сессий на закладке ВЫПОЛНЕНИЕ. На этой странице есть ещё две вкладки: ОЖИДАНИЕ и ЗАБЛОКИРОВАНО. Часть столбцов можно убрать, нажав на значок шестеренки.

Если нажать на сессию на вкладке ВЫПОЛНЕНИЕ, то появится неинформативное окно с командой и деталями ее выполнения, которые и так отражаются в столбцах на странице ВЫПОЛНЕНИЕ.

Если же нажать на сессию на вкладке ОЖИДАНИЕ или ЗАБЛОКИРОВАНО, то появится совсем другая страница. На этих вкладках отображаются только сессии, которые простаивают и не могут работать и нужно определить почему, кто эти сессии заблокировал или чего они ждут. ОЖИДАНИЕ - это, например, ожидание ответа от дисковой системы, а ЗАБЛОКИРОВАНО - это ожидание получение блокировки строки, которая заблокирована другой сессией.


Слайд 158

Текущая активность: дерево блокировок

Находясь на вкладке ОЖИДАНИЕ или ЗАБЛОКИРОВАНО можно кликнуть на сессию и появится страница со списком процессов и запросов, в процессе выполнения которых они находятся.

При открытии сессии со страницы ОЖИДАНИЕ на открывшейся странице вверху будет присутствовать чекбокс "Показать все деревья блокировки". Если нажать на него, то добавятся процессы из очереди ожидания.

При открытии сессии со страницы ЗАБЛОКИРОВАНО чекбокса нет, так как и так высветятся все заблокированные сессии и сессии, ожидающие команды от клиента (idle in transaction).

Команда в сессии не видна, только начало команды, но если кликнуть на строку, то справа откроется окно, в котором будет полностью видна сама команда и детали её выполнения, а также кнопка "Завершить", которой можно прервать сессию (завершить работу серверного  процесса, обслуживающего сессию). В верхнем правом углу появившегося окна есть значок "х", нажав на который можно закрыть появившееся окно.


Слайд 159

Практика 11

1. Откройте страницу Текущая активность/Current activity.

2. Посмотрите содержимое а двух вкладках: процессы пользователей (ПОЛЬЗОВАТЕЛИ) и фоновые процессы (СИСТЕМА).

3. Перейдите в фоновые процессы, посмотрите какие процессы работают.

4. В трёх терминалах linux запустите psql и в трёх сессиях выполните команды (сессии помечены цифрами 1, 2, 3):

create table t (n numeric);

insert into t values (1);

insert into t values (2);

1 begin;

1 update t set n=1 where n=1;

2 begin;

2 update t set n=2 where n=2;

1 update t set n=2 where n=2;

3 update t set n=1 where n=1;

5. В процессах пользователя кликните на базу данных postgres, и ознакомьтесь с процессами, которые запущены, находятся в ожидании или заблокированы. При необходимости воспользуйтесь фильтром для поиска нужного процесса.

Зайдите в процесс и ознакомьтесь с представленной информацией. Прервите сессию, заморозьте экран сессии.


Слайд 160


Слайд 161

Экземпляр: Конфигурация

На странице Конфигурация показаны параметры экземпляра PostgreSQL. Параметры хранятся в файлах postgresql.conf и postgresql.auto.conf

Существует больше 370 параметров плюс параметры библиотек.

Если текущее значение параметра отличается от рекомендуемого конфигуратором, встроенным в Платформу Tantor, то на это указывает значок "!=".

Платформа собирает метрики с экземпляра PostgreSQL и примерно 25 из этих

метрик поступает в конфигуратор. Конфигуратор анализирует метрики и на их

основе предлагает внести изменения в параметры конфигурации. Число параметров, по которым даются рекомендации, от 80 до 100 (зависит от версии PostgreSQL).

Можно создать группу параметров, связать её с несколькими экземплярами и применять

значения параметров к ним.

В столбце ТЕКУЩЕЕ ЗНАЧЕНИЕ показывается действующее значение параметра, а не то, которое сохранено в файле параметров postgresql.auto.conf. Зеленоватый фон в этом столбце означает, что Платформа рекомендует значение для этого параметра и значение равно рекомендованному Платформой.

Красная полоса слева от названия параметра означает, что значение параметра присутствует в файлах конфигурации в раскомментированном виде.

Убрать красную полосу можно только вручную командой alter system reset параметр  или убрав или закомментировав строку в файлах параметров.

На слайде три параметра имеют красную полосу. Содержимое файла:

tail -n 3 $PGDATA/postgresql.auto.conf  
autovacuum_analyze_scale_factor = '0.0007'
#значение по умолчанию 0.1
autovacuum_freeze_max_age = '500000000'
#значение по умолчанию  10000000000
autovacuum = on
#является значением по умолчанию

https://docs.tantorlabs.ru/tp/6.0/instances/configurations.html


Слайд 162

Экземпляр:  изменение параметров конфигурации

Платформа меняет параметры командой alter system set параметр = значение. Изменения сохраняются в файле postgresql.auto.conf.

После изменения параметров кнопка "Применить настройки" становится активной, красного цвета. Если нажать на эту кнопку появится всплывающее окно, в котором будут показаны применяемые параметры, у каждого параметра - достаточно ли перечитать файлы параметров или нужен перезапуск экземпляра.

Если перезапуск экземпляра не нужен, то появится всплывающее зелёное окно с текстом: "Конфигурации успешно обновлены. Перейти в список экземпляров".

Если какой-то параметр без перезапуска экземпляра не применится, то появится всплывающее красное окно с текстом: "Чтобы применить все изменения, перезапустите экземпляр" и на странице останется красный треугольник левее значка с воронкой.

При последующих заходах на страницу "Конфигурация" будет появляться это красное всплывающее окно. После рестарта экземпляра страница показывает неактуальные значения минуту.

Перезапустить экземпляр средствами Платформы, если экземпляр не входит в кластер Patroni нельзя.

Часть параметров доступна только для чтения. У таких параметров в окне со значением нет иконки карандаша. Эти параметры нельзя изменить напрямую.

Историю изменений параметров конфигурации экземпляра можно посмотреть на странице Расширенная аналитика -> PG config -> изменения.


Слайд 163

Параметры конфигурации: Фильтры и Настройка

Параметров больше 370. Кнопка Фильтры позволяет отфильтровать параметры, которые будут показываться на странице по Статусам и Категориям, что уменьшит число параметров, показываемых на странице.

Настройка влияет на рекомендации конфигуратора. В настройках можно установить:

Тип управления нагрузкой:

Автоматическая настройка - Платформа в автоматическом режиме подбирает профиль нагрузки наблюдаемой БД. Текущий автоматически подобранный профиль указан в селекторе "Тип нагрузки" серого цвета (не меняется).

Ручная настройка - позволяет вручную указать тип нагрузки для экземпляра.

OLAP (OnLine Analytical Processing) - базы данных, обслуживающие аналитические приложения (DSS, Descision Support System), хранилища (DW, Data Warehouses). В таких приложениях преимущественно разовые (ad-hoc), длительные запросы, обрабатывающие много строк.

OLTP (OnLine Transaction Processing) - приложения, обслуживающие повседневную деятельность компаний. Преимущественно короткие запросы и транзакции.

Mixed - смешанная нагрузка.

ERP1C (Enterprise Resource Planning) - базы данных, обслуживающие приложения 1С или аналогичные.

Тип диска:

SSD (Solid State Disks, твердотельные накопители, NVMe)

HDD (Жёсткие, ротационные, магнитные диски, винчестеры)

Network storage (NAS, Network Attached Storage, подключаемые системы хранения).


Слайд 164

Описание параметров

При нажатии на значок "i" в правой части строк появится всплывающее окно с информационной справкой о параметре конфигурации (пример слева на слайде).

При нажатии на ссылку "Подробнее" в новой вкладке браузера или окне браузера откроется тот же текст из Базы Знаний Платформы.

Если кликнуть внизу окна с информационной справкой на ссылку Официальная документация, то во всплывающем окне откроется страница документации о параметре (пример справа на слайде).


Слайд 165

Группы параметров конфигурации и модификаторы

Группа параметров - набор почти всех параметров конфигурации. "Почти" потому, что в новых версиях могут появляться новые параметры, а какие-то параметры удаляться при выходе новой основной версии PostgreSQL.

Группы параметров доступны только для отдельных экземпляров. С экземплярами под управлением Patroni функционал групп параметров не работает.

К экземпляру можно привязать только одну группу параметров. Одна группа параметров может быть привязана к нескольким экземплярам.

Значения параметров в пользовательской группе параметров можно менять. Для применения изменённых значений ко всем привязанным экземплярам, нужно выполнить "синхронизацию".

В Платформе имеются предустановленные ("системные") группы параметров для каждой мажорной версии PostgreSQL и Tantor Postgres. Значения параметров в этих группах - это значения по умолчанию в конкретной мажорной версии и форке PostgreSQL. Значения параметров в системных группах менять нельзя, поэтому смысла привязывать системные группы к экземплярам нет. Смысл системных групп - перечислить параметры, которые есть в версии и форке PostgreSQL, чтобы на основе этих групп создавать собственные (пользовательские группы параметров), в которых можно менять значения параметров. Также системные группы параметров полезны, чтобы сравнить какие есть отличия в значениях параметров между разными версиями и форками PostgreSQL.

Модификаторы - ноль или более параметров конфигурации, которым можно установить значения. Модификаторы привязываются к экземплярам. Отношение между модификаторами и экземплярами многое ко многому (экземпляр может иметь несколько модификаторов, а модификатор может быть привязан к нескольким экземплярам). Привязать модификатор к экземпляру можно только после привязки какой-нибудь группы параметров.


Слайд 166

Модуль: группы параметров

Группы параметров настраиваются отдельно для каждого тенанта. После выбора тенанта, в левой вертикальной линейке меню можно нажать на значок с четырьмя квадратиками, появится меню Модули, в котором выбрать "Группы параметров". Откроется страница с двумя вкладками: ГРУППЫ и МОДИФИКАТОРЫ.

Семейства параметров - это основные версии от 9 до текущей для PostgreSQL и от 14 до текущей для Tantor Postgres. При создании новой группы указывается семейство.

Типы групп: System и User.

При клике на три точки появится всплывающее меню с пунктами: Открыть, Переименовать, Дублировать, Удалить.

Можно дублировать системную группу, дубль будет пользовательской группой и можно будет устанавливать значения параметров.

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

https://docs.tantorlabs.ru/tp/6.0/instances/param_groups.html


Слайд 167

Сравнение и создание групп параметров

Сравнение показывает различия в значениях параметров и их наличии.

При нажатии на красную кнопку "Создать группу параметров" появится всплывающее окно, в котором можно указать семейство (основная версия) параметров, группу на основе которой создаётся новая (откуда будут взяты начальные значения параметров) и название для создаваемой группы.

Группу можно переименовать, но нельзя поменять название или описание группы параметров, к которой привязан хотя бы один экземпляр.

Создать группу можно дублированием. При дублировании указывается имя новой группы и описание.

Группу можно создать на странице "Конфигурация" экземпляра PostgreSQL, нажав на кнопку "Сохранить как группу параметров".

Примеры всплывающих окон дублирования и сохранения:


Слайд 168

Модификаторы групп параметров

Модификаторы - ноль или более параметров конфигурации, которым можно установить значения. Модификаторы привязываются к экземплярам. Отношение между модификаторами и экземплярами многое ко многому (экземпляр может иметь несколько модификаторов, а модификатор может быть привязан к нескольким экземплярам). Привязать модификатор к экземпляру можно только после привязки какой-нибудь группы параметров.

Если есть несколько модификаторов с одинаковыми параметрами, но разными значениями, при синхронизации выбирается значение из какого-то модификатора, оно будет показано после нажатия на кнопку "Синхронизировать и применить" вместе со всеми применяемыми параметрами. Критерий выбора - из какого модификатора берётся значение неизвестен в 6 версии.

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


Слайд 169

Редактирование модификаторов

На странице модификатора можно добавить, удалить, поменять значения параметров.

При добавлении параметра ему нужно установить значение.

Справки по параметрам в этих окнах нет.

Проблема в том, что формат параметров разнообразный, а Платформа принимает не все форматы. Эти окна позволяют установить значения параметров, которые некорректны. После этого синхронизация перестаёт работать. Но хуже того, Група перестаёт показываться на странице Конфигурация. Для редактирования значений придётся заходить в Модули -> Группы параметров -> МОДИФИКАТОРЫ. После установки значений принимаемых Платформой или удаления параметров на Группы и модификаторы станут отображаться на странице Конфигурация -> ГРУППА ПАРАМЕТРОВ. Примеры ошибок:

Например, для параметров с единицами измерений "B", "kB", "MB", "GB", and "TB" между числом и единицей измерения обязательно ставить пробел, хотя пробел не обязателен в командах:

set work_mem to '8mB';

ERROR:  invalid value for parameter "work_mem": "8mB"

HINT:  Valid units for this parameter are "B", "kB", "MB", "GB", and "TB".

set work_mem to '8MB';

SET

set work_mem to '8 MB';

SET

Значения, принимаемые Платформой стоит протестировать на странице Конфигурация, где в окнах изменения значений приведены примеры и справка по форматам значений параметров.


Слайд 170

Синхронизация на странице Конфигурация

На странице Экземпляр -> Конфигурация -> ГРУППА ПАРАМЕТРОВ есть кнопка "Синхронизировать и применить". При нажатии на кнопку появится всплывающее окно со списком параметров и их значений, которые будут применены, если нажать красную кнопку "Синхронизировать".

Привязать экземпляр к группе параметров и синхронизировать его - разные понятия.

Привязать экземпляр - значит установить связь между ним и группой параметров в рамках Платформы.

Синхронизировать - значит применить значения группы параметров и модификаторы к привязанному к группе и модификаторам экземпляру. Применяться будут параметры, значения которых отличаются от тех, которые установлены у экземпляра.

Изменения на странице Конфигурация применяется только к текущему экземпляру. К другим экземплярам, с которыми может быть связана группа, изменения не применяются (не выполняется синхронизация). Изменения всегда применяются с учетом модификаторов:


Слайд 171

Синхронизация на странице модуля: Группы параметров

Второй способ синхронизации на странице: Модули -> Группы параметров -> ЭКЗЕМПЛЯРЫ. На этой странице можно выделить галочкой экземпляры, внизу появится всплывающее окно "Синхронизировать и применить". При нажатии на эту кнопку появится всплывающее окно "Синхронизация". В этом окне кнопка "Синхронизировать всё" красного цвета, однако кнопка белого цвета "Синхронизировать текущий" равноправна и может быть нажата вместо красной кнопки. В этом окне вкладки с названиями экземпляров. Можно кликать на названия экземпляров, просматривать параметры, которые будут к ним применены и нажимать на кнопку "Синхронизировать текущий". Значения параметров у разных экземпляров могут быть разными, если с ними связаны разные модификаторы.

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

Процесс синхронизации асинхронный и может занимать до 5 минут. До истечения этого времени и не менее минуты на странице Конфигурация будут отображаться прежние значения параметров.


Слайд 172


Слайд 173

Список кластеров Patroni и их экземпляров

Кластер Patroni это экземпляр PostgreSQL, принимающий изменения (master, primary, основной, ведущий) и несколько физических реплик (standby, резервных). Patroni наблюдает за доступностью экземпляров и, если мастер не доступен, то из одной из реплик делает мастера.

На страницу Cluster Config можно попасть со страницы "Рабочие пространства", вкладка КЛАСТЕРЫ. На этой странице кликнуть на строку с именем кластера и в открывшейся странице нажать кнопку "Конфигурация кластера".

Кнопка "Пауза/Обслуживание" приостанавливает работу скрипта Patroni. Скрипт Patroni не будет пытаться что-либо менять в работе экземпляров PostgreSQL.

Кнопка "Возобновить" - возобновит работу скрипта Patroni.

Меню, которое открывается при нажатии на три точки у экземпляра PostgreSQL в списке "Экземпляры кластера":

У мастера (Primary) пункты "Повторная инициализация" и "Переключиться" не активны. Переключиться можно только на реплику. Повторно инициализировать мастер нельзя, это можно только после переключения на реплику.

Переключение происходит по правилу: если есть синхронная реплика (synchronous_mode: true), то только её можно сделать мастером. Если синхронной реплики нет, то мастером можно сделать любую доступную реплику.

"Перезагрузить" означает перечитать конфигурацию, без перезапуска экземпляра. "Повторная инициализация" - пересоздание реплики скриптом Patroni.

При нажатии на кнопки "Пауза/Обслуживание" и "Возобновить" подтверждение не запрашивается, сразу появляется зелёнок всплывающее сообщение.

https://docs.tantorlabs.ru/tp/6.0/instances/ug_clusters_pages.html


Слайд 174

Кластер Patroni: МОНИТОРИНГ

На вкладке МОНИТОРИНГ показывается история смены ролей кластеров PostgreSQL.

Зелёный цвет - роль мастера.

Желтый цвет - физическая реплика.


Слайд 175

Страница Конфигурация у экземпляра в кластере Patroni

Если зайти на страницу конфигурации экземпляра PostgreSQL, который управляется Patroni появится желтая полоса с предупреждением и ссылкой на страницу настройки кластера Patroni.


Слайд 176

Страница настройки кластера

Страница Cluster Config имеет две вкладки: ПАРАМЕТРЫ PARONI и ПАРАМЕТРЫ POSTGRESQL.

Вкладка ПАРАМЕТРЫ POSTGRESQL показывает параметры, одинаковые на всех экземплярах PostgreSQL, включённых в кластер Patroni. Если значения параметра на разных экземплярах разные, то страница их не покажет. Например, значение параметра PostgreSQL  transaction_read_only на реплике будет установлено on, а на мастере off. Также значения параметров репликации in_hot_standby, primary_conninfo, primary_slot_name отличаются на разных экземплярах.

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

Параметры на вкладке ПАРАМЕТРЫ POSTGRESQL можно фильтровать по статусу значения и по типу: Только Patroni (параметры PostgreSQL, который устанавливаются и меняются скриптом Patroni), Только PostgreSQL (скрипт Patroni их не настраивает).

Вкладка ПАРАМЕТРЫ PARONI показывает параметры самого Patroni.

Конфигуратор Платформы может рекомендовать значения параметров на этой вкладке.

Группы параметров и модификаторы для экземпляров в кластере Patroni не могут использоваться.

Параметры Patroni которые не меняются на вкладке: pg_ident, pg_hba, ignore_slots, slots, pause.

Параметры фильтра на этой вкладке: Параметры Patroni можно фильтровать по статусу значения:

Имеет рекомендуемое значение, Не по умолчанию, Изменённые значения, Изменения ожидают перезагрузки, Изменения ожидают перезапуска.

При открытии страницы Cluster Config появится предупреждение о том, что страницы Платформы работают корректно c Patroni версий от 3.3.0 до 4.0.5 и то, что если поменять вручную (командой alter system set или отредактировав файлы) файлы параметров конфигурации экземпляра в составе Patroni, то на странице Cluster Config значения параметров не будут отображаться, но эти значения будут видны на странице Конфигурация этого экземпляра, на которой их поменять будет нельзя. Если выбрать галочку "Больше не показывать", то вернуть это окно можно будет нажав на желтый треугольник.

https://docs.tantorlabs.ru/tp/6.0/instances/ug_cluster_config.html


Слайд 177

Практика 12

1. Откройте страницу Конфигурация экземпляра PostgreSQL на порту 5432

2. Посмотрите рекомендации конфигуратора по изменению значений параметров

3. Выберите тип диска

4. Посмотрите изменились ли рекомендуемые значения (могут немного измениться)

5. Нажмите на значок фильтрации параметров, воспользуйтесь

поиском параметров, найдите параметр work_mem

6. Увеличьте значение параметра work_mem в два раза, примените изменения


Слайд 178


Слайд 179

Браузер БД

"Браузер БД" - пункт меню Экземпляра. В нём список баз данных, мониторинг которых включен в пункте меню "Настройки мониторинга".

На странице "Браузер БД" справа в строках у каждой базы данных по три кнопки: Аудит, SQL-редактор, Схема данных. При нажатии на кнопки открываются страницы этих инструментов.


Слайд 180

Аудит объектов Баз Данных

На странице Аудит в правой верхней части можно нажать на красную кнопку "Собрать данные" и правая часть страницы ПРОВЕРКА СОСТОЯНИЯ заполнится данными аудита (анализа) структур хранения (таблиц и их индексов) базы данных.

У плашек с точками внизу можно кликать на серые точки и содержимое плашки будет меняться. Например, в плашке ИНДЕКСЫ появится: btree(8), что означает, что кроме одного hash-индекса в базе данных ещё есть 8 индексов типа btree:

postgres=# \di+

                             List of relations

Schema |         Name         | Type  |   Table | Access method |  Size  |

-------+----------------------+-------+-----------------+-------+--------+

public | order_items_1_pkey   | index | order_items_1   | btree | 3312 kB|

public | order_items_2_pkey   | index | order_items_2   | btree | 21 MB  |

public | pgbench_accounts_pkey| index | pgbench_accounts| btree | 4408 kB|

public | pgbench_branches_pkey| index | pgbench_branches| btree | 16 kB  |

public | pgbench_tellers_pkey | index | pgbench_tellers | btree | 16 kB  |

public | stock_items_descr_idx| index | stock_items     | hash  | 106 MB |

public | stock_items_idx01    | index | stock_items     | btree | 69 MB  |

public | stock_items_idx02    | index | stock_items     | btree | 78 MB  |

public | stock_items_pk       | index | stock_items     | btree | 632 MB |

(9 rows)

У плашек с графиками справа вверху есть три точки, при нажатии на которые появляется меню со строкой "Выпадающее окно", при нажатии на которую появляется всплывающее окно с увеличенным графиком.

В фильтре (значок воронки под красной кнопкой) три значения для фильтрации рекомендаций аудита объектов:

Информация, Предупреждение, Проблема.


Слайд 181

Аудит объектов Баз Данных: графики

У плашек: полученные, возвращенные, вставленные, обновленные, удаленные строки одно и то же всплывающее окно с 5 линиями на графике.

Если вы видите одну линию, то это означает, что остальные линии около нуля. Например, клиенту возвращается 300 тыс. строк в секунду, а обновлённых, удалённых, выбранных строк 3 тыс. в секунду. Относительно возвращённых (Returned) они невелики и их графики незаметны. Чтобы увидеть их графики, в правой верхней части всплывающего окна нужно кликнуть на Returned, линия вставленных строк исчезнет, масштаб вертикальной оси изменится и станут видны линии вставленных, удаленных и возвращенных строк. Пример, где линии не видны, хотя отображение всех линий включено:


Слайд 182

Аудит объектов Баз Данных: Рекомендации

На странице две вкладки: ОБЗОР и СТАТИСТИКА. В правой части окна "ПРОВЕРКА СОСТОЯНИЯ" (HELTHCHECKS) выдаются списки таблиц с неоптимальными параметрами хранения. Одна и та же таблица может встречаться в нескольких пунктах. Если кликнуть на название таблицы или индекса, то обновится средняя часть окна и откроются делали хранения этого объекта. В нижней части будут "Рекомендации".

Если таблица встречается в нескольких пунктах, то нажимая на значки "<" и ">" можно проматывать рекомендации по объекту.

В рекомендации, где предлагается выполнить analyze, vacuum ,vacuum full внизу появится красная кнопка с названием команды:

В рекомендации также может

быть текст команды:


Слайд 183

Статистика по таблице

При выборе вкладки СТАТИСТИКА откроется страница с накопительной статистикой по таблице. Внизу страницы - гистограмма распределения значений в столбцах таблицы. В выпадающем меню справа вверху плашки графика можно выбрать столбец таблицы, по которому будет показана гистограмма.


Слайд 184

Браузер БД: Схема данных

Можно посмотреть объекты баз данных, в  том числе команды создания индексов, представлений, функций, процедур. Можно посмотреть данные в таблицах.


Слайд 185

Браузер БД: SQL-редактор

Нажав на кнопку "Включить SQL-редактор" появится окно для ввода команд SQL.

Запросы, выдающие большое число строк могут прерваться по таймауту.

Можно открыть несколько окон ЗАПРОС и вводить в них разные команды.

В редакторе команды, если курсор находится на имени объекта, можно нажать комбинацю клавиш Ctrl+пробел и появится всплывающее окно со списком имён объектов, чтобы можно было выбрать, а не набирать имя на клавиатуре.

На странице максимально показывается 1001 строка. Максимальное время выполнения запроса 30 секунд.


Слайд 186

Практика 13

1. Откройте страницу "Браузер БД" - пункт меню Экземпляра PostgreSQL на порту 5432.

2. Нажмите кнопку Аудит.

3. Для проверки таблиц базы данных запустите сбор данных, нажав на

кнопку "Обновить данные"/"Collect data".

7. Раскройте и войдите в один из результатов проверки, посмотрите рекомендации.

9. Посмотрите какие статистические данные о таблице представлены на открывшемся окне вкладок ОБЗОР и СТАТИСТИКА.


Слайд 187


Слайд 188

Обслуживание баз данных

На странице Обслуживание экземпляра PostgreSQL две вкладки: ОБСЛУЖИВАНИЕ и ИСТОРИЯ. Если поля в таблице не заполнены, то нужно нажать на красную кнопку "Собрать данные". Если данные заполнены, то на кнопке будет написано "Обновить данные". На странице список баз данных. Ссылок на вкладке нет, кроме всплывающего меню из трёх пунктов: Зацикливание (Wraparound), Раздутие индексов, Раздутие таблиц.

На вкладке ИСТОРИЯ - история задач обслуживания vacuum, vacuum full, vacuum freeze, analyze, reindex, reindex concurrently, которые вызывались со страницы "Обслуживание" и со страницы "Браузер БД" -> "Аудит". С этих страниц можно вызвать задачи обслуживания. Задачи обслуживания с этих страниц посылаются не через планировщик Платформы, хотя меню планировщика Платформы называется "Задачи".

На вкладке ИСТОРИЯ тоже нет ссылок, кроме одного пункта в контекстном меню задач "Открыть". Если кликнуть у задачи в истории на этот пункт откроется страница с деталями задачи:


Слайд 189

Запуск задачи обслуживания

На странице "Раздутие таблиц" показывается процент раздутия, то есть на сколько процентов файлы таблицы занимают больше места, чем могли бы. Для уменьшения файлов можно использовать команды vacuum full или cluster.

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

При нажатии на кнопку появится всплывающее окно с предупреждением, что на время выполнения vacuum full и reindex таблицы и индексы будут заблокированы на время до получения блокировки плюс время выполнения команды.

У команды analyze только одна опция skip_locked. У команды vacuum full тоже одна опция analyze. У команды vacuum много опций, но не все.

Желтый треугольник означает всего лишь предупреждение, что в столбце ПОСЛЕДНЯЯ ОЧИСТКА не учитывается vacuum full, только обычный vacuum.

Розовым цветом в столбце РАЗДУТИЕ % выделяются значения с существенным процентом раздутия. Бледно-розовым цветом выделяются строки, выбранные галочкой.


Слайд 190

Статус задач обслуживания

После запуска процедуры обслуживания в правом нижнем углу появится фиолетовое уведомление: "Внимание! Идет техническое обслуживание. Посмотреть детали":

Если кликнуть на ссылку в уведомлении, откроется страница "Статус операции обслуживания", на которой можно узнать на какой стадии находится задача. Задачи могут быть в очереди, уже запущены или завершены. В таблице будет присутствовать столбец "Process" с индикатором, отображающим прогресс выполнения операции. Задачу можно прервать, нажав на кнопку "Остановить обслуживание"/"Stop maintenance". Если статус задачи "Начало"/"Started", то процесс уже запущен и не будет прерван.

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

Пока она не завершится другой процесс обслуживания не запустится, на экземпляре может работать одна команда обслуживания.


Слайд 191

Обслуживание индексов, счетчика транзакций и мультитранзакций

На странице "Раздутие индексов" всё аналогично таблицам, только показывается процент раздутия индексов. Для уменьшения размера файлов индекса используются команды reindex concurrently или reindex.

Несколько REINDEX (без CONCURRENTLY) могут одновременно работать по одной таблице пересоздавая разные индексы. REINDEX CONCURRENTLY может перестраивать только один индекс и не может работать одновременно с другими REINDEX по этой же таблице.

При выборе CONCURRENTLY, PostgreSQL создаст новый индекс, а после его

проверки переключит таблицу на новый индекс, удалив старый.

Команда, которая не может одновременно работать с другой выполняющейся командой будет ждать, либо выдаст ошибку после таймаута, заданного параметром lock_timeout.

Розовым цветом в столбце КОЭФФ. РАЗДУТИЯ % выделяются значения с существенным процентом раздутия. Бледно-розовым цветом выделяются строки, выбранные галочкой.

Проценты в столбцах К ЗАЦИКЛИВАНИЮ и К АВАРИЙНОЙ АВТООЧИСТКЕ на основе параметров экземпляра autovacuum_freeze_max_age и vacuum_failsafe_age.

По умолчанию заморозка начинается, когда она не была выполнена autovacuum_freeze_max_age (для PostgreSQL с 32-битным счетчиком транзакций по умолчанию 200 млн.) транзакций, отстоящих от самой последней транзакции. Если заморозка не успеет выполниться и для PostgreSQL с 32-битным счетчиком транзакций пройдёт 2 млрд транзакций, то их номера перестанут выдаваться до тех пор, пока заморозка не будет выполнена.

По умолчанию процессы автовакуума, выполняющие заморозку, работают с задержкой, заданной параметром конфигурации autovacuum_vacuum_cost_delay. Они могут не успевать обрабатывать таблицы. Задержку стоит отключить, но по умолчанию она включена. Игнорироваться она начинает только по достижении vacuum_failsafe_age транзакций (для PostgreSQL с 32-битным счетчиком транзакций по умолчанию 1 600 000 000), то есть, когда останется 400 млн. транзакций до аварийной остановки экземпляра, которая произойдёт, если заморозка не успеет завершиться. В Tantor Postgres SE и SE 1C используется 64-битный счетчик транзакций и зацикливание счетчика транзакций на уровне экземпляра неактуально, хотя заморозка выполняется.


Слайд 192

Практика 14

1. Откройте страницу "Обслуживание"/"Maintenance".

2. соберите или обновите данные, нажав кнопку "Собрать данные" или "Обновить данные".

3. Запустите по очереди задачи обслуживания на какой-нибудь таблице и индексе:

vacuum full таблицы и reindex для индекса.

4. Перейдите во вкладку история обслуживания, откройте историю последней задачи

обслуживания.


Слайд 193


Слайд 194

Планировщик Платформы

Планировщик задач (Job Scheduler) позволяет запускать:

1) команды SQL на экземпляре PostgreSQL

2) командные скрипты linux на хосте экземпляра.

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

со страницы рабочих пространств: кликнуть на значок листа с крестиком "Невыполненные задачи" или кликнуть на три точки и выбрать в появившемся меню строку "Показать неудачные задачи";

через пункт "Задачи" в самом конце меню экземпляра.

На экземпляре может быть назначено много задач. Задача может состоять из нескольких шагов (действий).


Слайд 195

Страница со списком задач

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

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

Ползунком в столбце Активна можно отключать-включать задачу. Если задача неактивна, то она не запустится ни по расписанию, ни вручную.

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

Столбец ДЕЙСТВИЯ - число действий (шагов) в задаче. Ноль действий - задаче нечего выполнять.

Столбец ЗАПУЩЕНО - кто запустил задачу: пользователь или таймер.

В столбце СТАТУС задачи может быть текст:

Запланировано;

Не запланировано;

В процессе - задача сейчас выполняется;

Успешно - успешно выполнена или ошибки на действиях задачи были проигнорированы;

Прервано -  была прервана нажатием кнопки "Прервать сейчас";

Тайм-аут - прервана из-за превышения таймаута;

Ошибка - в процессе выполнения была неигнорируемая ошибка;

Ожидание выполнения ;

Неизвестный тип - задача, для которой нельзя определить статус, указывает на то, что что-то не работает.


Слайд 196

Добавление задачи

Добавить задачу можно на странице "Задачи". Также можно вызывать окно добавления задачи со страницы экземпляров, кликнув на три точки и выбрав в выпадающем меню "Добавить задачу".

При добавлении задачи обязательно указать:

рабочее пространство, экземпляр. Они нужны, чтобы определить какой Агент Платформы будет посылать задачу на выполнение;

1) доступы CLI (имя и пароль пользователя linux) - из под кого будут выполняться действия в linux. Если не указать, то скрипты в linux не смогут выполняться;

2) доступы SQL (имя и пароль пользователя PostgreSQL) - из под кого будут выполняться команды SQL. Если не указать, то команды SQL не смогут выполняться;

3) дату и время, когда задача начнет выполняться. Нужно указать момент в будущем. После создания задачи её можно будет запускать вручную.


Слайд 197

Добавление действий в задачу

На слайде показы окна добавления двух видов действий: SQL и команд в linux.


Слайд 198

Редактирование действий задачи

Если выбрать сортировку по столбцу СТАТУС - отобразится порядок выполнения действий.

В столбце СТАТУС может быть:

Создано - созданные, но еще не выполненные действия;

Ошибка - выполненные с ошибкой;

В процессе - действия в процессе выполнения;

Успешно - успешно выполненные;

Прервано - прерванные в процессе выполнения;

Тайм аут.


Слайд 199

Задачи в Журнале событий

Активную задачу можно запустить. Либо выбрав галочкой задачу и нажав во всплывающем окне "Запустить сейчас" или кликнуть на три точки справа в строке задачи и в появившемся меню выбрать "Запустить сейчас".

Ненадолго появится сообщение на зелёном фоне со ссылкой на страницу "Текущая активность". Если успеть, то можно кликнуть на ссылку. Если не успеть, то страницу можно открыть в меню Экземпляра. Эта страница удобна для просмотра сессий и блокировок. Для наблюдения за процессом выполнения задачи удобна страница "Журнал событий" (пункт меню на слайде). В нём можно посмотреть сообщения с действий задачи.


Слайд 200

Фильтры в Журнале событий

Страница Журнала общая для всех сообщений, а не только для задач. При открытии Журнала через меню задач устанавливается Фильтр по типу события = TASK и экземпляру.

В Журнале показывается результат команд (stdout, errout) для обоих типов команд linux и SQL:


Слайд 201

Экземпляр: страница Репликация у мастера

На странице Репликация у мастера (Primary, основной, ведущий кластер) две вкладки.

На вкладке СЛОТЫ - список слотов и их статус, на этой вкладке ссылок нет.

На вкладке ГОРЯЧИЙ РЕЗЕРВ показан список реплик. При клике на строке или при выборе в меню "Открыть" появится страница со статистикой слота репликации:


Слайд 202

Экземпляр: пункт меню Репликация на странице реплики

У реплик (Standby, резервные, ведомые кластера) на странице Репликация только одна вкладка СТАТУС и содержимое этой страницы другое. На ней детали подключения к источнику WAL.


Слайд 203

Настройка тенанта: Резервное копирование

В 6 версии Платформы появилась возможность для тенанта добавить одно соединение с сервером резервирования RuBackup. Это делается на странице Настройки тенанта -> Резервное копирование. Если соединение не создано, то на странице будет красная кнопка "Добавить подключение", если создана, то будет строка с параметрами подключения. Через всплывающее меню можно удалить или поменять параметры соединения.

https://docs.tantorlabs.ru/tp/6.0/admin/backup.html


Слайд 204

Мониторинг бэкапов

На страницу "Мониторинг бэкапов" можно попасть:

1) через пункт в меню "Модули"

2) через пункт в меню Экземпляра, рядом с пунктом Задачи

3) через ссылку "Невыполненные бэкапы" на странице "Рабочие пространства" тенанта.

На странице показывается таблица со списком бэкапов. Графические элементы на странице стандартны и встречаются на многих страницах платформы:

1 - Поиск по первому столбцу таблицы

2 - обновление страницы

3 - фильтрация строк, показываемых в таблице

4 - выбор столбцов, которые будут отображаться

5 - названия столбцов

https://docs.tantorlabs.ru/tp/6.0/admin/backup_monitoring.html


Слайд 205


Слайд 206

Обзор анонимайзера

Анонимайзер - визуальный интерфейс к утилите pg_anon. Утилита есть как в Платформе Tantor, так и в Tantor Postgres. Анонимизация или маскировка данных - это:

1) поиск столбцов, в которых могут храниться конфиденциальные данные. Например, имена, телефоны, баланс счетов, адреса

2) Замена данных в таких столбцах на похожие, с сохранением связей между таблицами.

3) Выгрузка утилитой pg_dump данных в изменённом виде.

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

Анонимайзер аналогичен функционалу маскировки данных в Oracle Enterprise Manager Cloud Control.

Ссылка на анонимайзер находится в пункте меню Модули (четыре квадратика слева внизу линейки меню). На странице Анонимайзера две вкладки: ИСТОЧНИКИ ДАННЫХ и СЛОВАРИ.

pg_anon установлен в контейнере pg_anon Платформы. Устанавливать утилиту на хосты баз данных не обязательно.

Можно установить pg_anon  и настроить REST-интерфейс по документации:

https://docs.tantorlabs.ru/tp/6.0/admin/pg_anon_stateless.html


Слайд 207

Словари анонимайзера

Три вида словарей:

Сенситивные - правила, описывающие, в каких таблицах и столбцах находятся конфиденциальные данные и как их менять (анонимизировать). Замена выполняется функциями. Стандартно поставляемые функции: https://github.com/TantorLabs/pg_anon/blob/master/init.sql

Несенситивные - правила, описывающие таблицы и столбцы, которые не конфиденциальны. Используются:

1) чтобы видеть в одном месте, что не будет изменено анонимизатором

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

3) чтобы скопировать чать JSON-документа в сенситивный словарь по тем таблицам и столбуам, которые нужно анонимизировать, но сканирование не вывило в них конфиденциальных данных

Мета-словари - правила, которые описывают признаки конфиденциальных данных (тип и содержание) данных. Используются на шаге сканирования, на котором создаётся сенситивный словарь. Для сканирования нужен хотя бы один мета-словарь и в Платформе есть  предустановленный мета-словарь. Словари можно дублировать и редактировать полученную копию или создать новый. Создать можно мета-словарь и сенситивный. Несенситивный не создается вручную, так как это не имеет смысла: этот словарь не используется анонимизатором и нужен для того, чтобы убедиться, что не будет столбцов, которые содержат конфиденциальные данные, но не будут анонимизированы. Также из несенситивного словаря можно копировать описатели таблиц и столбцов в сенситивный словарь.


Слайд 208

Мета-словари

Словари описываются в формате JSON и удобны для просмотра и редактирования.

Созданный вручную мета-словарь нужно редактировать. В нём нет директив, только шаблон структуры JSON-документа. Создавать собственный мета-словарь необязательно, можно использовать предустановленный meta dictionary (system dictionary), который готов к использованию. Его можно дублировать, а дубль редактировать.

Шаблон мета-словаря, созданного вручную имеет примерно 77 строк.


Слайд 209

Шаблон сенситивного словаря

Кнопка "Сохранить изменения" становится активной, если внести изменение в текст.

Обычно, сенситивный словарь создается автоматически на основе мета-словаря в результате сканирования. Словарь, созданный вручную, может добавляться к словарю, созданному автоматически, на шаге предпросмотра и дампа (выгрузки).

 Шаблон сенситивного словаря, созданного вручную:

{

        "dictionary": [ # Словарь сенситивных полей. Что будет анонимизироваться. Если анонимизируется база, но поле не указано в этом словаре, то оно будет дампиться "как есть" 

                {

                        "schema": "str" # полное название схемы

                        "schema_mask": "str_regexp" # частичное название схемы (regexp)

                        "table": "str" # полное название таблицы

                        "table_mask": "str_regexp" # частичное название таблицы (regexp)

                        "fields": { # перечень полей и функции анонимизации для этих полей. Остальные поля в таблице не будут анонимизироваться. Используется либо fields, либо raw_sql

                                "field_name_str" : "func_str"

                        }

                        "raw_sql": "str" # Сырой SQL запрос, который говорит, как нужно вытянуть таблицу. Внутри можно построить разные джойны и т.п. Либо fields, либо raw_sql

                },

    ],

        "dictionary_exclude": [ # Исключения из ДАМПА. Какие таблицы/схемы необходимо исключить из дампа полностью

                {

                        "schema": "str" # полное название схемы

                        "schema_mask": "str_regexp" # частичное название схемы (regexp)

                        "table": "str" # полное название таблицы

                        "table_mask": "str_regexp" # частичное название таблицы (regexp)

                }

        ]

}


Слайд 210

Источники данных

В результате анонимизации создаётся дамп утилитой pg_dump в формате custom. Можно создать дампы: структуры объектов, данных (строк таблиц), структуры+данных. Формат custom читается стандартной утилитой pg_restore, которая может на основе формата custom создать файл дампа в формате plain.

Для анонимизации сначала создается источник данных. Достаточно указать адрес базы данных PostgreSQL. Появится новая запись в списке Источников данных на этой странице. На нее можно кликнуть или выбрать "Открыть" в меню, которое появляется по нажатию на три точки. В этом меню есть пункты: Открыть, Переименовать, Редактировать, Удалить.

После нажатя в всплывающем окне на кнопку "Создать" на странице появится этот созданный источник данных. Можно кликнуть на строку и откроется страница с 5 вкладками, где дальше описываются шаги процесса анонимизации.


Слайд 211

Сканирование

На странице Источника данных 5 вкладок.

Сначала нужно запустить сканирование - выявление столбцов в таблицах, которые будут анонимизированы и определить способ маскировки. На вкладке СКАНИРОВАНИЕ нужно нажать на кнопку "Добавить сканирование". Появится визард, в котором указываются параметры сканирования.

На первом шаге в поле "Название сенситивного словаря" нужно указать название нового "словаря", который будет создан. Этот словарь будет содержать список таблиц, столбцов и функций маскировки. Несенситивный словарь опционален, в нём будут перечислены таблицы и столбцы, которые не будут меняться. Результатом сканирования будут только сенситивный словарь и опционально несенситивный.

На втором шаге выбирается мета-словарь. По умолчанию имеется системный словарь и достаточно выбрать его, чтобы перейти на третий шаг.

На третьем и четвертом опциональных шагах можно выбрать уже существующие сенситивные и несенситивные словари. Несенситивные повлияют только тем, что  предпросмотр и дамп могут ускориться, так как логике анонимизатора не нужно будет обрабатывать перечисленные в несенситивном словаре столбцы таблиц. Выбор сенситивных словарей повлияет на следующие шаги (предпросмотри и дамп) тем, что принудительно будет считаться конфиденциальным те столбцы, которые в них указаны и будут использоваться правила анонимизации, которые указаны для этихстолбцов.

На последнем шаге запускается задача по сканированию.
Для задачи нужно указать имя и пароль для
подсоединения к базе. Можнно нажать кнопку
"Отменить", тогда задача будет создана, но не
запущена. Её можно будет запустить позже.


Слайд 212

Результат сканирования

По результатам сканирования создается сенситивный словарь и, если был указан, то несенситивный. По ссылке в выпадающем меню "Словари-результаты" можно посмотреть список созданных словарей, открыть их и отредактировать их текст. Кнопка "Сохранить изменения" становится активной, если внести изменения в текст словаря.

Также на словари можно перейти через вкладку СЛОВАРИ на первой странице анонимайзера.

Пункт меню "Запустить" активен, если не вводились детали подсоединения к базе данных. Запустить сканирование можно один раз. Сканирование после получения словарей бесполезно и его можно удалить.


Слайд 213

Создание предпросмотра

Предпросмотр (preview) - визуальное сравнение строк таблиц до анонимизации и после, чтобы проверить как будут выглядеть анонимизированные данные в сравнении с исходными.

Предпросмотр необязательный шаг, но он нетрудоёмкий и лёгок в использовании.

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

Предпросмотр можно запускать неоднократно. Если удалить словарь, который использует предпросмотр, то предпросмотр не запустится.


Слайд 214

Предпросмотр

При запуске предпросмотра открывается просмотр таблиц, которые попадут в дамп. Данные таблиц показываются в двух вариантах: исходные до анонимизации (сверху) и после (снизу).

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

Максимальное число таблиц при предпросмотре 5000.


Слайд 215

Дамп

Дампы создаются в директории: /opt/tantor/eco/pg_anon и принадлежат root с правами rwxr-xr-x. Можно использовать относительное название директории "dump1" или со слэшем в начале "/dump1".

При указании "../" дамп будет создан внутри контейнера (оверлее). Например, при указании пути к дампу "./../dump3" будет создана директория в контейнере pg_anon:

docker exec -it pg_anon ls /pg_anon/dump3

Такой дамп будет доступен и его можно будет использовать и удалить на этой странице, но он не будет виден в директории хоста.

При создании дампа нужно указать хотя бы один сенситивный словарь, по правилам которого будут выбираться столбцы и применяться функции, которые изменять значения полей так, чтобы анонимизировать (маскировать) данные - сделать невозможным получение исходных данных.


Слайд 216

Загрузка дампа

Дампы можно передать тем, кому они нужны в виде файлов.

Если Платформа имеет доступ к базе, в которую нужно загрузить анонимизированные данные, то можно в всплывающем меню выбрать пункт "Восстановить" и указать параметры подсоединения к такой базе данных и дамп будет восстановлен стандартной утилитой pg_restore в этой базе данных.

База данных должна существовать.

Созданные восстановления будут видны в закладке РЕСТОРЫ:

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


Слайд 217

Практика 15

1. Откройте страницу "Задачи"

2. Создайте и выполните задачу с SQL-запросом, возвращающим результат

3. Добавьте в задачу новое действие: команду операционной системы.

4. Запустите задачу и посмотрите в Журнале событий результат выполнения команд.


Слайд 218


Слайд 219

Способы установки Платформы Tantor

Типичная установка программного обеспечения выполняется на один хост или виртуальную машину с операционной системой:

Astra Linux версий 1.7.5+, 1.8

RedOS 7.3+

Centos 7+

Платформа устанавливается в виде набора docker-контейнеров. В операционной системе должны быть установлены:

Docker Engine 20.10.13+

Docker Compose 1.29.2+

Типичная установка позволяет обслуживать до 1000 экземпляров PostgreSQL. Для обслуживания большего числа экземпляров Платформу нужно устанавливать в режиме отказоустойчивости. Установку в режиме отказоустойчивости и миграцию на новые версии помогает выполнить техническая поддержка Тантор Лабс.

При типичной установке миграция на новые версии Платформы Tantor выполняется стандартным инсталлятором с минимальным простоем доступа к Платформе.

Платформа версии 6.0 поддерживает версии PostgreSQL от 10 до 17.x версии. Более новые версии PostgreSQL поддерживаются более новыми версиями Платформы.


Слайд 220

Утилита диагностики Платформы Tantor

В директории дистрибутива есть утилита диагностики sdc-tantor. Она может запускаться в любое время: до инсталляции или в процессе эксплуатации Платформы. Обычно утилиту используют в случае неудачного завершения установки, обновления Платформы, при обращении в техническую поддержку Tantor.

Утилита создаёт архив с результатами выполнения команд. В архиве html-файл, в котором ссылки на текстовые файлы архива, чтобы удобнее просматривать их с помощью браузера.

https://docs.tantorlabs.ru/tp/6.0/admin/admin_diagnostic_utility.html


Слайд 221

Запуск инсталлятора Платформы Tantor

Как скачать дистрибутив описано в документации:

https://docs.tantorlabs.ru/tp/6.0/admin/wizard.html

В документации приводится ссылка на текущую версию дистрибутива Платформы.

Дистрибутив можно скачать на хост, на котором будет устанавливаться Платформа следующими командами.

переключиться в root, так как инсталлятор запускается из под пользователя root в операционной системе linux:

sudo bash или su -

создать директорию для дистрибутива:

mkdir /opt/tantor/eco6

перейти в созданную директорию:

cd /opt/tantor/eco6

скачать дистрибутив, размер архива примерно 3Гб:

wget https://public.tantorlabs.ru/tantor-eco-6.0.1.tar.gz -O tantor-eco-6.0.1.tar.gz

распаковать дистрибутив:

tar xzf tantor-eco-6.0.1.tar.gz

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

rm -f tantor-eco-6.0.1.tar.gz

Чтобы можно было работать с контейнерами docker не только из-под root опционально можно добавить пользователей в группу docker:

usermod -aG docker astra

usermod -aG docker postgres

Можно поменять разрешения на файл инсталлятора и диагностики, чтобы его мог запускать только root:

chmod 700 ./sdc-tantor ./installer

Запуск инсталлятора:

./installer

Инсталлятор можно запустить перейдя в директорию с файлом инсталлятора и если не переключиться в root, то можно набрать команду: sudo ./installer

Инсталлятор распознаёт установленную Платформу и предложит обновить на новую версию. Если Платформа не установлена, то предложит установить.


Слайд 222

Обновление Платформы Tantor

Инсталлятор проверяет свободное место. Если его недостаточно, то выдаст предупреждение:

- Checking available free space...                               [No]

- There is not enough space to perform the update. The space must be twice the size of the space currently occupied by the platform.

- Continue? (Y/N):

Если в процессе обновления Платформа будет недоступна, инсталлятор об этом напишет. Обновление минорной версии не занимает много времени (в пределах 5 минут) и обновление заменяет контейнеры с их остановкой. При обновлении мажорной версии обычно создаются новые контейнеры, а контейнеры предыдущей версии останавливаются после создания новых и простой минимизируется. При ошибке запуска контейнеров выдается ошибка:

- Start Tantor Platform...                                       [No]

- Execution error. Could not start Tantor Platform. Additional information can be found in the tantor_eco_installation.log file. Please contact the support team for assistance to install Tantor Platform.

При возникновении ошибок можно перезапустить службу docker:

sudo systemctl restart docker

посмотреть статус контейнеров, обратив внимание на неработающие контейнера. docker не удобен для администрирования, команды посмотреть неработающие контейнеры нет. Можно посмотреть по статусам:

docker ps -a --filter "status=exited"

docker ps -a --filter "status=created"

docker ps -a --filter "status=stopped"

или полный список: docker ps -a и визуально оценить какие контейнеры не работают. Запустить не работающие, но относящиеся к текущей версии Платформы, командой (пример):

docker start pg_monitor_dispatcher

Стоит проверить статус этого контейнера после миграции, так как он может не запуститься.


Слайд 223

Очистка места после обновления

Если на хосте docker используется только Платформой, то пересоздать контейнеры можно сначала удалив их командой:

cd /opt/tantor/eco

docker-compose --env-file /opt/tantor/eco/platform.env -f /opt/tantor/eco/docker-compose.yml down

И создать их заново (понадобится доступ в интернет):

docker-compose --env-file /opt/tantor/eco/platform.env -f /opt/tantor/eco/docker-compose.yml up -d

Пересоздание контейнеров может использоваться, если нет уверенности, что миграция прошла удачно.

После обновления или пересоздания остаются образы контейнеров прежней версии, которые занимают место. Для версии 6.0.0 это 5,5Гб. Посмотреть список контейнеров и их размеры можно командой:

docker images | grep 6.0

После проверки, что все контейнеры текущей версии работают можно проверив, что нет контейнеров текущей версии со статусами:

docker ps -a --filter "status=exited"

docker ps -a --filter "status=created"

docker ps -a --filter "status=stopped"

Можно удалить образы и освободить место командой:

docker rmi $(docker images | grep 6.0.0 | tr -s ' ' | cut -d ' ' -f 3)

docker container prune -f

docker image prune -a -f

docker system prune -a -f

Будут удалены все не работающие на момент выдачи команды (по любой причине) контейнеры и их образы. Вместо 6.0.0 нужно подставить старую версию, с которой обновлялись на новую версию.


Слайд 224


Слайд 225

docker и docker-compose

Контейнер docker - это изолированная виртуальная среда (аналог chroot), в которой запущены процессы нескольких приложений, в идеале одного приложения. Аппаратная виртуализация не используется, процессы в контейнерах это процессы операционной системы хоста. В отличие от chroot, изолируется:

1) файловая система, которая делится на слои и экономится место, если нужно запускать много контейнеров, в которых дублируются файлы

2) процессы разных контейнеров не могут обмениваться данными через общую память

3) сеть.

Докер позволяет упаковать уже установленную, работоспособную программу в образ (image) и распространять так, что она будет выполняться одинаковым образом. Пользователи программы могут запускать несколько экземпляров (контейнеров) программы на основе одного образа (image), вносить в них изменения. Контейнер - набор параметров для запуска на основе образа. Если изменения нежелательны, то можно пересоздать  контейнер. Перезапуск контейнеров очень быстрый, в отличие от запуска операционной системы и виртуальных машин. Это позволяет быстро менять версии приложения. С точки зрения использования, контейнер - это готовая к работе виртуальная машина с приложением, нужным ему окружением (переменные окружения, настройки и пакеты linux). Если приложение обрабатывает данные, то данные могут храниться в директориях хоста (docker volumes, тома), которые не исчезнут после пересоздания контейнера. Временные и постоянные данные могут храниться в слоях контейнера, в которых разрешена запись, но данные исчезнут после удаления контейнера с таким слоем.

Если приложение состоит из нескольких слабосвязанных частей (приложений), то для него оптимально иметь несколько образов. Например, если части обновляются с разной частотой, созданы разными разработчиками, им нужно разное окружение и разные библиотеки, нужно несколько экземпляров приложений. Такие приложения обычно распространяются с конфигурационным файлом в формате yaml. Название файла по умолчанию docker-compose.yml В файле описываются образы, параметры контейнеров, тома, сетевые настройки. Без docker-compose для запуска контейнеров приложения нужно было бы написать скрипт с набором команд (создания и настройки сетей и томов) утилиты docker для каждого контейнера. Суть docker-compose - использовать файл в формате yaml, вместо sh-скрипта. Есть публичное хранилище образов - hub.docker.com, что упрощает распространение приложений.


Слайд 226

Статусы контейнеров docker

Контейнер может находиться в состояниях:

Created (Создан)        - контейнер инициализирован, но не запущен,  docker create

Running (Запущен) - контейнер работает,  docker run, docker start

Paused (Приостановлен) - работа контейнера приостановлена, docker pause, docker unpause

Stopped (Остановлен) - контейнер остановлен, но не удален, docker stop, docker kill

Exited (Завершен) - контейнер завершил выполнение        , docker ps -a

Командой docker events можно просматривать события контейнеров. Командой docker stats просматривать использование ресурсов контейнерами:

docker stats

NAME                  CPU % MEMUSAGE MEM %  NET I/O       BLOCK I/O     PIDS

keeper                0.00%  19.9MiB 0.25%  1.6MB / 4.1MB 15.7MB /    0B   9

reverse-proxy         0.00%  10.1MiB 0.13%  2.0MB / 2.3MB 6.73MB /  20kB   6

backend               0.47%  34.1MiB 0.43%  0.9MB / 714kB   20MB /    0B  10

pg_explain           28.41% 460.5MiB 5.80%  0.1MB / 124kB   16MB / 4.1kB  64

pg_monitor_collector 10.04% 702.4MiB 8.85% 31.6MB /14.3MB 7.33MB / 8.1kB 118

pg_monitor_dispatcher 0.00%  45.6MiB 0.58%  1.2MB / 2.4MB 14.6MB / 8.1kB  23

pg_bouncer            0.13%  10.2MiB 0.13%  5.0MB / 5.1MB 9.81MB / 4.1kB   2

nats                  0.27%  16.0MiB 0.20%  1.2MB / 1.7MB 10.5MB / 1.3MB  12

pg_anon               0.24%  55.9MiB 0.70%  6.4kB /    0B  606kB / 328kB   6

operdb                2.19% 464.6MiB 5.85%  4.1MB / 745kB 94.4MB /26.9MB  52

tns_db                0.21% 549.1MiB 6.92%   15MB / 8.2MB   26MB /89.3MB 275

frontend              0.00%   7.3MiB 0.09%  5.7kB /    0B 3.64MB /20.5kB   5

maindb                0.16% 112.2MiB 1.41%  211kB / 203kB 13.1MB / 1.4MB  44

pg_configurator       0.01%  28.7MiB 0.36%  6.4kB /    0B 2.29MB /    0B   2

swagger_ui            0.00%   4.4MiB 0.06%  4.6kB /    0B 8.19kB / 1.1MB   5

Выйти из команд можно набрав ctrl+c.


Слайд 227

Сетевая изоляция контейнеров docker

Контейнеры могут использовать типы сетей: host (делят ip и порты с хостом, задержка меньше, но вероятны конфликты по ip-портам), overlay (docker-swarm для контейнеров на разных хостах), none. Большинство контейнеров использует тип bridge, для которого:

1)  docker добавляет правила в фаервол linux, которые изолируют сети докера друг от друга

2) сети имеют внутреннюю адресацию 172.x.*.*/16 и извне к таким ip-адресам контейнеров доступ возможен через проброс портов (правило PREROUTING, Destination NAT)

3) доступ из контейнеров в сеть хоста возможен через трансляцию адресов (правило POSTROUTING, Source NAT). Для проброса указываются порты на ip-адресах хоста, которые перенаправляются на порты ip-адресов контейнера, которые могут меняться при перезапуске контейнера:

services:

 nginx:

  container_name: reverse-proxy

  ports:

  - 80:80

  - 443:443

Если нужно, чтобы хост имел доступ к портам IP-адресов контейнеров сети докера не были изолированы, можно установить в файле службы докера /etc/systemd/system/multi-user.target.wants/docker.service

переменную окружения в разделе Service:

[Service]

Environment="DOCKER_INSECURE_NO_IPTABLES_RAW=1"

Для применения параметра нужно перечитать параметры служб и перезапустить контейнеры:

systemctl daemon-reload

systemctl restart docker

Начиная с 28 версии докера можно использовать параметр:

cat << EOF > /etc/docker/daemon.json

 { "allow-direct-routing": true }

EOF

Для применения параметра достаточно перечитать конфигурацию:

systemctl reload dockerd


Слайд 228

Сети docker типа bridge

Название сети, которую используют контейнеры Платформы можно посмотреть командой:

docker inspect reverse-proxy | grep NetworkMode
           "NetworkMode": "eco_default",
Файл /opt/tantor/eco/docker-compose.yml не определяет параметры сети и docker создаёт сети самостоятельно, назначает ip-адреса контейнерам по умолчанию из диапазона 172.x.*.*/16 , где X при создании или пересоздании контейнеров каждый раз меняется монотонно возрастая, чтобы была уникальность и не было конфликтов.

Список сетей, созданных докером можно посмотреть командой:

docker network ls

NETWORK ID     NAME             DRIVER    SCOPE

d8cb75c1a797   eco_default      bridge    local

В конце файлов docker-compose.yml могут указываться настройки сетей. Например:

networks:

 default:

  ipam:

   driver: default

   config:

    - subnet: 172.28.0.0/16

указывает, что нужно создать сеть и назначить ей диапазон 172.28.0.0/16. При создании новых контейнеров для них создаются подсети и контейнера разных подсетей не могут соединяться друг с другом. Можно добавить контейнер в существующую подсеть командой docker network connect eco_default имя_контейнера , но это усложнит сетевую топологию. Можно при создании контейнеров указать, чтобы сеть не создавалась, а контейнерам назначались IP адреса существующих сетей. Контейнера смогут взаимодействовать с контейнерами этой существующей сети. Для этого в секции "networks:" в конце файла docker-compose.yml можно указать имя существующей сети и "external: true":

networks:

  имя_сети:

   name: eco_default

   external: true


Слайд 229

Содержимое файла docker-compose.yml

Полезно уметь читать содержимое этого файла, чтобы понимать какие порты, сети, тома  используются. Описание файла есть в документации

https://docs.docker.com/reference/compose-file/services/

В правой части страницы есть ссылки на ключи файла. YAML (ещё один язык разметки, форматирования данных) хранит данные в понятном человеку формате и использует более минималистичный синтаксис, чем JSON. Поддерживаются комментарии (значок #); кавычки и апострофы в строках не обязательны. Расширения файлов yaml или yml. Для отступов используются пробелы, табуляции не стоит использовать. Регистр букв важен.

Данные хранятся в виде пар:

key: value.

Последовательности (списки, массивы) хранят набор значений в одном ключе. Обозначаются отступами (одним или несколькими пробелами) , тире, пробелом:

key:

 - value1

 - value2

или квадратными скобками:

key:  [value1, value2]

Можно хранить иерархии:

superkey:

 key:

  subkey1: 123

  subkey2: value

или одной строкой:

superkey: { key: { subkey: 123 }, subkey2: value }

Якоря (ссылки &) позволяют использовать фрагмент (*) несколько раз в том же файле:

key1: &anchor1

  surname: Doe

  name: John1

key2:

  <<: *anchor1

  name: John

Значок << позволяет использовать фрагмент с возможностью переопределения значений.


Слайд 230

Файл docker-compose.yml

name: myapp # необязательный ключ с названием проекта

services: # корневой параметр, сервис = контейнер

  service_name:   # название контейнера

  image: [registry/][проект/]образ[:тег|@хэш] registry это URL репозитория, если он не указан, то используется публичный репозиторий. Для частных репозиториев используется софт, который сам распространяется как образ докера: Docker Registry (registry:latest) или Nexus (sonatype/nexus3:latest). Адрес репозитория Платформы: nexus.tantorlabs.ru  Тег(метка) - это версия, часто используют слово latest

  container_name: имя # название контейнера, иначе оно будет сгенерировано автоматически. Также используют, если не хотят, чтобы запускалось больше одного контейнера

  hostname: имя # имя хоста в контейнере, иначе оно будет сгенерировано автоматически и иметь вид 1234c1234a12

  ports: # перечисление смапированных портов хоста на порты контейнера

   - 1234:1234 # по умолчанию, мапирование на все интерфейсы

  environment: # имена и значения переменных окружения, которые будут установлены внутри контейнера. Может еще использоваться env_file - путь к файлу с переменными

   - ПЕРЕМЕННАЯ=ЗНАЧЕНИЕ

  sysctls: # параметры linux, которые задаются sysctl

   net.ipv4.tcp_syncookies: 0  # формат задания параметров

  restart: # что делать докеру, если контейнер сбойнёт. По умолчанию no - не рестартовать. always - рестартовать. on-failure[:число_попыток] - рестартовать, если код выхода скрипта отличен от нуля. unless-stopped - рестартовать, но если если контейнер был остановлен, то не запускать

  network_mode: "host" # "none" - изолировать. "host" - доступ к сетевым интерфейсам хоста. "service:[имя_контейнера]" - имя контейнера, к которому дать доступ. "container:[id_контейнера]" - id контейнера, к которому дать доступ.

Если ключ network_mode установлен, то нельзя установить ключ network, это будет ошибкой.

  init: true # включает службу init с номером PID=1.

https://docs.docker.com/reference/compose-file/services/


Слайд 231

Файл docker-compose.yml: networks

  networks: # список названий сетей, к которым подключается контейнер.

   default: # название сети

    ipv4_address: 172.21.1.1

    aliases: # список дополнительных имён хоста, кроме имени службы, которые другое контейнеры могут использовать для обращения к контейнеру

     - host1

networks:# список сетей на уровне файла docker-compose.

 default:

  name: eco_default

  external: true

  extra_hosts: # список имён хостов для добавления в /etc/hosts контейнера

   - "education.tantorlabs.ru:10.0.2.15"

  command: # перекрывает команду по умолчанию, в том числе CMD из образа

  - '--path.procfs=/host/proc'

  - /bin/sh -c 'echo "hello $$HOSTNAME"'

 environment: # переменные окружения. Можно указать в двух форматах (map и array):

    PATRONI_API_CONNECT_PORT: 8008

    - SHOW=true

 entrypoint: [/bin/sh, /entrypoint.sh] # перекрывает команду CMD из образа

 depends_on: # можно задать порядок запуска и остановки контейнеров

  maindb:

   restart: true # (начиная с версии 2.17.0) при ручном рестарте контейнера от которого зависит перезапускает зависимый контейнер. При автоматическом рестарте после die не работает

   condition: service_healthy # контейнер работоспособен. Ещё могут быть значения:

service_started - запустился, service_completed_successfully - успешно выполнился

   required: true # (начиная с версии 2.20.0) по умолчанию true. Если установлен в false, то зависимости должны не должны работать (быть остановлены или не доступны)

stop_signal: SIGQUIT # как останавливать службу. По умолчанию, SIGQUIT (15)


Слайд 232

Файл docker-compose.yml

 healthcheck: # проверка (начиная с 2.20.2), чтобы сервис считался работоспособным.

  interval: 10s

  retries: 5

  start_period: 10s

  test:

   - CMD-SHELL # выполнит /bin/sh, команда передаётся одной строкой

   - pg_isready -U postgres -d postgres -h 127.0.0.1

   timeout: 5s

Можно указать команду так:

    test: pg_isready -U postgres -d postgres -h 127.0.0.1

    test: ["CMD", "pg_isready", "-U", "postgres", "-d", "postgres", "-h", "127.0.0.1"]

    test: NONE # отключает тест, который указан в образе, но лучше отключать так:

 healthcheck:

  disable: true

 user: root # пользователь, под которым запускать процесс в контейнере. Перекрывает параметр USER в образе. По умолчанию root.

 working_dir: /root # перекрывает директорию, установленную параметром WORKDIR в образе

 stop_grace_period: 1m30s # через сколько послать SIGKILL, если контейнер не остановился сигналом, указанным в stop_signal, по умолчанию 10s

  group_add: # членом каких групп сделать пользователь внутри контейнера

   - mail


Слайд 233

Файл docker-compose.yml: volumes

  volumes:

  - ./dir:/u01/dir:rw # Короткий синтаксис. Монтирует ./dir (файл или директорию на хосте) на /u01/dir (соответственно файл или директорию) в режиме чтения-записи (режим по умолчанию). Есть режим ro. Можно использовать относительные пути, относительно директории, в которой находится файл docker-compose.yml. Относительный путь рекомендуется начинать с точки: "./" или двоеточия "../".

   - type: volume # может быть volume, bind, tmpfs, image, npipe, cluster

    source: db-data # путь на хосте к файлу или директории или название в ключа в корневой секции volumes( используется для монтировки тома, параметры которого уже определены, в нескольких контейнерах)

    target: /data # путь в контейнере

    volume:

     nocopy: true # аналог ro (read only)

     subpath: sub # путь внутри образа для монтирования, вместо корня образа

   - type: bind # тип монтировки, не медленнее volume.

     source: /var/run/postgres/postgres.sock

     target: /var/run/postgres/postgres.sock

     create_host_path: true

  volumes_from: # монтирует все тома, указанные в другом контейнере

   - service_name:ro

   - container:container_name:rw

volumes:

  db-data: # название тома

   external: true

   name: actual-name-of-volume # если у смонтированного тома другое название

  db-data1:

   driver_opts:

    type: "nfs"

    o: "addr=10.0.2.15,nolock,soft,rw"

    device: ":/docker/example"


Слайд 234

Файл /etc/hosts в контейнере docker

В docker отсутствует встроенный сервер разрешения имён (DNS), а существующие программы "DNS-сервера" сложны для установки и конфигурирования. Проблема в том, что изменения в файле /etc/hosts контейнера, внесенные в файл командами типа:

docker exec -it -u root контейнер echo "172.0.0.1 www.dba1.ru" >> /etc/hosts

не сохраняются после перезапуска контейнера, а записи файла хоста не используются контейнерами.

Для добавления имени и IP в файл /etc/hosts контейнера нужно добавить в файл docker-compose.yml параметр:

 patroni0: &patroni-base

  image: ghcr.io/tantorlabs/patroni-docker:postgres-18

  entrypoint: [/bin/sh, /entrypoint.sh]

  restart: unless-stopped

  volumes:

   - ./patroni.yml:/patroni.yml:ro

   - ./entrypoint.sh:/entrypoint.sh:rw

   - ./patroni-data0:/var/lib/postgresql/patroni/main

  environment:

   PATRONI_API_CONNECT_PORT: 8008

  networks:

   patroni:

    ipv4_address: 172.21.1.1

  extra_hosts:

   - "education.tantorlabs.ru:10.0.2.15"

   - "host1.dba1.ru host2.dba.ru:10.0.2.15" #несколько имён на один ip адрес

При запуске одиночного контейнера:

docker run --add-host education.tantorlabs.ru:10.0.2.15 -rm -it image_name

https://docs.docker.com/reference/cli/docker/container/run/#add-host

Параметры linux, которые можно проверить, если трафик между сетями не проходит:

sysctl -w net.ipv4.ip_forward=1 маршрутизировать трафик между интерфейсами

sysctl -w net.ipv4.conf.all.route_localnet=1 пропускать трафик в локальные сети


Слайд 235

Установка и обновление docker и docker-compose

Платформе Tantor достаточно версии docker не ниже 20.10.13.

Контейнерам с Prometheus и Grafana могут потребоваться новые (актуальные) версии.

Если ключи репозитариев дистрибутивов не добавлены, то добавить их можно командами:

apt-get update

apt-get install ca-certificates curl gnupg

install -m 0755 -d /etc/apt/keyrings

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg

chmod a+r /etc/apt/keyrings/docker.gpg

echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian buster stable" >> /etc/apt/sources.list.d/docker.list

Обновление  кэша дистрибутивов и установка компонент docker:

apt-get update

apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin

Номер последней версии docker-compose можно посмотреть на странице: https://github.com/docker/compose/releases/latest

docker-compose должен быть установлен как исполняемый файл, а не интегрирован как плагин в docker:

curl -SL https://github.com/docker/compose/releases/download/v2.39.4/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

Проверить версии можно командами:

docker -v

Docker version 26.1.4

docker-compose -v

Docker Compose version v2.39.4

Для перезапуска контейнеров можно перейти в директорию с docker-compose.yml и выполнить команду: docker-compose restart

https://docs.docker.com/reference/compose-file/services/


Слайд 236


Слайд 237

Установка Prometheus и Grafana

Платформа Tantor может поставлять метрики для Prometheus и Grafana. Пример их установки в контейнеры docker приводится в документации:

https://docs.tantorlabs.ru/tp/6.0/admin/monitoring_with_prometheus_and_grafana.html

1) Под пользователем root создаётся файл docker-compose.yml

Содержимое файлов yaml чувствительно к пробелам, как и программы на языке python. Если файл yaml не принимается и выдаются ошибки, нужно проверить и расставить пробелы.

2) Перейти в директорию с файлом docker-compose.yml (в виртуальной машине к курсу это /root) и создать директории:

su -

mkdir -p prometheus/configuration/

mkdir -p prometheus/data/

3) Поменять владельца созданной директории на nobody:nogroup чтобы Prometheus мог читать и писать в директорию:

chown nobody:nogroup prometheus/data

4) Создать конфигурационный файл для сбора метрик с сервиса prometheus-node-exporter (пробелы важны):

cat << EOF > prometheus/configuration/prometheus.yml

scrape_configs:

- job_name: 'node'

  scrape_interval: 5s

  static_configs:

   - targets: ['node-exporter:9100']

EOF

5) Выполнить создание и запуск контейнеров в фоновом режиме (-d):

docker-compose -f /root/docker-compose.yml up -d

6) Проверить, что статус контейнеров Up:

docker container ps -a | egrep prom\|gra

grafana/grafana        Up 0.0.0.0:3000->3000/tcp

prom/prometheus:latest Up 0.0.0.0:9090->9090/tcp

prom/node-exporter     Up 0.0.0.0:9100->9100/tcp

Контейнеры хранят данные на томах и при пересоздании контейнеров (down, up -d) их настройки сохраняются.


Слайд 238

Создание в Grafana соединения с Prometheus

Открыть в браузере: http://localhost:3000 (admin/admin, пароль можно не менять при входе) - Grafana, http://localhost:9090 - Prometheus

Prometheus получает метрики через службы, работающие в контейнерах "exporter". В примере из документации есть контейнер "node-exporter", собирающий метрики хоста на котором запускается этот контейнер. Этот контейнер доступен по порту http://10.0.2.15:9100.

В документации описано как добавить контейнеры для мониторинга экземпляров PostgreSQL на основе образа "prometheuscommunity/postgres-exporter". Приложение (называют "backend") в контейнере может подсоединяться к экземпляру по сети, а значит контейнер может работать на произвольном хосте, а не только на хосте, где работает экземпляр PostgreSQL. Приложение конфигурируется файлом (queries.yaml), в который можно вставить произвольные SQL-запросы для сбора любых метрик.

Для мониторинга pgbouncer можно использовать контейнер из образа "spreaker/prometheus-pgbouncer-exporter".

В Graphana можно раскрыть в меню Connections, в нём кликнуть на пункт Data sources. На странице кликнуть на кнопку "Add data source". Появится длинный список программ, из которых Grafana может забирать метрики. Первым в списке идёт Prometheus. Можно кликнуть на него и в поле Prometheus server URL вбить "http://10.0.2.15:9090", адрес по которому доступен Prometheus. Нажать на кнопку Save & test и соединение сохранится.


Слайд 239

Импорт Dashboard в Grafana

Для добавления dashboard (страницы, на которой будут отрисовываться метрики) кликнуть в меню на Dashboards, сна открывшейся странице справа вверху выбрать New -> Import. На открывшейся странице "Import dashboard" ввести число 1860, нажать кнопку Load. Страница обновиться, на ней нажать синюю кнопку Import.

Появится страница с графиками.

При повторных заходах на страницу Dashboards импортированное будет отображаться в виде строки "Node Exporter Full":


Слайд 240

Интеграция с Triafly

Платформа хранит данные метрик не более 30 дней. Для хранения и анализ данных за любые интервалы времени Платформа может передавать данные в росиийскую программу "Триафлай.Аналитика". Эта программа собирает, хранит, анализирует, визуализирует собранные данные и строит по ним отчёты.

Со стороны Платформы Tantor достаточно создать токен типа "Датасеты". Он вводится в Триафлай.Аналитика в меню "Реестры" -> "(Input) Tenant API key" в поля столбца "API key". По умолчанию, данные будут загружаться из Платформы Tantor в Triafly раз в сутки.

Из этих данных создаются отчёты, по которым можно строить графики.

https://docs.tantorlabs.ru/tp/6.0/admin/triafly_bi.html


Слайд 241

Деинсталляция Платформы

Посмотреть проекты docker-compose: docker-compose ls

NAME       STATUS         CONFIG FILES

eco        running(14)    /opt/tantor/eco/docker-compose.yml

Если на хосте docker используется только Платформой, то остановить и удалить контейнеры и сети docker командами: cd /opt/tantor/eco

docker-compose --env-file /opt/tantor/eco/platform.env -f /opt/tantor/eco/docker-compose.yml down

Если нужно создать заново:

docker-compose --env-file /opt/tantor/eco/platform.env -f /opt/tantor/eco/docker-compose.yml up -d

удалить контейнеры Платформы:

docker rm -vf $(docker ps | grep tantorlabs | cut -d ' ' -f 1)

если нужно удалить все контейнеры:

docker rm -vf $(docker ps -aq)

удалить все образы Платформы:

docker rmi -f $(docker images|grep tantorlabs |tr -s ' '|cut -d ' ' -f 3)

если нужно удалить все образы:

docker rmi -f $(docker images -aq)

удалить все тома: docker volume rm $(docker volume ls -q)

удалить все сети докера: docker network rm $(docker network ls -q)

очистить место от контейнеров, которые остановлены:

docker container prune -f

docker image prune -f

docker volume prune -f

docker system prune -f

удалить директорию, куда устанавливается Платформа: rm -rf /opt/tantor/eco

удалить агент Платформы: apt-get remove -y pmaagent

удалить директорию агента:  rm -rf /var/lib/pma


Слайд 242

Установочные файлы

После разархивирования дистрибутива появятся файлы:

исполняемый файл docker-compose, на случай если он не установлен:

/opt/tantor/eco6/docker-compose -v

Docker Compose version v2.17.0

Версия может отличаться от той, что установлена:

/usr/local/bin/docker-compose -v

Docker Compose version v2.39.4

Инсталлятор не будет переустанавливать docker-compose, если он уже установлен.

Файл docker-compose.xml, по которому будут создаваться контейнеры

Утилита диагностики sdc-tantor

Исполняемый файл инсталлятора

Директория images, в которой находятся архивы с образами контейнеров.

https://docs.tantorlabs.ru/tp/6.0/admin/wizard.html


Слайд 243

Установка Платформы

Установка выполняется с правами root. Можно использовать sudo.

Нужно запустить файл installer.

administrator email будет использоваться как имя для входа в Платформу.

domain name это имя хоста, на котором устанавливается Платформа. Имя должно разрешаться в любой из IP-адресов хоста, на котором устанавливается Платформа. Имя будет использоваться Агентами для связи с Платформой по портам 443 и 4222.

Инсталлятор может создать самоподписанные сертификаты SSL(TLS).


Слайд 244

Установка Платформы

Инсталлятор предлагает выбрать один из трёх вариантов установки.

Введенный пароль не будет меняться при первом входе. Пароль не будет выводиться на экран.

Установка займёт примерно 10 минут.

Может быть выдано предупреждение о том, что Расширенная аналитика требует дополнительного конфигурирования:

- SSH keys id_rsa|id_rsa.pub don't exist in directory /opt/tantor/eco/ssh, due to this reason the Advanced Analytics tab will not work properly

###########################################################################

#          Tantor Platform version 6.0.1 is installed and running.        #

Please connect to Tantor Platform using:

Tantor Platform URL:                        https://education.tantorlabs.ru

Tantor Platform administrator email/login: student@dba1.ru

Tantor Platform administrator password:    ***********

###########################################################################

Платформа успешно установлена.

После установки можно открыть адрес https://education.tantorlabs.ru в  браузере.

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

После ввода имени и пароля, появится всплывающее окно с лицензионным соглашением. Слева в конце окна есть галочка о принятии лицензионного соглашения и кнопка OK.


Слайд 245

Установка Платформы вне докера

Платформа может устанавливаться вне докера на физические хосты и виртуальные машины. При установке используется ansible playbook.

Схема взаимодействия служб Платформы при отказоустойчивой установке:


Слайд 246

Установка Платформы вне докера

На слайде приведены названия служб Платформы.

На каждом сервере (виртуальной машине) группы должны быть открыты порты. Можно использовать и другие порты. По умолчанию используются:

Operdb: server port 25432

Operdb replica: server port 25432

Tensordb: server port 5432

Tensordb replica: server port 5432

Pgbouncer server port 15432

Nats cluster server port 6222 (each server)

Nats nginx server port 4222, 14222

App server ports: 5666 (backend), 7777 (internal pgconfigurator) 4200 (pgexplain), 8080 (frontend)

Reverse_proxy: 443 (https), 80 (http), 5666 (upstream to backend), 8081 (pmaagent download port), pgalerts 5667.

Помимо начальной установки вне докера можно вынести кластера баз данных PostgreSQL из контейнеров докер на хосты. Общая схема выноса описана в документации к 4 версии: https://docs.tantorlabs.ru/tp/4.2/db_move.html

Начиная с 5 версии Платформы, установить Платформу в отказоустойчивом режиме помогает техническая поддержка Тантор.


Слайд 247

Практика 16

1. Запустите инсталлятор /opt/tantor/eco6/installer и обновите Платформу. Обновите Агент в виртуальной машине через веб-интерфейс

2. Деинсталлируйте Платформу запустив скрипт /opt/tantor/uninstall-eco.sh

3. Установите Платформу запустив инсталлятор /opt/tantor/eco6/installer

4. После установки войдите в Платформу в браузере, используя имя и пароль, введённый при установке

5. Откройте System settings -> License и посмотрите срок действия лицензии и число CPUs


Слайд 248


Слайд 249

Установка Агента Платформы

Установка Агента может выполняться:

1) в веб-интерфейсе на странице добавления экземпляра (Add instance)

https://docs.tantorlabs.ru/tp/6.0/instances/instance_adding.html

2) в командной строке

https://docs.tantorlabs.ru/tp/6.0/instances/agent_instance_cli.html

3) через Ansible

https://docs.tantorlabs.ru/tp/6.0/instances/agent_ansible.html

https://github.com/TantorLabs/ansible_tantor_agent/archive/refs/heads/main.zip

Дистрибутив (пакет deb или rpm) доступен по адресу хоста Платформы:

https://хост_Платформы:8443/packages/pmaagent.deb

https://хост_Платформы:8443/packages/pmaagent.rpm

Пример команды для скачивания дистрибутива:

wget --no-check-certificate https://education.tantorlabs.ru:8443/packages/pmaagent.deb

Установка выполняется пользователем root или через sudo.

Если установка выполняется из дистрибутива не доступного всем, то команда установки:

sudo apt-get install ./pmaagent.deb

выдаст предупреждение, которое можно игнорировать:

N: Download is performed unsandboxed as root as file '/home/astra/pmaagent.deb' couldn't be accessed by user '_apt'. - pkgAcquire::Run (13: Permission denied)

Агент состоит из файлов:

1) исполняемый /usr/sbin/pmaagent размером ~30Мб.

2) /etc/sysconfig/pmaagent в котором можно задать переменные окружения агенту

3) /etc/logrotate.d/pmaagent, в котором указаны параметры ротации логфайла агента. Настройки по умолчанию: хранить максимум 7 суток до 10 файлов, файлы сжимать.

4) /usr/lib/systemd/system/pmaagent.service с параметрами запуска агента через systemd. Агент запускается под пользователем операционной системы postgres.

5) файлов в директории /var/lib/pma/agent. Файл конфигурации /var/lib/pma/agent/agent.yml содержит детали подсоединения к Платформе и создается при конфигурировании агента командой sudo pmaagent configure.


Слайд 250

Установка Агента в веб-интерфейсе

Агент используется для сбора метрик и выполнения команд в базах данных экземпляров PostgreSQL. На одном IP-адресе может работать только один агент.

Установка агента через веб-интерфейс выполняется при добавлении экземпляра PostgreSQL (в том числе, управляемого Patroni).

Нужно на странице Тенант -> Рабочее пространство вна вкладке ЭКЗЕМПЛЯРЫ нажать кнопку "Добавить экземпляр". Также можно перейти во складку КЛАСТЕРЫ и нажать кнопку "Добавить кластер Patroni" (более точно было бы "Добавить экземпляр мастера или реплики, входящих в кластер Patroni"). Разница только в том, что на этой странице галочка "Экземпляр является членом кластера Patroni" будет установлена.

После нажатия на кнопку "Добавить экземпляр" появится окно визарда, где на первом шаге выбирается Тип экземпляра: PostgreSQL или Tantor. Разделение сделано для учёта лицензий: все сборки Tantor Postgres включают лицензии на использование Платформы и не исчерпывают число учитываемых ядер процессоров.

Если экземпляр под управлением Patroni, то надо выбрать галочку и указать порт REST-API интерфейса Patroni, доступном на этом IP-адресе (обычно, 8008).

https://docs.tantorlabs.ru/tp/6.0/instances/instance_adding.html


Слайд 251

Установка Агента в веб-интерфейсе

На третьем шаге выбирается операционная система. Выбор определяет набор команд для установки и конфигурирования агента. Дистрибутив агнета можно скачть из репозитория nexus.tantorlabs.ru или, если поставить галочку "У меня нет доступа к Интернет, используйте локальную/оффлайн установку".

После установки пакета Агент не запускается, так как его файл конфигурации ещё не был создан. Нажимать кнопку "Обновить статус Агента" не нужно, она не поажет работающий Агент.

Команду /usr/sbin/pmaagent configure --encoded_metadata можно выполнять и под пользователем операционной системы postgres или root:

root@tantor:~# pmaagent configure --encoded_metadata

###########################################################################

#                      PMA Agent. Version 6.0.1.                          #

#              Stage: Agent Metadata based initialization.                #

#           Local date/time: Friday, 10-Oct-25 14:42:45 MSK               #

###########################################################################

- Starting the Agent Metadata based initialization...                  [OK]

- Please provide the Agent Metadata (available on the installation user interface): PvwyzfuPN+eVP0OHsnqgy2bjmWCPqwhOD6FmWLqoldsdBt+ReHSiSOuZ8eIenA2gAn4NfDqj6b4T...

- Saving the configuration data into the file /var/lib/pma/agent/agent.yml]...[OK]

- PMA Agent has been successfully pre-configured. DONE.

Агент сконфигурирован, но не запущен и экземпляр не добавлен. Для запуска службы Агента нужно выполнить:

root@tantor:~# systemctl daemon-reload

root@tantor:~# systemctl restart pmaagent

root@tantor:~# systemctl enable pmaagent

Агент будет запущен. Если на странице не нажимается кнопка "Далее", то это ошибка в веб-интерфейсе и нужно нажать на значок квадратики (копирование текста) и кнопка Далее перестанет показывать всплывающее окно и позволит пройти дальше. В любом случае, можно прервать работу визарда и зайти в него позже, те шаги, которые выполнили выполнять повторно не нужно.

Добавление экземпляра PostgreSQL выполняется в командной строке на четвёртом шаге:

root@tantor:~# pmaagent configure --config_postgres -d postgres -p 5432


Слайд 252

Регистрация Агента в Платформе через веб-интерфейс

При добавлении экземпляра под управление Агента запрашивается подтверждение, надо набрать proceed. Набрать пароль для пользователя (роли) PostgreSQL pma_user. Если пользователь существует, то после ошибки создания пользователя нужно набрать что создавать не нужно и что нужно поменять ему пароль. Отказаться от смены пароля нельзя - экземпляр не будет добавлен в Платформу.

- Creating the [pma_user] database user...                           [FAIL]

- Database user [pma_user] already exists.

- Do you wish to create a new database user? (yes/no): no

- Do you wish to change password for pma_user? (yes/no): yes

- Checking the pg_hba configuration...                                 [OK]

- Updating the [/var/lib/postgresql/tantor-se-17/data/pg_hba.conf]file [OK]

- Reloading the PostgreSQL configuration...                            [OK]

- Testing connection to database with provided parameters...           [OK]

- Overwriting the [/var/lib/pma/agent/agent.yml] configuration file... [OK]

- Reconfiguration has been completed successfully. OK.

- Please click 'NEXT' in the installation web interface to proceed to step #5


Слайд 253

Установка и регистрация Агента в командной строке

Установка Агента через командную строку (CLI ) такая же, как и через веб-интерфейс.

Любым способом скачивается и устанавливается Агент:
curl "https://education.tantorlabs.ru:8443/packages/pmaagent.deb" -o /tmp/pmaagent.deb -k
wget --no-check-certificate
https://education.tantorlabs.ru:8443/packages/pmaagent.deb -O /tmp/pmaagent.deb
apt-get autoremove -y
apt-get remove -y pmaagent
apt-get install -y /tmp/pmaagent.deb

Для регистрации Агента в Платформе нужен токен. Для этого нужно зайти в веб-интерфесе Платформы в меню "Настройки тенанта"->"Токены"->"Добавить новый токен".

В открывшемся окне ввести название в поле "Метка", указать срок действия, выбрать Область применения "Установка". Появится окно с токеном, который можно скопировать в буфер обмена.

Ессли токен будет потерян, то восстановить его нельзя, только выпустить новый токен. Прежний токен можно удалить в любой момент и он перестанет действовать.

Токен можно использовать многократно до истечения срока действия.

root@tantor:~# pmaagent register --access-token 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJwbWEiLCJleHAiOjE3NjI4OTQ3OTksImlhdCI6MTc2MDEwODUyMSwianRpIjoiZTczMjZhYzgtMDNiNC00MTZkLTllMjEtNjdiODUxOGVkMmI0IiwidGVuYW50SUQiOjEsInRlbmFudEtleSI6IjczZGY2YTA1LTc5MTktNGQ5Yi05MDg2LTAzYWRjOGQxZDU1NiIsInNjb3BlIjoiSU5TVEFMTCJ9.bksiGsCEV1ONN5LRUIy_d6wsAv8xEhhb8myjSEjfu_o' --host '10.0.2.15' --workspace-name 'Workspace 1' --endpoint 'education.tantorlabs.ru:4222'

Agent successfully registered

В параметре host лучше указывать IP-адрес сетевого интерфейса хоста. Имя рабочего пространства обязательно и чувствительно к регистру.  Имя хоста или IP-адрес Платформы и порт обязательны. По указанному имени Агент будет соединяться с Платформой.  Значение можно поменять в файле /var/lib/pma/agent/agent.yml

Агент можно дерегистрировать, даже если он обслуживает экземпляры PostgreSQL:

root@tantor:~# pmaagent deregister --confirm
Agent successfully deregistered


Слайд 254

Перезапуск Агента после регистрации в Платформе

Если Агент уже зарегистрирован, повторная регистрация выдаст ошибку:

Agent already exists

После установки Агента и его регистрации в Платформе Агент нужно рестартовать, иначе Платформа будет показывать, что Агент не доступен:

sudo systemctl restart pmaagent

Рестартовать Агент можно также после добавления экземпляров. Если в Агенте не зарегистрирован ни один экземпляр, то в веб-интерфейсе Платформы версия Агента показывается как 0.0.0.

Экземпляры PostgreSQL можно регистрировать в командной строке.

По умолчанию, экземпляр PostgreSQL прослушивает только локальный сетевой интерфейс.

Список интерфейсов для прослушивания можно посмотреть в параметре listen_addresses:

psql -c "\dconfig listen_addresses"
List of configuration parameters
   Parameter     | Value  
------------------+-------
listen_addresses | *

Если пароль пользователю postgres кластера PostgreSQL не установлен, его можно установить:

psql -c "alter user postgres password 'postgres';"


Слайд 255

Регистрация экземпляра PostgreSQL в командной строке

Регистрация экземпляров:

pmaagent instances add --name 'Primary' --environment 'SERVER' --type 'TantorDB' --db-host '10.0.2.15' --db-port '5432' --db-user 'pma_user' --db-pass 'pma_user' --db-admin-user 'postgres'  --db-admin-pass 'postgres' --confirm

pmaagent instances add --name 'Replica' --environment 'SERVER' --type 'TantorDB' --db-host '10.0.2.15' --db-port '5433' --db-user 'pma_user' --db-pass 'pma_user' --db-admin-user 'postgres'  --db-admin-pass 'postgres' --confirm

##############################################################################

#                                PMA Agent. Version 6.0.1.                   #

#                            Add on-premise PostgreSQL instance              #

##############################################################################

- Testing database connection using provided host [10.0.2.15]...          [OK]

- Checking if the PostgreSQL instance is in recovery mode...              [OK]

- Checking if the [postgresql-contrib] packaged is installed......        [OK]

- Checking if the [pg_stat_statements] extension is installed......       [OK]

- Checking if the [pg_store_plans] extension is installed......           [OK]

- Creating the [pma_user] database user...                              [FAIL]

- Checking the pg_hba configuration...                                    [OK]

- Updating the [/var/lib/postgresql/tantor-se-17/data/pg_hba.conf] file...[OK]

- Reloading the PostgreSQL configuration...                               [OK]

- Testing connection to database with provided parameters...              [OK]

Instance [9e2a2a6b-56ba-4e14-9b59-bcbb20499fd6] has been added successfully.

Если аутентификация без пароля (trust в pg_hba.cong), то для регистрации экземпляра пароль не требуется и его можно не указывать в параметре --db-admin-pass.

В командной строке можно добавлять экземпляры под управлением Patroni.

Если экземпляр зарегистрирован, то команда выдаст ошибку:

Failed to add a new instance [Instance with the provided host [10.0.2.15] and port [5433] exists]

https://docs.tantorlabs.ru/tp/6.0/instances/agent_instance_cli.html


Слайд 256

Практика 17

1. Добавьте экземпляр с установкой Агента через веб-интерфейс

3. Перейдите на страницу "Обзор" добавленного экземпляра. Дождитесь, когда окно подгрузит все данные

4. Добавьте экземпляр реплики через командную строку


Слайд 257

Практика 18

Конфигурирование Расширенной аналитики (Advanced analytics)

https://docs.tantorlabs.ru/tp/6.0/admin/pg_monitor_installation.html

1. Создайте ключи RSA

2. Настройте параметры командами ALTER SYSTEM SET в postgresql.auto.conf

3. Проверьте, что Расширенная аналитика работает