* [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 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 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: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
[parent not found: <20130823134904.773C6E0C13@pigeon.gentoo.org>]
* 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
[parent not found: <20130823145231.89FF4E0AAA@pigeon.gentoo.org>]
* 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