public inbox for gentoo-user-ru@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-user-ru] Logrotate не посылает сигнал процессу
@ 2013-08-21 18:30 Sergey Kobzar
  2013-08-21 18:42 ` Edward Toroshchin
  2013-08-22 18:34 ` Peter Volkov
  0 siblings, 2 replies; 18+ messages in thread
From: Sergey Kobzar @ 2013-08-21 18:30 UTC (permalink / raw
  To: gentoo-user-ru

Linux 3.7.10-gentoo-r1 x86_64
logrotate-3.8.4

/etc/logrotate.d/nginx:
/var/log/nginx/*.log {
         daily
         rotate 5
         missingok
         nocompress
         sharedscripts
         postrotate
                 test -r /run/nginx.pid && kill -USR1 `cat /run/nginx.pid`
         endscript
}

При ротации логов бывает, что logrotate не посыдает сигнал -USR1 
мастер-процессу и лог пишется в отротированный файл.

-rw-r--r--  1 nginx root 813M Aug 21 21:24 access.log
-rw-r--r--  1 nginx root 1.4G Aug 17 15:51 access.log-20130817
-rw-r--r--  1 nginx root 995M Aug 18 03:10 access.log-20130818
-rw-r--r--  1 nginx root 1.3G Aug 19 03:10 access.log-20130819
-rw-r--r--  1 nginx root 2.7G Aug 21 01:16 access.log-20130820
-rw-r--r--  1 nginx root 219M Aug 21 10:42 access.log-20130821

Например сегодня утром _access.log был нулевого размера, а логи сыпались 
в access.log-20130821 (видно по времени).

Причем случается это нерегулярно. Если утром делаю kill -USR1 `cat 
/run/nginx.pid`, лог начинает писаться в access.log

# cat /run/nginx.pid
11710

# ps ax | grep 11710
11710 ?        Ss     0:00 nginx: master process /usr/sbin/nginx -c 
/etc/nginx/nginx.conf

Ну и не только это беда Nginx, т.к. практически каждое утро на почту 
валится:

gzip: stdin: file size changed while zipping
gzip: stdin: file size changed while zipping

/etc/logrotate.conf дэфолтный.

Есть идеи? У меня закончились...

Спасибо.


^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [gentoo-user-ru] Logrotate не посылает сигнал процессу
  2013-08-21 18:30 [gentoo-user-ru] Logrotate не посылает сигнал процессу Sergey Kobzar
@ 2013-08-21 18:42 ` Edward Toroshchin
  2013-08-21 18:55   ` Sergey Kobzar
  2013-08-22 18:34 ` Peter Volkov
  1 sibling, 1 reply; 18+ messages in thread
From: Edward Toroshchin @ 2013-08-21 18:42 UTC (permalink / raw
  To: gentoo-user-ru

On Wed, Aug 21, 2013 at 09:30:40PM +0300, Sergey Kobzar wrote:
> При ротации логов бывает, что logrotate не посыдает сигнал -USR1 
> мастер-процессу и лог пишется в отротированный файл.

Ты уверен, что он не посылает сигнал? Скорее nginx неправильно на этот
сигнал реагирует.

У меня недавно была такая же проблема с nginx. Оказалось, что воркеры не
могли открыть новые логи, потому что на них не было прав у пользователя
nginx.

Проверь, что происходит при отправлении USR1 мастер-процессу nginx, при
необходимости с отладочной печатью и/или strace.

Ну и права проверь тоже.

-- 
Edward "Hades" Toroshchin
dr_lepper on irc.freenode.org


^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [gentoo-user-ru] Logrotate не посылает сигнал процессу
  2013-08-21 18:42 ` Edward Toroshchin
@ 2013-08-21 18:55   ` Sergey Kobzar
  2013-08-21 19:08     ` Sergey Kobzar
  0 siblings, 1 reply; 18+ messages in thread
From: Sergey Kobzar @ 2013-08-21 18:55 UTC (permalink / raw
  To: gentoo-user-ru

On 08/21/13 21:42, Edward Toroshchin wrote:
> On Wed, Aug 21, 2013 at 09:30:40PM +0300, Sergey Kobzar wrote:
>> При ротации логов бывает, что logrotate не посыдает сигнал -USR1
>> мастер-процессу и лог пишется в отротированный файл.
>
> Ты уверен, что он не посылает сигнал? Скорее nginx неправильно на этот
> сигнал реагирует.
>
> У меня недавно была такая же проблема с nginx. Оказалось, что воркеры не
> могли открыть новые логи, потому что на них не было прав у пользователя
> nginx.
>
> Проверь, что происходит при отправлении USR1 мастер-процессу nginx, при
> необходимости с отладочной печатью и/или strace.
>
> Ну и права проверь тоже.

Да, есть такая пробдема и баг открыт 
https://bugs.gentoo.org/show_bug.cgi?id=473036 + 
http://trac.nginx.org/nginx/ticket/376.

Ну у меня с правами все нормально:
# la /var/log/nginx/
drwxr-xr-x  2 nginx root 4.0K Aug 21 03:10 .
drwxr-xr-x 12 root  root 4.0K Aug 21 03:10 ..
...

Если посылаю сигнал ручками - все ОК.

Ну и

gzip: stdin: file size changed while zipping
gzip: stdin: file size changed while zipping

не от Nginx т.к. у него сжатие лого отключено.

P.S. Проблема воспроизводится на high load. Там, где активность копейки 
- все ОК.


^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [gentoo-user-ru] Logrotate не посылает сигнал процессу
  2013-08-21 18:55   ` Sergey Kobzar
@ 2013-08-21 19:08     ` Sergey Kobzar
  0 siblings, 0 replies; 18+ messages in thread
From: Sergey Kobzar @ 2013-08-21 19:08 UTC (permalink / raw
  To: gentoo-user-ru

On 08/21/13 21:55, Sergey Kobzar wrote:
> On 08/21/13 21:42, Edward Toroshchin wrote:
>> On Wed, Aug 21, 2013 at 09:30:40PM +0300, Sergey Kobzar wrote:
>>> При ротации логов бывает, что logrotate не посыдает сигнал -USR1
>>> мастер-процессу и лог пишется в отротированный файл.
>>
>> Ты уверен, что он не посылает сигнал? Скорее nginx неправильно на этот
>> сигнал реагирует.
>>
>> У меня недавно была такая же проблема с nginx. Оказалось, что воркеры не
>> могли открыть новые логи, потому что на них не было прав у пользователя
>> nginx.
>>
>> Проверь, что происходит при отправлении USR1 мастер-процессу nginx, при
>> необходимости с отладочной печатью и/или strace.
>>
>> Ну и права проверь тоже.
>
> Да, есть такая пробдема и баг открыт
> https://bugs.gentoo.org/show_bug.cgi?id=473036 +
> http://trac.nginx.org/nginx/ticket/376.
>
> Ну у меня с правами все нормально:
> # la /var/log/nginx/
> drwxr-xr-x  2 nginx root 4.0K Aug 21 03:10 .
> drwxr-xr-x 12 root  root 4.0K Aug 21 03:10 ..
> ...

Может потому, что owner - nginx, права на запись только у владельца, а 
логи пишуться от root'а? Хотя это не должно быть проблемой...

> Если посылаю сигнал ручками - все ОК.
>
> Ну и
>
> gzip: stdin: file size changed while zipping
> gzip: stdin: file size changed while zipping
>
> не от Nginx т.к. у него сжатие лого отключено.
>
> P.S. Проблема воспроизводится на high load. Там, где активность копейки
> - все ОК.



^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [gentoo-user-ru] Logrotate не посылает сигнал процессу
  2013-08-21 18:30 [gentoo-user-ru] Logrotate не посылает сигнал процессу Sergey Kobzar
  2013-08-21 18:42 ` Edward Toroshchin
@ 2013-08-22 18:34 ` Peter Volkov
  2013-08-22 19:08   ` Sergey Kobzar
  1 sibling, 1 reply; 18+ messages in thread
From: Peter Volkov @ 2013-08-22 18:34 UTC (permalink / raw
  To: gentoo-user-ru

В Ср, 21/08/2013 в 21:30 +0300, Sergey Kobzar пишет:
> Linux 3.7.10-gentoo-r1 x86_64
> logrotate-3.8.4
> 
> /etc/logrotate.d/nginx:
> /var/log/nginx/*.log {
...
> }
> 
> При ротации логов бывает, что logrotate не посыдает сигнал -USR1 
> мастер-процессу и лог пишется в отротированный файл.

Как workaround стоит попробовать сделать copytruncate и может быть
вообще не посылать USR1 nginx.

--
Peter.



^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [gentoo-user-ru] Logrotate не посылает сигнал процессу
  2013-08-22 18:34 ` Peter Volkov
@ 2013-08-22 19:08   ` Sergey Kobzar
  2013-08-23  8:03     ` Sergey Kobzar
  0 siblings, 1 reply; 18+ messages in thread
From: Sergey Kobzar @ 2013-08-22 19:08 UTC (permalink / raw
  To: gentoo-user-ru

On 08/22/13 21:34, Peter Volkov wrote:
> В Ср, 21/08/2013 в 21:30 +0300, Sergey Kobzar пишет:
>> Linux 3.7.10-gentoo-r1 x86_64
>> logrotate-3.8.4
>>
>> /etc/logrotate.d/nginx:
>> /var/log/nginx/*.log {
> ...
>> }
>>
>> При ротации логов бывает, что logrotate не посыдает сигнал -USR1
>> мастер-процессу и лог пишется в отротированный файл.
>
> Как workaround стоит попробовать сделать copytruncate и может быть
> вообще не посылать USR1 nginx.

Это как последнее решение. Проблема то не только Nginx касается. Просто 
на нем заметней всего.

Изменил секцию postrotate:

postrotate
	test -r /run/nginx.pid && kill -USR1 `cat /run/nginx.pid` && touch 
/tmp/logrotate-nginx
endscript

Посмотрим, выполняется она или нет.

P.S. Сегодня логи отротировались нормально.


^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [gentoo-user-ru] Logrotate не посылает сигнал процессу
  2013-08-22 19:08   ` Sergey Kobzar
@ 2013-08-23  8:03     ` Sergey Kobzar
  2013-08-23  9:10       ` Alex Efros
  2013-08-23  9:52       ` Peter Volkov
  0 siblings, 2 replies; 18+ messages in thread
From: Sergey Kobzar @ 2013-08-23  8:03 UTC (permalink / raw
  To: gentoo-user-ru

И так, имеем:

/etc/logrotate.d/nginx:

/var/log/nginx/*.log {
         daily
         rotate 5
         missingok
         nocompress
         sharedscripts
         postrotate
                 test -r /run/nginx.pid && kill -USR1 `cat 
/run/nginx.pid` && touch /tmp/logrotate-nginx
         endscript
}

# la /var/log/nginx/ | grep access.log
-rw-r--r--  1 nginx root    0 Aug 23 03:10 access.log
-rw-r--r--  1 nginx root 1.3G Aug 19 03:10 access.log-20130819
-rw-r--r--  1 nginx root 2.7G Aug 21 01:16 access.log-20130820
-rw-r--r--  1 nginx root 219M Aug 21 10:42 access.log-20130821
-rw-r--r--  1 nginx root 1.1G Aug 22 03:10 access.log-20130822
-rw-r--r--  1 nginx root 1.4G Aug 23 10:59 access.log-20130823

т.е логи пишутся в access.log-20130823.


# la /tmp/logrotate-nginx
ls: cannot access /tmp/logrotate-nginx: No such file or directory

т.е. секция postrotate не выполнилась.


Пора выбрасывать logrotate на свалку?

# equery list 'logrotate'
  * Searching for logrotate ...
[IP-] [  ] app-admin/logrotate-3.8.4:0

# la /usr/portage/app-admin/logrotate/
total 72K
drwxr-xr-x   3 root root 4.0K Aug 13 19:01 .
drwxr-xr-x 227 root root  12K Aug 22 11:01 ..
-rw-r--r--   1 root root  23K Aug 13 19:01 ChangeLog
-rw-r--r--   1 root root 9.9K Aug 13 19:01 Manifest
drwxr-xr-x   2 root root 4.0K Aug 13 19:01 files
-rw-r--r--   1 root root 1.8K Jul  2 11:01 logrotate-3.8.4.ebuild
-rw-r--r--   1 root root 1.8K Jun 18 20:25 logrotate-3.8.5.ebuild
-rw-r--r--   1 root root 1.8K Aug 13 17:01 logrotate-3.8.6.ebuild
-rw-r--r--   1 root root  975 Jun 11  2012 metadata.xml

Попробую накатить версию посвежее. Явно какой-то баг...


^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [gentoo-user-ru] Logrotate не посылает сигнал процессу
  2013-08-23  8:03     ` Sergey Kobzar
@ 2013-08-23  9:10       ` Alex Efros
  2013-08-23 13:26         ` Sergey Kobzar
  2013-08-23  9:52       ` Peter Volkov
  1 sibling, 1 reply; 18+ messages in thread
From: Alex Efros @ 2013-08-23  9:10 UTC (permalink / raw
  To: gentoo-user-ru

Hi!

On Fri, Aug 23, 2013 at 11:03:55AM +0300, Sergey Kobzar wrote:
> Пора выбрасывать logrotate на свалку?

Я промолчал в начале обсуждения чтобы не лезть с не очень конструктивными
предложениями, но раз уж дошло до такого вопроса, то могу поделиться своим
мнением: не просто пора, с ним изначально не стоило связываться!

Изначально подход logrotate достаточно порочен: ротацией логов должен
заниматься тот, кто их пишет. Более того, если вас интересует надёжная и
единообразная работа с логами, то нужно писать _все_ логи через
специализированные приложения. А конкретно я имею в виду либо DJB'шный
multilog из пакета daemontools либо его более продвинутый форк svlogd из
пакета runit. Подробнее: http://smarden.org/runit/svlogd.8.html

Обычно в идеологии daemontools/runit супервизор сервиса запускает два
процесса - главный демон, который свои логи выдаёт на STDOUT, и связанный
с ним через конвейер демон логгирования (multilog/svlogd), который на
свой STDIN получает STDOUT главного демона и пишет его в лог-файлы.
Когда в системе все сервисы запущены через такие супервизоры то
получается, что практически все логи единообразно и надёжно пишутся,
фильтруются и ротируются через multilog/svlogd (кроме Xorg.0.log,
emerge.log и ещё парочки).

Но есть пара нюансов. Во-первых это не работает для таких сервисов как
apache или nginx т.к. у них не один лог-файл, а несколько, так что
направить их вместе на STDOUT не вариант. Во-вторых конкретно nginx иногда
нельзя запускать под супервизором daemontools/runit т.к. они несовместимы
с режимом горячего обновления nginx (если оно необходимо для вашего сайта).

В результате для демонов вроде apache/nginx используется другой подход:
через супервизор запускается несколько сервисов-логгеров multilog/svlogd,
по одному на каждый лог-файл apache/nginx, которые считывают данные из
FIFO-файлов, в который apache/nginx пишут логи.

Пример настройки логов nginx для runit:
    
    # создаём каталоги, куда будут писаться логи
    install -d -m 2750 -o log /var/log/nginx/access
    install -d -m 2750 -o log /var/log/nginx/error

    # даём сервисам svlogd доступ к этим каталогам (они будут работать от
    # юзера log, а не root)
    chown log /var/log/nginx/

    # для примера, настраиваем кол-во сохраняемых access-лог-файлов
    echo n500 >/var/log/nginx/access/config

    # заменяем файлы куда пишет логи nginx на FIFOшки
    mv /var/log/nginx/access_log{,.old}
    mv /var/log/nginx/error_log{,.old}
    mkfifo /var/log/nginx/access_log
    mkfifo /var/log/nginx/error_log

    # создаём новые сервисы (у меня сервисы runit находятся в /service/,
    # а активные сервисы в /var/service/ - это как бы аналоги /etc/init.d/
    # и /etc/runlevels/default/ - но у вас эти каталоги могут быть другими)
    mkdir /service/nginx-log-access/
    mkdir /service/nginx-log-error/
    echo 'exec chpst -u log svlogd /var/log/nginx/access/ <>/var/log/nginx/access_log' > /service/nginx-log-access/run
    echo 'exec chpst -u log svlogd /var/log/nginx/error/ <>/var/log/nginx/error_log' > /service/nginx-log-error/run
    chmod +x /service/nginx-log-access/run
    chmod +x /service/nginx-log-error/run

    # запускаем лог-сервисы
    ln -s /service/nginx-log-access/ /var/service/
    ln -s /service/nginx-log-error/ /var/service/

    # перезапускаем nginx (у меня это `sv t nginx`, у вас вероятно
    # `/etc/init.d/nginx restart`)

У меня ./run-файлы сервисов содержат в начале ещё пару строк:
    #!/bin/sh
    exec 2>/dev/null
я их для простоты описания опустил и думаю что всё будет работать и без них.

-- 
			WBR, Alex.


^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [gentoo-user-ru] Logrotate не посылает сигнал процессу
  2013-08-23  8:03     ` Sergey Kobzar
  2013-08-23  9:10       ` Alex Efros
@ 2013-08-23  9:52       ` Peter Volkov
  2013-08-23 13:34         ` Sergey Kobzar
  1 sibling, 1 reply; 18+ messages in thread
From: Peter Volkov @ 2013-08-23  9:52 UTC (permalink / raw
  To: gentoo-user-ru

В Пт, 23/08/2013 в 11:03 +0300, Sergey Kobzar пишет:
> # la /tmp/logrotate-nginx
> ls: cannot access /tmp/logrotate-nginx: No such file or directory
> 
> т.е. секция postrotate не выполнилась.

Сделайте touch первой командой в списке.

--
Peter.



^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [gentoo-user-ru] Logrotate не посылает сигнал процессу
  2013-08-23  9:10       ` Alex Efros
@ 2013-08-23 13:26         ` Sergey Kobzar
  0 siblings, 0 replies; 18+ messages in thread
From: Sergey Kobzar @ 2013-08-23 13:26 UTC (permalink / raw
  To: gentoo-user-ru

On 08/23/13 12:10, Alex Efros wrote:
> Hi!
>
> On Fri, Aug 23, 2013 at 11:03:55AM +0300, Sergey Kobzar wrote:
>> Пора выбрасывать logrotate на свалку?
>
> Я промолчал в начале обсуждения чтобы не лезть с не очень конструктивными
> предложениями, но раз уж дошло до такого вопроса, то могу поделиться своим
> мнением: не просто пора, с ним изначально не стоило связываться!
>
> Изначально подход logrotate достаточно порочен: ротацией логов должен
> заниматься тот, кто их пишет. Более того, если вас интересует надёжная и
> единообразная работа с логами, то нужно писать _все_ логи через
> специализированные приложения. А конкретно я имею в виду либо DJB'шный
> multilog из пакета daemontools либо его более продвинутый форк svlogd из
> пакета runit. Подробнее: http://smarden.org/runit/svlogd.8.html
>
> Обычно в идеологии daemontools/runit супервизор сервиса запускает два
> процесса - главный демон, который свои логи выдаёт на STDOUT, и связанный
> с ним через конвейер демон логгирования (multilog/svlogd), который на
> свой STDIN получает STDOUT главного демона и пишет его в лог-файлы.
> Когда в системе все сервисы запущены через такие супервизоры то
> получается, что практически все логи единообразно и надёжно пишутся,
> фильтруются и ротируются через multilog/svlogd (кроме Xorg.0.log,
> emerge.log и ещё парочки).
>
> Но есть пара нюансов. Во-первых это не работает для таких сервисов как
> apache или nginx т.к. у них не один лог-файл, а несколько, так что
> направить их вместе на STDOUT не вариант. Во-вторых конкретно nginx иногда
> нельзя запускать под супервизором daemontools/runit т.к. они несовместимы
> с режимом горячего обновления nginx (если оно необходимо для вашего сайта).
>
> В результате для демонов вроде apache/nginx используется другой подход:
> через супервизор запускается несколько сервисов-логгеров multilog/svlogd,
> по одному на каждый лог-файл apache/nginx, которые считывают данные из
> FIFO-файлов, в который apache/nginx пишут логи.
>
> Пример настройки логов nginx для runit:
>
>      # создаём каталоги, куда будут писаться логи
>      install -d -m 2750 -o log /var/log/nginx/access
>      install -d -m 2750 -o log /var/log/nginx/error
>
>      # даём сервисам svlogd доступ к этим каталогам (они будут работать от
>      # юзера log, а не root)
>      chown log /var/log/nginx/
>
>      # для примера, настраиваем кол-во сохраняемых access-лог-файлов
>      echo n500 >/var/log/nginx/access/config
>
>      # заменяем файлы куда пишет логи nginx на FIFOшки
>      mv /var/log/nginx/access_log{,.old}
>      mv /var/log/nginx/error_log{,.old}
>      mkfifo /var/log/nginx/access_log
>      mkfifo /var/log/nginx/error_log
>
>      # создаём новые сервисы (у меня сервисы runit находятся в /service/,
>      # а активные сервисы в /var/service/ - это как бы аналоги /etc/init.d/
>      # и /etc/runlevels/default/ - но у вас эти каталоги могут быть другими)
>      mkdir /service/nginx-log-access/
>      mkdir /service/nginx-log-error/
>      echo 'exec chpst -u log svlogd /var/log/nginx/access/ <>/var/log/nginx/access_log' > /service/nginx-log-access/run
>      echo 'exec chpst -u log svlogd /var/log/nginx/error/ <>/var/log/nginx/error_log' > /service/nginx-log-error/run
>      chmod +x /service/nginx-log-access/run
>      chmod +x /service/nginx-log-error/run
>
>      # запускаем лог-сервисы
>      ln -s /service/nginx-log-access/ /var/service/
>      ln -s /service/nginx-log-error/ /var/service/
>
>      # перезапускаем nginx (у меня это `sv t nginx`, у вас вероятно
>      # `/etc/init.d/nginx restart`)
>
> У меня ./run-файлы сервисов содержат в начале ещё пару строк:
>      #!/bin/sh
>      exec 2>/dev/null
> я их для простоты описания опустил и думаю что всё будет работать и без них.
>

Спасибо за подробное описание. Я с данной системой не знаком - нужно 
покопаться.

У меня по совместительству под рукой есть FreeBSD с ее newsyslog. Он 
конесно менее фитчастый чем logrotate, но за годы использования под 
разными нагрузками таких проблем не было. "Лучше меньше да лучше" (с)...


^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [gentoo-user-ru] Logrotate не посылает сигнал процессу
  2013-08-23  9:52       ` Peter Volkov
@ 2013-08-23 13:34         ` Sergey Kobzar
  2013-08-23 13:48           ` Pavel Labushev
                             ` (2 more replies)
  0 siblings, 3 replies; 18+ messages in thread
From: Sergey Kobzar @ 2013-08-23 13:34 UTC (permalink / raw
  To: gentoo-user-ru

On 08/23/13 12:52, Peter Volkov wrote:
> В Пт, 23/08/2013 в 11:03 +0300, Sergey Kobzar пишет:
>> # la /tmp/logrotate-nginx
>> ls: cannot access /tmp/logrotate-nginx: No such file or directory
>>
>> т.е. секция postrotate не выполнилась.
>
> Сделайте touch первой командой в списке.

Сделал:

postrotate
	touch /tmp/logrotate-nginx; test -r /run/nginx.pid && kill -USR1 `cat 
/run/nginx.pid`
endscript

Так вообще будут независимые команды.

Завтра увидим результат...


^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [gentoo-user-ru] Logrotate не посылает сигнал процессу
  2013-08-23 13:34         ` Sergey Kobzar
@ 2013-08-23 13:48           ` Pavel Labushev
       [not found]           ` <20130823134904.773C6E0C13@pigeon.gentoo.org>
  2013-08-25  8:53           ` Sergey Kobzar
  2 siblings, 0 replies; 18+ messages in thread
From: Pavel Labushev @ 2013-08-23 13:48 UTC (permalink / raw
  To: gentoo-user-ru

[-- Attachment #1: Type: text/plain, Size: 846 bytes --]

On Fri, 23 Aug 2013 16:34:14 +0300
Sergey Kobzar <sergey.kobzar@mail.ru> wrote:

> postrotate
> 	touch /tmp/logrotate-nginx; test -r /run/nginx.pid && kill -USR1 `cat 
> /run/nginx.pid`
> endscript
> 
> Так вообще будут независимые команды.
> 
> Завтра увидим результат...

Можно ещё попробовать с create 640 nginx nginx, чтобы не воркеры
создавали новый файл, а сам logrotate.

К слову, до недавнего времени логи в директориях, доступных на запись не
только root и обрабатываемых logrotate, приводили к уязвимости с
последствиями вплоть до полной компрометации системы.

[-- Attachment #2: Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [gentoo-user-ru] Logrotate не посылает сигнал процессу
       [not found]           ` <20130823134904.773C6E0C13@pigeon.gentoo.org>
@ 2013-08-23 14:07             ` Sergey Kobzar
  2013-08-23 14:51               ` Pavel Labushev
       [not found]               ` <20130823145231.89FF4E0AAA@pigeon.gentoo.org>
  0 siblings, 2 replies; 18+ messages in thread
From: Sergey Kobzar @ 2013-08-23 14:07 UTC (permalink / raw
  To: gentoo-user-ru

On 08/23/13 16:48, Pavel Labushev wrote:
> On Fri, 23 Aug 2013 16:34:14 +0300
> Sergey Kobzar <sergey.kobzar@mail.ru> wrote:
>
>> postrotate
>> 	touch /tmp/logrotate-nginx; test -r /run/nginx.pid && kill -USR1 `cat
>> /run/nginx.pid`
>> endscript
>>
>> Так вообще будут независимые команды.
>>
>> Завтра увидим результат...
>
> Можно ещё попробовать с create 640 nginx nginx, чтобы не воркеры
> создавали новый файл, а сам logrotate.

В /etc/logrotate.conf есть create. Из мана:

Any of the log file attributes may be omitted, in which case those 
attributes for the new file will use the same values as the original log 
file for the omitted attributes.

Т.е. по дефолту так и должно все работать. У файлов группа root, но это 
не должно быть проблемой IMO

-rw-r--r--  1 nginx root 426M Aug 23 17:05 access.log
-rw-r--r--  1 nginx root 1.3G Aug 19 03:10 access.log-20130819
-rw-r--r--  1 nginx root 2.7G Aug 21 01:16 access.log-20130820
-rw-r--r--  1 nginx root 219M Aug 21 10:42 access.log-20130821
-rw-r--r--  1 nginx root 1.1G Aug 22 03:10 access.log-20130822
-rw-r--r--  1 nginx root 1.4G Aug 23 11:06 access.log-20130823


> К слову, до недавнего времени логи в директориях, доступных на запись не
> только root и обрабатываемых logrotate, приводили к уязвимости с
> последствиями вплоть до полной компрометации системы.

По подробней можно?

У меня до недавноего времени (месяца 2-3 назад) было все ОК. А видать 
после какого-то очередного апдейта началось. Апдейты logrotate тоже были...


^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [gentoo-user-ru] Logrotate не посылает сигнал процессу
  2013-08-23 14:07             ` Sergey Kobzar
@ 2013-08-23 14:51               ` Pavel Labushev
       [not found]               ` <20130823145231.89FF4E0AAA@pigeon.gentoo.org>
  1 sibling, 0 replies; 18+ messages in thread
From: Pavel Labushev @ 2013-08-23 14:51 UTC (permalink / raw
  To: gentoo-user-ru

[-- Attachment #1: Type: text/plain, Size: 1120 bytes --]

On Fri, 23 Aug 2013 17:07:42 +0300
Sergey Kobzar <sergey.kobzar@mail.ru> wrote:

> В /etc/logrotate.conf есть create. Из мана:
...
> -rw-r--r--  1 nginx root 426M Aug 23 17:05 access.log

Тогда пользователю nginx не нужны права на владение и запись в
директорию, достаточно r-x для группы или others. На системах без TPE
(или там, где /var/log смонтирован с noexec) лично я предпочёл бы такой
вариант, на всякий случай.

> У меня до недавноего времени (месяца 2-3 назад) было все ОК. А видать 
> после какого-то очередного апдейта началось. Апдейты logrotate тоже были...

Относительно 2-3 месяцев время весьма давнее.

http://www.gentoo.org/security/en/glsa/glsa-201206-36.xml
http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2011-1549
http://openwall.com/lists/oss-security/2011/03/04/16

[-- Attachment #2: Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [gentoo-user-ru] Logrotate не посылает сигнал процессу
       [not found]               ` <20130823145231.89FF4E0AAA@pigeon.gentoo.org>
@ 2013-08-23 14:59                 ` Sergey Kobzar
  0 siblings, 0 replies; 18+ messages in thread
From: Sergey Kobzar @ 2013-08-23 14:59 UTC (permalink / raw
  To: gentoo-user-ru

On 08/23/13 17:51, Pavel Labushev wrote:
> On Fri, 23 Aug 2013 17:07:42 +0300
> Sergey Kobzar <sergey.kobzar@mail.ru> wrote:
>
>> В /etc/logrotate.conf есть create. Из мана:
> ...
>> -rw-r--r--  1 nginx root 426M Aug 23 17:05 access.log
>
> Тогда пользователю nginx не нужны права на владение и запись в
> директорию, достаточно r-x для группы или others.На системах без TPE
> (или там, где /var/log смонтирован с noexec) лично я предпочёл бы такой
> вариант, на всякий случай.

Согласен. Я оунера сменил just in case. Проблема связанная с 
невозможностью создания файла не возникала. А вот логи нулевых размеров 
уже достали.


>> У меня до недавноего времени (месяца 2-3 назад) было все ОК. А видать
>> после какого-то очередного апдейта началось. Апдейты logrotate тоже были...
>
> Относительно 2-3 месяцев время весьма давнее.
>
> http://www.gentoo.org/security/en/glsa/glsa-201206-36.xml
> http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2011-1549
> http://openwall.com/lists/oss-security/2011/03/04/16

Т.е. >=app-admin/logrotate-3.8.0 панацея.

Ладно, посмотрим что будет после очередной ротации....


^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [gentoo-user-ru] Logrotate не посылает сигнал процессу
  2013-08-23 13:34         ` Sergey Kobzar
  2013-08-23 13:48           ` Pavel Labushev
       [not found]           ` <20130823134904.773C6E0C13@pigeon.gentoo.org>
@ 2013-08-25  8:53           ` Sergey Kobzar
  2013-08-28  9:44             ` Sergey Kobzar
  2 siblings, 1 reply; 18+ messages in thread
From: Sergey Kobzar @ 2013-08-25  8:53 UTC (permalink / raw
  To: gentoo-user-ru

On 08/23/13 16:34, Sergey Kobzar wrote:

>> Сделайте touch первой командой в списке.
>
> Сделал:
>
> postrotate
>      touch /tmp/logrotate-nginx; test -r /run/nginx.pid && kill -USR1
> `cat /run/nginx.pid`
> endscript
>
> Так вообще будут независимые команды.
>
> Завтра увидим результат...


Вчера логи отротировались нормально. Файл /tmp/logrotate-nginx был 
создан и я его удалил.


Сегодня:

-rw-r--r--  1 nginx root    0 Aug 25 03:10 access.log
-rw-r--r--  1 nginx root 219M Aug 21 10:42 access.log-20130821
-rw-r--r--  1 nginx root 1.1G Aug 22 03:10 access.log-20130822
-rw-r--r--  1 nginx root 1.4G Aug 23 11:06 access.log-20130823
-rw-r--r--  1 nginx root 868M Aug 24 03:10 access.log-20130824
-rw-r--r--  1 nginx root 1.2G Aug 25 11:50 access.log-20130825

# la /tmp/logrotate-nginx
ls: cannot access /tmp/logrotate-nginx: No such file or directory

Похоже, что баг logrotate...


^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [gentoo-user-ru] Logrotate не посылает сигнал процессу
  2013-08-25  8:53           ` Sergey Kobzar
@ 2013-08-28  9:44             ` Sergey Kobzar
  2013-08-28  9:51               ` Sergey Kobzar
  0 siblings, 1 reply; 18+ messages in thread
From: Sergey Kobzar @ 2013-08-28  9:44 UTC (permalink / raw
  To: gentoo-user-ru

On 08/25/13 11:53, Sergey Kobzar wrote:
> On 08/23/13 16:34, Sergey Kobzar wrote:
>
>>> Сделайте touch первой командой в списке.
>>
>> Сделал:
>>
>> postrotate
>>      touch /tmp/logrotate-nginx; test -r /run/nginx.pid && kill -USR1
>> `cat /run/nginx.pid`
>> endscript
>>
>> Так вообще будут независимые команды.
>>
>> Завтра увидим результат...
>
>
> Вчера логи отротировались нормально. Файл /tmp/logrotate-nginx был
> создан и я его удалил.
>
>
> Сегодня:
>
> -rw-r--r--  1 nginx root    0 Aug 25 03:10 access.log
> -rw-r--r--  1 nginx root 219M Aug 21 10:42 access.log-20130821
> -rw-r--r--  1 nginx root 1.1G Aug 22 03:10 access.log-20130822
> -rw-r--r--  1 nginx root 1.4G Aug 23 11:06 access.log-20130823
> -rw-r--r--  1 nginx root 868M Aug 24 03:10 access.log-20130824
> -rw-r--r--  1 nginx root 1.2G Aug 25 11:50 access.log-20130825
>
> # la /tmp/logrotate-nginx
> ls: cannot access /tmp/logrotate-nginx: No such file or directory
>
> Похоже, что баг logrotate...

Накатился до logrotate-3.8.6. 3 дня - полет нормальный.

На мыло приходят нотификейшны вида

	gzip: stdin: file size changed while zipping

но главное логи ротейтятся корректно...


^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [gentoo-user-ru] Logrotate не посылает сигнал процессу
  2013-08-28  9:44             ` Sergey Kobzar
@ 2013-08-28  9:51               ` Sergey Kobzar
  0 siblings, 0 replies; 18+ messages in thread
From: Sergey Kobzar @ 2013-08-28  9:51 UTC (permalink / raw
  To: gentoo-user-ru

On 08/28/13 12:44, Sergey Kobzar wrote:
> On 08/25/13 11:53, Sergey Kobzar wrote:
>> On 08/23/13 16:34, Sergey Kobzar wrote:
>>
>>>> Сделайте touch первой командой в списке.
>>>
>>> Сделал:
>>>
>>> postrotate
>>>      touch /tmp/logrotate-nginx; test -r /run/nginx.pid && kill -USR1
>>> `cat /run/nginx.pid`
>>> endscript
>>>
>>> Так вообще будут независимые команды.
>>>
>>> Завтра увидим результат...
>>
>>
>> Вчера логи отротировались нормально. Файл /tmp/logrotate-nginx был
>> создан и я его удалил.
>>
>>
>> Сегодня:
>>
>> -rw-r--r--  1 nginx root    0 Aug 25 03:10 access.log
>> -rw-r--r--  1 nginx root 219M Aug 21 10:42 access.log-20130821
>> -rw-r--r--  1 nginx root 1.1G Aug 22 03:10 access.log-20130822
>> -rw-r--r--  1 nginx root 1.4G Aug 23 11:06 access.log-20130823
>> -rw-r--r--  1 nginx root 868M Aug 24 03:10 access.log-20130824
>> -rw-r--r--  1 nginx root 1.2G Aug 25 11:50 access.log-20130825
>>
>> # la /tmp/logrotate-nginx
>> ls: cannot access /tmp/logrotate-nginx: No such file or directory
>>
>> Похоже, что баг logrotate...
>
> Накатился до logrotate-3.8.6. 3 дня - полет нормальный.
>
> На мыло приходят нотификейшны вида
>
>      gzip: stdin: file size changed while zipping
>
> но главное логи ротейтятся корректно...

Очень похоже на вот этот баг:
	https://fedorahosted.org/logrotate/ticket/32



^ permalink raw reply	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2013-08-28  9:51 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-08-21 18:30 [gentoo-user-ru] Logrotate не посылает сигнал процессу Sergey Kobzar
2013-08-21 18:42 ` Edward Toroshchin
2013-08-21 18:55   ` Sergey Kobzar
2013-08-21 19:08     ` Sergey Kobzar
2013-08-22 18:34 ` Peter Volkov
2013-08-22 19:08   ` Sergey Kobzar
2013-08-23  8:03     ` Sergey Kobzar
2013-08-23  9:10       ` Alex Efros
2013-08-23 13:26         ` Sergey Kobzar
2013-08-23  9:52       ` Peter Volkov
2013-08-23 13:34         ` Sergey Kobzar
2013-08-23 13:48           ` Pavel Labushev
     [not found]           ` <20130823134904.773C6E0C13@pigeon.gentoo.org>
2013-08-23 14:07             ` Sergey Kobzar
2013-08-23 14:51               ` Pavel Labushev
     [not found]               ` <20130823145231.89FF4E0AAA@pigeon.gentoo.org>
2013-08-23 14:59                 ` Sergey Kobzar
2013-08-25  8:53           ` Sergey Kobzar
2013-08-28  9:44             ` Sergey Kobzar
2013-08-28  9:51               ` Sergey Kobzar

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox