![](https://habrastorage.org/getpro/habr/upload_files/617/01c/873/61701c873b89ba87f7467953008f1277.png)
Предыстория
И снова привет, хабр!
Вы когда-нибудь использовали СУБД PostgreSQL? Лично я привык к консольной утилите psql. Да, я слышал про pgadmin, navicat ну или DBeaver в конце концов, но вот руки до их использования у меня никак не доходили… до этого момента.
Иногда требования, предъявляемые решаемой задачей, могут выйти за пределы любимой командной строки, да и любому разработчику полезно выходить из зоны комфорта изучать новые технологии.
В одной такой задаче мне предстояло работать с несколькими базами данных одновременно: выполнять разные запросы к ним и смотреть аналитику, параллельно фильтровать несколько таблиц рядом. При этом мне бы хотелось видеть, как планировщик будет строить план этих запросов (на всякий случай).
Поверьте друзья, терминал с psql - это, конечно, хорошо, но делать кучу операций иногда неудобно даже с терминальным мультиплексором, например, tmux.
Учитывая все эти сложности, я занялся поиском подходящего инструмента. Так мне подвернулась возможность изучить платформу Tantor, и в этой статье я поведаю о своем опыте и расскажу, почему интерфейсы - это удобно.
Содержание
Как установить?
Рабочие пространства
Работа с экземплярами
Конфигурации
Обслуживание
Инспектор баз данных
Профайлер запросов
Активности
Репликация
Графики
Конфигурация мониторинга
Анализ логов
Работа с кластерами и агентами
Горизонты развития
Вместо заключения
Как установить?
Требования перечислены вот тут. Следует учитывать: Тантор - платформа, которая предоставляет высокие показатели производительности, поэтому в качестве минимума заявлено хотя бы 4 ЦПУ и 8 ГБ оперативной памяти, что, я считаю, для современного мира ИТ-технологий - норм.
Переходим к программной части. Ось по стандарту - Linux, я буду использовать CentOS 7, как это написано в требованиях. Здесь же docker-compose, а для интерфейса нам понадобятся мой любимый google chrome.
В разделе “Администратору” → “Подготовительные действия” перечислены все команды, необходимые для установки платформы. Тут хочу обратить внимание на создание пользователя.
![Рис. 1. Меню активации пользователей Рис. 1. Меню активации пользователей](https://habrastorage.org/getpro/habr/upload_files/c80/68b/04a/c8068b04a7e0ed6e73697b07bf831cce.png)
—А можно ли отключить пользователя на определенное время?
—Да, можно, процедура называется “Деактивация” и “Активация пользователя” соответственно.
Пользователя создали. На этом моменте администратор нам больше не понадобится, хотя у него еще очень много функций, таких как лицензирование, управление рабочими пространствами и группами пользователей, передача прав владельца и даже интеграция со службами сообщений.
Возможности
А что вообще эта платформа умеет? И вот тут начинается самое интересное …
Рабочие пространства
Теперь открываем интерфейс и логинимся. Кстати, хочу отметить: то, что мне больше всего нравится в интерфейсах, - это их интуитивность. И вот тут как раз такой пример:
![Рисунок 2. Рабочие пространства Рисунок 2. Рабочие пространства](https://habrastorage.org/getpro/habr/upload_files/c73/345/c0f/c73345c0fa91c893d3aff0f387151624.png)
Что мы тут видим? Количество кнопок не избыточно, они имеют характерные названия, а не сомнительные наброски - так что нам не приходится догадываться - какая кнопка за что отвечает.
Давайте создадим рабочее пространство, перейдем в него и посмотрим что тут можно сделать. Видно сколько инстансов и предупреждений в каждом рабочем пространстве в режиме реального времени, а также можно переименовать рабочее пространство или удалить его при необходимости.
![Рисунок 3. Инстансы Рисунок 3. Инстансы](https://habrastorage.org/getpro/habr/upload_files/655/0fe/11f/6550fe11fb8babaf96554b096798d28f.png)
И еще одна характерная черта - это цветовые индикаторы рабочих пространств.
![Таблица 1. Цветовые индикаторы инстансов Таблица 1. Цветовые индикаторы инстансов](https://habrastorage.org/getpro/habr/upload_files/5f4/188/6ff/5f41886ff41b4ae1a57cc26e0cc0bba7.png)
Предлагаю посмотреть что из себя представляет рабочее пространство, поэтому давайте зайдем внутрь!
Работа с экземплярами
В уже привычном мне меню расположены три вкладки для работы с экземплярами, кластерами и агентами. Рассмотрим каждую подробнее.
Экземпляр - это основная сущность рабочего пространства. Экземпляр представляет из себя сервер PostgreSQL. Для его добавления я нажимаю вот на эту кнопку:
![Рисунок 4. Добавление нового инстанса постгрес Рисунок 4. Добавление нового инстанса постгрес](https://habrastorage.org/getpro/habr/upload_files/3c8/777/22c/3c877722cbae146a23c766b7011d68b2.png)
Затем выбираю тип из предложенных. Это может быть , PostgreSQL, СУБД Tantor или другой форк. Конфигурирую параметры агента и в несколько нетрудных шагов наш экземпляр подключен
У экземпляров тоже есть цветовые статусы, их можно перенести в другое рабочее пространство или удалить. Даже метку можно добавить.
![Рисунок 5. Добавление метки (label) инстансу ../_images/image44.png](https://habrastorage.org/getpro/habr/upload_files/ff7/051/6eb/ff70516eb52e950150084f69ac8d6edf.png)
Но давайте посмотрим, что внутри у экземпляра? Объемное количество инфографики в плитках. Например, среднее время запроса обозначено цифрой 1:
![Рисунок 6. Инфографика инстанса ../_images/image53.png](https://habrastorage.org/getpro/habr/upload_files/903/bbe/e53/903bbee5317dc97af6a5cb187c2099cd.png)
Каждый график можно увеличить и рассмотреть. Я когда в первый раз увидел количество разделов на панели слева - был шокирован разно образностью функционала касательно экземпляров. Но давайте вкратце рассмотрим основные из них.
Конфигурации
![Рисунок 7. Конфигурации ../_images/image46.png](https://habrastorage.org/getpro/habr/upload_files/61a/825/19c/61a82519c84d2d6a49ee02d27b9e705c.png)
Если по простому - это отображение главного конфиг-файла postgresql.conf и визуализация всех его “ключей”. Здесь вы можете изменить все то, что можно редактировать в конфиге Postgres, то есть – вообще все. Просто делать это можно не меняя константы в конфиге, а за пару кликов в интерфейсе. А самое интересное, что данный модуль предлагает рекомендации для установки параметров конфигурации, которые основаны на метриках о реальной нагрузке.
Обслуживание
Далее следует раздел обслуживания. Он нужен для того, чтобы отслеживать и удалять раздувание (bloat) таблиц и индексов, а так же заморозить счетчик транзакций.
![Рисунок 8. Обслуживание ../_images/image54.png](https://habrastorage.org/getpro/habr/upload_files/d6e/a1d/96d/d6ea1d96d2b4b938c451325044273b3b.png)
Описать раздувание можно примерно так: таблицы в Postgres хранятся в виде “страниц” по 8 килобайт за штуку. Когда страница заполняется - создается новая, но если из ранее заполненной удалить несколько строк - то на их месте останутся “пустышки”. При слишком быстрых обновлениях/удалениях autovacuum может не справляться с чисткой пустышек и они будут появляться почти также часто как и новые страницы. Итого имеем ооочень большую таблицу на множества страниц, но при этом многие их них частично пусты.
Такое же может происходить и с индексами. В этом разделе есть три параметра для каждой базы данных:
Исправление раздувания таблиц
Исправление раздувания индексов
Исправление переполнения счетчика транзакций
Инспектор баз данных
Следующий раздел - это инспектор баз данных и здесь представлена вся информация по базе данных и посмотрите как прекрасно она отображается:
![Рисунок 9. Инспектор ../_images/image61.png](https://habrastorage.org/getpro/habr/upload_files/103/679/c5c/103679c5c9ca11815517597cae5d1a58.png)
Основная функция этого раздела — это конечно Health Check. То есть у вас есть возможность проверить работоспособность частей системы. Под частями я подразумеваю конечно же таблицы.
Профайлер запросов
И вот мы подошли к одному из самых интересных разделов этого меню а именно — к профайлеру запросов. Как вы догадались – этот модуль предназначен для профилирования запроса, а работа его основана на сборе статистики из расширения pg_stat_statements а также pg_store_plans и модуля анализа логов (Advanced analytics).
Все данные из этого раздела группируются особым образом чтобы исключить дублирование для идентичных запросов. Здесь вы можете увидеть разнообразный функционал, например статистику планировщика:
![Рисунок 10. Профайлер запросов ../_images/query_image3.jpg](https://habrastorage.org/getpro/habr/upload_files/b98/13f/ca7/b9813fca7e6f2bb95351a96709da35cf.jpeg)
Основной компонент этого раздела — это навигатор, который позволяет оценить сколько времени занял каждый узел. То есть оценить усреднённые показатели скорости доступа к диску при чтении/записи.
![Рисунок 11. План запроса ../_images/image115.png](https://habrastorage.org/getpro/habr/upload_files/3f2/636/af0/3f2636af09954d171f111665099dfad4.png)
Кто занимался профилированием запросов понимает о чём речь. Когда запрос становится большим и даже сокращенная форма плана занимает 2-3 экрана зачастую не удается понять какой “узел” съедает больше всего времени.
В такой ситуации может выручить круговая диаграмма. Хорошо что Тантор предоставляет такой функционал. Сразу видна примерная доля потребления ресурсов каждым узлом.
![Рисунок 12. Круговая диаграмма ../_images/image147.png](https://habrastorage.org/getpro/habr/upload_files/f93/c3b/78f/f93c3b78f0b6438d112b1fe7bc364e15.png)
Однако круговая диаграмма плохо показывает отношения между разными узлами. Для этого гораздо лучше подойдет вариант с плиткой, представленный выше.
А еще на диаграмме реального выполнения можно посмотреть полную цепочку вложений служебных узлов:
![Рисунок 13. Диаграмма реального выполнения ../_images/image161.png](https://habrastorage.org/getpro/habr/upload_files/fe1/3ba/b46/fe13bab465d610c20cd2682ddd9ea684.png)
Активности
С активностями всё достаточно просто: тут есть пользовательские и системные активности. Для каждой группы рассчитывается агрегированные значения в абсолютных и относительных величинах а информация собирается по принципу on-demand и обновляется каждые 5 секунд.
Пользовательские активности отображают все текущие сессии с разными статусами (Running, Waiting, Blocking). А системные - информацию о (внезапно) системных процессах
![Рисунок 14. Активности ../_images/image138.png](https://habrastorage.org/getpro/habr/upload_files/b09/6ab/fdc/b096abfdcf6f9495d30106fc8d55dfb6.png)
Репликация
Если вы хотите масштабироваться, то специально для вас посвящён данный раздел репликации. Если кто не знает, то репликация - это вот ссылка. Репликация здесь разделена на две вкладки “Сервера реплики” и “Слот репликации”. Зелёный цвет указывает на то, что реплика активна, а серый — что не активна.
![Рисунок 15. Меню репликации Рисунок 15. Меню репликации](https://habrastorage.org/getpro/habr/upload_files/362/357/684/362357684dacb85494c10a28d79367dd.png)
Графики
Графики и диаграммы предоставляют возможность визуально контролировать параметры работы платформы и связанного системного оборудования. Всё что необходимо — это выбрать показатели, то есть нажать на кнопку метрикс и выбрать либо:
1) все показатели
2) показатели performance
3) показатели блокировок
4) показатели использования дискового пространства
![Рисунок 16. Графики ../_images/charts.png](https://habrastorage.org/getpro/habr/upload_files/e35/3b3/629/e353b3629204b238d2d588cc91925495.png)
Конфигурация мониторинга
Процесс непрерывного анализа функционирования системы и вывод результата в интерфейс называется “мониторинг”. В тантор предусмотрена конфигурация даже мониторинга.
Можно выбрать базу данных которую нужно мониторить или, например, исключить ту, которую мониторить не нужно. А также настроить триггеры, но это не те триггеры которые мы привыкли писать в sql-консоли вручную, а это конфигурируемые условия для создания оповещений.
![Рисунок 17. Конфигурация мониторинга ../_images/image126.png](https://habrastorage.org/getpro/habr/upload_files/430/3a8/888/4303a8888264af367a99f3be86c28967.png)
То есть если вам нужны какие-то особенные оповещения, срабатывающие только при определенных обстоятельствах – вы можете создать и настроить их. Более того эти оповещения можно настроить таким образом, чтобы они приходили вам в телеграм или на почту. Как по мне — это очень удобно!
Анализ логов
А на данном разделе я хотел бы остановиться поподробнее. Потому что вы даже не представляете насколько функциональным его сделали разработчики. Конечно для корректной его работы потребуется выполнить отдельную установку, но зато он предоставляет обширный функционал в смысле анализа данных и позволяет оперативно отслеживать ключевые значения параметров работы серверов баз данных по многим аспектам.
![Рисунок 18. Анализ логов Рисунок 18. Анализ логов](https://habrastorage.org/getpro/habr/upload_files/961/d74/13c/961d7413c017d8affab0ec0006cf9ab0.png)
Давайте кратко опишу разделы в левой части панели:
“Мегазапросы” — отображение вызывающих подозрения запросов в различных разрезах, которые определяются в конфигурации сервера или могут быть переопределены через ALTER SYSTEM.
“Блокировки” — отображение аналитики по запросам, превышающим 1МБ трафика (входящего или исходящего). Отображает сводку по блокировкам (lock) и взаимным блокировкам (deadlock).
Раздел “Ошибки” содержит две вкладки:
по хостам – отображает список хостов и количество ошибок каждого вида (FATAL/ERROR/WARNING) для соответствующих хостов;
-
по ошибкам – отображает:
наименование ошибок;
количество ошибок;
количество хостов, в которых они представлены;
время регистрации последней ошибки за сегодня;
график интенсивности появления проблемных запросов, разбитый на 24 часа.
Назначение раздела “Системные действия” — отобразить для нужного хоста или базы данных в какую таблицу пишется максимум данных.
Работа с кластерами и агентами
Что же касается Работы с кластерами то здесь мы видим все кластеры в рабочем пространстве и ключевые параметры для каждого кластера.
![Рисунок 19. Работа с кластерами Рисунок 19. Работа с кластерами](https://habrastorage.org/getpro/habr/upload_files/0cd/b24/27f/0cdb2427fce0989e838c2205d4b92c7a.jpeg)
Например его имя, статус, версию patroni, количество ядер CPU, объём занимаемой оперативной памяти, размер занятого/общего дискового пространства и количество инстансов. И тут уже знакомый и приятный нам интерфейс с цветными индикациями о состоянии каждого кластера:
![Таблица 2. Цветовая индикация кластеров Таблица 2. Цветовая индикация кластеров](https://habrastorage.org/getpro/habr/upload_files/1ca/9e6/3b9/1ca9e63b9952d1501907e0011cae6d43.png)
Ну и заключение — вкладка работы с агентами.
![Рисунок 20. Работа с агентами Рисунок 20. Работа с агентами](https://habrastorage.org/getpro/habr/upload_files/73d/fdd/0b0/73dfdd0b0dc4289d09eca5a02fe24af6.png)
Здесь обычная таблица с полями идентификационного номера агента, уникального ключа агента для подключения к платформе, количество инстансов которое просматривает агент, статус агента, хост наблюдаемой базы, ну и версии агента. Собственно Можно отфильтровать эти агенты по статусу.
Ну, разве что, ещё хотел добавить: вы наверняка привыкли к тому, что в каждом веб-интерфейсе, в любом клиенте есть кнопочка в виде колокольчика которая отвечает за уведомления. Казалось бы что тут такого — уведомления и уведомления, но нет, на данной платформе даже представлена отдельная инструкция по настройке оповещений, например в зависимости от степени важности события или статуса сервера.
Горизонты развития
Не знаю как вам, лично я вижу некоторые возможности для развития платформы. Из основных - это:
Интеграция в UI обработчика отложенных событий чтобы какие-нибудь запросы выполнять спустя время или с определенной регулярностью.
Возможность накатить агент Tantor на виртуальную машину посредством Ansible
Также можно добавить выбор языка (в частности русского) а то чет все на английском.
Ну и если совсем задуматься, то можно и нескольким пользователям обладать правами owner'а.
Вместо заключения
Итак я вышел из своего привычного амплуа, попробовал платформу Тантор и могу с уверенностью сказать, что её функционал покрывает достаточно большой перечень требований.
Тут вам и базы данных с красивой инфографикой, оптимизация запросов и не только, масштабирование и аналитика а также мощнейшая конфигурация от самих серверов вплоть до уведомлений. Что конечно же покрывает прилично большой спектр задач разного “калибра”.
И всё вышеперечисленное еще находится весьма в привлекательном GUI, что тоже нельзя не отметить, потому как принципы “Все гениальное - просто” и “Краткость - сестра таланта” тут на высочайшем уровне скомбинированы.
Итог: платформа Тантор – это отлично реализованный функционал упакованный в грамотный интерфейс.