Дополнение к памятке по настройке mamonsu

Feb 23, 2024 16:07


Есть очень полезная софтинка от компании PostgresPro под названием "Mamonsu". Это написанный на Python-е демон, который прикидывается активным Zabbix-агентом и присылает на Zabbix-сервер кучу всяких метрик про состояние PostgreSQL-сервера. В частности, с её помощью очень удобно следить за разбуханием (bloating) базы, отставанием slave, слишком долго выполняющимися транзакциями, неосвобождающимися XID-ами и прочими аномалиями, которые имеет смысл оперативно устранять "на лету" до того как база с треском рухнет. Конкретно меня этот Mamonsu выручал не раз, и не два. В принципе, его можно использовать даже для профилирования запросов, хотя наверное PgBadger с этим справится получше.

Я ранее уже писал памятку по установке Mamonsu вот здесь. Настало время её немного дополнить.

Изначально Mamonsu создавался как часть пакета "PostgresPro". Поэтому в основном заточен под использование именно с "платной доработанной" версией Postgres-а. С "халявной ванильной" он тоже работает, но ему нужны будут расширения как минимум "pg_stat_statements" и опционально "pg_buffercache". Если вы не собираетесь заниматься профилированием запросов и оптимизацией приложений, то второй вам не особо пригодится. А вот без первого ничего интересного из Postgres-а вытащить не получится. Поэтому нужно заранее позаботиться о том, чтобы включить его в конфиге СУБД (директива "shared_preload_libraries").

Далее собственно дополнения к предыдущей памятке.
  1. Внутри PostgreSQL непривилегированного пользователя для Mamonsu лучше называть именно вот "mamonsu", а не как-то по-другому. Почему? Да потому что в таком случае он сможет коннектиться к базе данных через Unix-сокет без предъявления логина-пароля. Ибо при установке пакета создается одноименный системный пользователь. Это удобно.
  2. Сперва редактируем конфиг mamonsu ("/etc/mamonsu/agent.conf"), а уже потом выполняем процедуру bootstrap! Именно в таком порядке. Об этом почему-то в официальной документации не пишут. Но юмор заключается в том, что bootstrap смотрит в этот конфиг, в котором "из коробки" находятся... ммм... не совсем пригодные настройки. Сколько же раз я сам наступал на эти грабли!
  3. Bootstrap нужно выполнять, авторизовавшись в Postgres-е от его (постгресного) суперпользователя. Иначе он не сможет создать нужные базы-расширения. В Debianоподобных системах проще всего делать "sudo -u postgres mamonsu bootstrap блаблабла". Если не планируется использовать "pg_buffercache", то ключ "--create-extensions" указывать не нужно. Если перед bootstrap-ом был правильно отредактирован конфиг (см. пункт 2), то можно запускать его вообще без параметров. Если нет, то обязательно задать как минимум ключи "-d" и "-M".
  4. Сразу после успешного bootstrap-а нужно зайти в базу данных, которую наколдовал для себя mamonsu и руками создать в ней расширение "pg_stat_statements". Да-да, "CREATE EXTENSION" и всё вот это. Почему-то он не делает этого сам даже если указать ключ "--create-extensions". Скорее всего, авторы mamonsu не отследили изменение логики работы этой библиотеки в последних версиях.
  5. Затем зайти в конфиг mamonsu и поотключать всё лишнее типа пассивного агента и прочие ненужности, об этом написано в предыдущей памятке.
  6. Запустить mamonsu, читать логи, смотреть какие плагины он не смог стартовать и тоже отключить их в конфиге. Для части из них требуется "платный" PostgresPro, для другой части всевозможные дополнительные Postgres-овские библиотеки. Практика показывает, что для мониторинга production-систем одного pg_stat_statements и плагинов на его основе более чем достаточно.
  7. При обновлении версии агента mamonsu надо таже обновлять и шаблон для Zabbix-сервера. Это команда "mamonsu export", её надо выполнять с такими привилегиями, чтобы mamonsu смог посмотреть в свою базу данных и в конфиг. Если вы последовали рекомендации из пункта 1, то достаточно сделать "sudo -u mamonsu mamonsu export блаблабла".
Собственно, всё. Выше были перечислены все основные острые углы, об которые можно зацепиться. Всем информативного мониторинга СУБД.

postgresql, hints, ссылки, linux, трудовыебудни, manual, памятка

Previous post Next post
Up