Re: Re: [pgsql-ru-general] Запись логов в сокет вместо файла?

From: Д(dot)П(dot) <aspamkiller(at)yandex(dot)ru>
To: pgsql-ru-general(at)postgresql(dot)org
Subject: Re: Re: [pgsql-ru-general] Запись логов в сокет вместо файла?
Date: 2017-09-01 09:01:13
Message-ID: 124b6b00-0474-bb24-be4b-144ed36f3f1a@yandex.ru
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-ru-general

Кроме ТЗ есть ещё и суровая реальность. А в ней логирование *всех*
команд будет давать размёр логов примерно в 50 гигов в сутки. Кроме
того, что эта инфа вся не нужна, её ещё и много, там же и другие
сообщения плюс к ним сыпятся. Поэтому хотелось лишнее выкидывать сразу,
без записи в файл и отправлять на удалённый сислог, где всё.

Про graylog ничего не знаю, посмотрю на него, спасибо.

//ДП

01.09.2017 11:04, Виктор Вислобоков пишет:
> Но во-первых, syslog'ом может прикинутся и graylog, например, на
> удалённом хосте.
> А во-вторых, если вам не нужны логи прямо в реалтайме, то почему
> нельзя просто запускать по крону скрипт скажем раз в минуту, который
> парсит лог, который пишет PostgreSQL (сохраняя последнюю позицию и
> начиная с неё в следующий раз) и достаёт из этого лога только то, что
> вам нужно?
>
> 1 сентября 2017 г., 10:53 пользователь Д.П. <aspamkiller(at)yandex(dot)ru
> <mailto:aspamkiller(at)yandex(dot)ru>> написал:
>
> Всем привет.
>
> Понадобилось логировать обращения к определённым полям
> определённых таблиц. Именно SELECT.
>
> Всё, что нашёл по этому поводу - включить запись всех команд в сислог.
> Но у сислога есть одна особенность - он может выкинуть лишнее при
> слишком высокой нагрузке. А по полученному ТЗ - "пусть мир подождёт".
>
> И я подумал, а можно ли повесить свой обработчик и заставить
> писать postgres в него через сокет? Т.е. я создаю юниксовый сокет
> и прошу постгрес писать туда логи, не?
>
> Первый эксперимент не удался. Не пришло ничего вообще.
> Если меняю log_destination = 'syslog' то все команды логируются.
>
> сен 01 10:51:51 sandbox postgres[10271]: [4-1] СООБЩЕНИЕ:
> оператор: select manana from kukara4a;
> сен 01 10:51:51 sandbox postgres[10271]: [5-1] СООБЩЕНИЕ:
> продолжительность: 1.051 мс
>
> Поэтому прошу помощи и совета - или я желаю странного, или оно
> как-то по хитрому может быть включено?
>
> //Дмитрий
>
> Настройки:
>
>         log_destination = 'csvlog'
>         log_filename = '/tmp/access.pglog.sock'
>         logging_collector = on
>         log_statement = 'all'
>         log_min_error_statement = 'info'
>         log_min_duration_statement = 0
>         log_lock_waits = on
>         log_rotation_size = 0
>         logging_collector = on
>
> Скриптик:
>
> #!/usr/bin/env ruby
> # encoding: utf-8
> socket_name = ARGV[0] || '/tmp/access.pglog.sock'
> begin
>   File.unlink socket_name
> rescue
> end
>
> require 'socket'
> require 'syslog/logger'
> log ||= Syslog::Logger.new 'access.pglog'
>
> server = UNIXServer.new socket_name
> File.chmod 0777, socket_name
> loop do
>   socket = server.accept
>   while line = socket.readline
> log.info <http://log.info> line # дада, пишем в сислог.
>                   # тут на самом деле несколько регулярок
>   end
> end
> socket.close
>
>
> --
> Sent via pgsql-ru-general mailing list
> (pgsql-ru-general(at)postgresql(dot)org
> <mailto:pgsql-ru-general(at)postgresql(dot)org>)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-ru-general
> <http://www.postgresql.org/mailpref/pgsql-ru-general>
>
>

In response to

Browse pgsql-ru-general by date

  From Date Subject
Next Message Dmitry E. Oboukhov 2017-09-03 09:53:39 Re: Запись логов в сокет вместо файла?
Previous Message Nikolay Samokhvalov 2017-09-01 08:04:28 Re: [pgsql-ru-general] Запись логов в сокет вместо файла?