Это цитата одного из моих знакомых который когда-то давно обращался ко мне с вопросом про Postgres. Тогда мы за пару дней порешали его проблему и поблагодарив меня он добавил: "Хорошо, когда есть знакомый DBA".

Но что делать если нет знакомого DBA? Вариантов ответа может быть довольно много, начиная от поискать среди друзей друзей и заканчивая до изучить вопрос самостоятельно. Но какой бы ответ не пришел к вам в голову, у меня для вас хорошая новость. В тестовом режиме мы запустили сервис рекомендаций для Postgres и всего что вокруг него. Что это такое и как мы докатились до жизни такой

Зачем это всё?

Postgres это как минимум не просто, а иногда и очень сложно. Зависит от степени вовлеченности и ответственности.

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

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

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

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

Основная цель сервиса это давать понятные рекомендации, которые дают представление о том что происходит и что нужно делать дальше.

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

Как обстоят дела сейчас

На данный момент Weaponry находится в тестовом режиме и на бесплатной основе, регистрация пока временно ограничена. Совместно с несколькими добровольцами допиливаем движок рекомендаций на около-боевых базах, выявляем ложные срабатывания и работаем над текстом рекомендаций.

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

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

Updated 2020-09-16. Getting started.

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

psql -c "CREATE ROLE pgscv WITH LOGIN SUPERUSER PASSWORD 'A7H8Wz6XFMh21pwA'"
export PGSCV_PG_PASSWORD=A7H8Wz6XFMh21pwA
curl -s https://dist.weaponry.io/pgscv/install.sh |sudo -E sh -s - 1 6ada7a04-a798-4415-9427-da23f72c14a5

Если на хосте есть pgbouncer, то для подключения агента также потребуется создать пользователя. Конкретный способ настройки юзера в pgbouncer может быть очень вариативным и сильно зависит от используемой конфигурации. В общих чертах настройка сводится к добавлению юзера в stats_users файла конфигурации (обычно это pgbouncer.ini) и прописывании пароля (или его хэша) в файл указанный в параметре auth_file. При изменении stats_users потребуется рестарт pgbouncer.

Скрипт install.sh принимает пару обязательных аргументов которые уникальны для каждого проекта, и через переменные окружения принимает реквизиты созданных юзеров. Далее скрипт запускает агента в bootstrap режиме - агент копирует себя в PATH, создает конфиг с реквизитами, systemd юнит и запускается как systemd сервис.
На этом установка заканчивается. В течение пары минут инстанс БД появится в списке хостов в интерфейсе и можно уже смотреть первые рекомендации. Но важный момент, многие рекомендации требуют большого количества накопленных метрик (хотя бы за сутки).