* [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