Прокси-сервер с логированием пользовательских запросов
Необходимо сделать так, чтобы все пользовательские запросы ко множеству баз данных шли через один прокси-сервер и логировались куда-либо (ну, кроме SELECT-запросов).
pgbouncer этого не умеет, pg_pool при беглом рассмотрении — тоже.
Подскажите куда копать?
Нет необходимости логировать огромный поток информации с боевых приложений. Необходимо писать только запросы от внутренних пользователей, коих не так уж и много. Логирование средствами самого постгреса не подходит по причине влияния этого логирования на производительность.
Логгируйте в файлы CSV (http://www.postgresql.org/docs/9.1/static/runtime-config-logging.html). Из CSV сам постгрес умеет сохранять в таблицы. Выделите отдельный ЛОГ сервер (Postgres) куда будут стекаться все логи.
Профит
Не выход к сожалению. Это снизит производительность БД, а она критична. И у меня нет необходимости логировать огромный поток информации с боевых приложений. Необходимо писать только запросы от внутренних пользователей, коих не так уж и много.
Быть может кому-нибудь поможет сэкономить человекочасы:
Единственным прокси-сервером с поддержкой логирования запросов оказался tsung-recorder. И даже он не подходит для подобной задачи по причине того, что пишет логи исключительно в хмл формат без тайм-стампов и без информации о пользователе.
Эм, Вы хотите проверять что творят рядовые сотрудники, имеющие доступ к консоли pgsql или программисты?
в первом случае за доступ рядовых юзерей к БД тому, кто это допустил надо отрывать руки по шею.
Во втором — настроить регулярные бекапы, а то иногда и ДБОшники с 20 летним стажем грохают биллинговую базу небольшого опсоса :(
Вы явно ровняете ситуацию по своему опыту. У нас не настолько большая организация, чтобы подразделять на рядовых сотрудников и программистов. Доступы имеют и программеры и QA и саппорт. И некоторые из них, скажем, «пользуются служебным положением». Именно для таких товарищей нам и необходима подобная мера.
Ну вот для того, чтобы не пользовались, и делаются «прослойки».
И дело не в размере организации, а в кривой модели безопасности, которая в компании используется.
Надо сразу нормально делать и инцидентов не будет.
Вот я и хочу сделать прослойку из прокси-сервера, который и доступы порежет и транзакции запишет.
Что касается нормально делать — подскажите как? Какую прослойку использовать? Писать отдельное пользовательское приложение — неразумно и дорого.
ну вот обычно пользовательское приложение и есть прослойка, с логами, блекджеком и прочими азартными играми.
Вон, на любом месте оператора в банке — таких прослоек — минимум несколько десятков ярлычков под каждый модуль ДБО