Помогите совладать с newsyslog

Простые/общие вопросы по UNIX системам. Спросите здесь, если вы новичок

Модераторы: vadim64, terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
Jedi88Knight
рядовой
Сообщения: 47
Зарегистрирован: 2013-06-26 14:07:47
Откуда: Челябинская обл. г.Миасс
Контактная информация:

Помогите совладать с newsyslog

Непрочитанное сообщение Jedi88Knight » 2014-03-11 12:45:23

Уважаемые форумчане! Прошу помощи... Дело в том, что newsyslog отказывается корректно работать на FreeBSD 9.2 amd64. Собственно поднята связка squid-ntlm, rejik, mysql, sams, apache, havp, clamav (да это и не особо важно какая связка). Newsyslog ведет себя крайне странно, при достижении указанного в конфиге размера файла, он действительно пересоздает лог-файл... причем... заранее проверял под каким владельцем логи того или иного демона существуют в /var/log'е и учитывал это при создании конфига newsyslog. Однако в этот файл ничего не пишется... То есть он может пролежать так неделю с нулевым размером, пока не перезапустишь демон, к которому он относится... Допустим mysql.log при достижении ограничения по размеру, указанного в newsyslog.conf создает новый mysql.log, а старый сжимает в bz2, но размер нового лога = 0.... сколько бы времени не прошло... единственное что помогает - тупой рестарт демона командой

Код: Выделить всё

/usr/local/etc/rc.d/mysql-server restart
ну вы и без меня это знаете... после рестарта лог успешно пишется до следующего заполнения и опять новый mysql.log.#.bz2 и опять пустой mysql.log. И так со всеми логами, за которые отвечает newsyslog. Squid использует свой механизм перезаписи логов и с логами squid'а все в полном порядке. Подскажите куда копать, на всякий пожарный кидаю листинг newsyslog.conf

Код: Выделить всё

# logfilename          [owner:group]    mode count size when  flags [/pid_file] [sig_num]
/var/log/all.log<------><------><------>600  7<>   *<-->@T00  J
/var/log/amd.log<------><------><------>644  7<>   100<>*     J
/var/log/auth.log<-----><------><------>600  7     100  @0101T JC
/var/log/console.log<--><------><------>600  5<>   100<>*     J
/var/log/cron<-><------><------><------>600  3<>   100<>*     JC
/var/log/daily.log<----><------><------>640  7<>   *<-->@T00  JN
/var/log/debug.log<----><------><------>600  7     100  *     JC
/var/log/kerberos.log<-><------><------>600  7<>   100<>*     J
/var/log/lpd-errs<-----><------><------>644  7<>   100<>*     JC
/var/log/maillog<------><------><------>640  7<>   *<-->@T00  JC
/var/log/messages<-----><------><------>644  5<>   100<>@0101T JC
/var/log/monthly.log<--><------><------>640  12>   *<-->$M1D0 JN
/var/log/pflog<><------><------><------>600  3<>   100<>*     JB    /var/run/pflogd.pid
/var/log/ppp.log<------>root:network<-->640  3<>   100<>*     JC
/var/log/security<-----><------><------>600  10>   100<>*     JC
/var/log/sendmail.st<--><------><------>640  10>   *<-->168   BN
/var/log/utx.log<------><------><------>644  3<>   *<-->@01T05 B
/var/log/weekly.log<---><------><------>640  5<>   *<-->$W6D0 JN
/var/log/xferlog<------><------><------>600  7<>   100<>*     JC
/var/log/zabbix/zabbix_agentd.log<----->zabbix:wheel<-->640<--->10<---->100<--->*<----->JC
/var/log/clamav/freshclam.log<-><------>clamav:clamav<->640<--->10<---->100<--->*<----->JC
/var/log/havp/access.log<------><------>havp:havp<----->640<--->10<---->100<--->*<----->JC
/var/log/havp/error.log><------><------>havp:havp<----->640<--->10<---->100<--->*<----->JC
/var/log/apache/httpd-access.log<------>www:www><------>640<--->10<---->100<--->*<----->JC
/var/log/apache/httpd-error.log><------>www:www><------>640<--->10<---->100<--->*<----->JC
/var/log/apache/httpd-ssl_request.log<->www:www><------>640<--->10<---->100<--->*<----->JC
/var/log/frox/frox.log<><------><------>nobody:wheel<-->640<--->10<---->100<--->*<----->JC
/var/log/mysql/mysql.log<------><------>mysql:mysql<--->620<--->2<----->100000<>*<----->JB<---->/var/bd/mysql/proxy.pid
/var/log/rejik3/redirector.log<><------>squid:squid<--->640<--->10<---->100<--->*<----->JC
/var/log/rejik3/redirector.err<><------>squid:squid<--->640<--->10<---->100<--->*<----->JC
/var/log/samba/log.nmbd><------><------>root:wheel<---->640<--->10<---->100<--->*<----->JC
/var/log/samba/log.smbd><------><------>root:wheel<---->640<--->10<---->100<--->*<----->JC
/var/log/samba/log.wb-UST<-----><------>root:wheel<---->640<--->10<---->100<--->*<----->JC
/var/log/samba/log.wb-UST.old<-><------>root:wheel<---->640<--->10<---->100<--->*<----->JC
/var/log/samba/log.winbindd<---><------>root:wheel<---->640<--->10<---->100<--->*<----->JC
Заранее благодарю всех, кто откликнется.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
FreeBSP
майор
Сообщения: 2020
Зарегистрирован: 2009-05-24 20:20:19
Откуда: Москва

Re: Помогите совладать с newsyslog

Непрочитанное сообщение FreeBSP » 2014-03-11 12:52:11

ну поскольку меняется файл, его надо переоткрыть. сигнал HUP или чтото из этой серии обычно помогает
Человек начинает получать первые наслаждения от знакомства с unix системами. Ему нужно помочь - дальше он сможет получать наслаждение самостоятельно ©
Ламер — не желающий самостоятельно разбираться. Не путать с новичком: ламер опасен и знает это!

Аватара пользователя
Jedi88Knight
рядовой
Сообщения: 47
Зарегистрирован: 2013-06-26 14:07:47
Откуда: Челябинская обл. г.Миасс
Контактная информация:

Re: Помогите совладать с newsyslog

Непрочитанное сообщение Jedi88Knight » 2014-03-11 13:01:25

А по-подробнее можно?))

Аватара пользователя
FreeBSP
майор
Сообщения: 2020
Зарегистрирован: 2009-05-24 20:20:19
Откуда: Москва

Re: Помогите совладать с newsyslog

Непрочитанное сообщение FreeBSP » 2014-03-11 22:40:37

поподробнее
что происходит:
Демон открыл лог и старательно в него пишет. Причем файл открывается по имени, а дальше этому открытому файлу назначается дескриптор, и вся работа с файлом идет уже через этот дескриптор. А потом пришел сислог, сказал "много!", спер файл, а на его место подсунул новый. Дескриптор при этом похерился, и демон писать по старому дескриптору не может, узнать что он похерился тоже не получается, вот и висит новый чистый файл, прям рвется чтобы в него писали, а писать не получается - надо снова его открыть, чтобы обновился дескриптор.

один вариант - перезапустить демона, после перезапуска файл будет переоткрыт, создастся новый дескриптор и снова пойдет запись.
другой - попросить прогу переоткрыть файлик и писать дальше.

первый вариант - не вариант, особенно на высоконагруженных системах
второй практически всегда реализован с помощью сигналов

man signal - тут список сигналов и какая то общая информация
man newsyslog.conf - а тут есть про то, что с сигналами может делать newsyslog

остается узнать каким сигналом попросить переоткрыть лог
в большинстве случаев надо отправить hup, но в каждой ситуации надо проверять
Человек начинает получать первые наслаждения от знакомства с unix системами. Ему нужно помочь - дальше он сможет получать наслаждение самостоятельно ©
Ламер — не желающий самостоятельно разбираться. Не путать с новичком: ламер опасен и знает это!

Аватара пользователя
Jedi88Knight
рядовой
Сообщения: 47
Зарегистрирован: 2013-06-26 14:07:47
Откуда: Челябинская обл. г.Миасс
Контактная информация:

Re: Помогите совладать с newsyslog

Непрочитанное сообщение Jedi88Knight » 2014-03-12 6:01:53

Спасибо за довольно внятный совет и объяснения. Вчера уже посидел почитал маны. Так вот.... это все понятно что newsyslog вопреки воли демона выдергивает у него из подноса файл. Так вот. в мануале к самому newsyslog'у написано, что если в конфиге указать [/pid_file] демона без параметра [sig_num], то newsyslog через пид-файл попытается оповестить демона о замене лог файла стандартным сигналом, затем демон должен переоткрыть лог. А бывают особо вредные демоны, для которых нужно заполнять параметр [sig_num]. На данный момент нашел и прописал все пид-файлы в newsyslog'е. Пока вроде полет нормальный. Еще ни одного лога не оставалось неприкаянного.

Аватара пользователя
Jedi88Knight
рядовой
Сообщения: 47
Зарегистрирован: 2013-06-26 14:07:47
Откуда: Челябинская обл. г.Миасс
Контактная информация:

Re: Помогите совладать с newsyslog

Непрочитанное сообщение Jedi88Knight » 2014-03-12 6:41:07

Вот... из мануала... Тем кто сам не нашел.)

Код: Выделить всё

[sig_num] – необязательный параметр, определяющий номер сигнала, посылаемый приложению при ротации, чтобы произошло переоткрытие нового лог-файла для записи. По умолчанию используется SIGHUP, т. е. «1» (в обычных случаях посылается с помощью kill -1 или kill -HUP). Некоторые демоны для переоткрытия лог-файлов требуют другого номера сигнала, как например, для nginx, php-fpm, sphinx нужен SIGUSR1, т. е. «30». Более подробно о сигналах можно посмотреть в man signal.
полностью читать здесь http://funix.ru/freebsd/nastrojka-rotac ... yslog.html

Аватара пользователя
Jedi88Knight
рядовой
Сообщения: 47
Зарегистрирован: 2013-06-26 14:07:47
Откуда: Челябинская обл. г.Миасс
Контактная информация:

Re: Помогите совладать с newsyslog

Непрочитанное сообщение Jedi88Knight » 2014-03-12 7:50:27

Господа, сразу оговорюсь... С Apache'м не прокатило просто прописать pid-file. Оказывается это именно один из "вредных" демонов, которому специфичный сигнал подавай. Нашел упоминания в одном англоязычном блоге об этом. Наверное это же написано в мануале к самому apache, но времени читать его у меня не было... Именно поэтому были внесены коррективы опираясь на буржуйский блог) Итак, Apache нуждается в сигнале SIGUS1 (подробнее в man signal). А строчки в newsyslog должны выглядеть так:

Код: Выделить всё

/var/log/apache/httpd-access.log<------>www:www><------>640<--->10<---->100<--->*<----->JC<---->/var/run/httpd.pid<---->30
/var/log/apache/httpd-error.log><------>www:www><------>640<--->10<---->100<--->*<----->JC<---->/var/run/httpd.pid<---->30
/var/log/apache/httpd-ssl_request.log<->www:www><------>640<--->10<---->100<--->*<----->JC<---->/var/run/httpd.pid<---->30
Вроде работает.

Аватара пользователя
Jedi88Knight
рядовой
Сообщения: 47
Зарегистрирован: 2013-06-26 14:07:47
Откуда: Челябинская обл. г.Миасс
Контактная информация:

Re: Помогите совладать с newsyslog

Непрочитанное сообщение Jedi88Knight » 2014-03-13 8:53:32

Да.. Подтверждаю. Ситуацию исправил выше описанным методом. Тема закрыта.

tauri
проходил мимо

Re: Помогите совладать с newsyslog

Непрочитанное сообщение tauri » 2014-07-08 3:43:06

А у меня вот какой косякD
решил крутить логи squid'а newsyslog'ом:
FreeBSD 8.4-RELEASE-p1 FreeBSD 8.4-RELEASE-p1 #2 r253471M: Fri Jul 26 00:57:06 YEKT 2013 /usr/obj/usr/src/sys/130702bsd84 amd64 (надо конечно обновить как нить)

Код: Выделить всё

/var/log/squid/access.log                       640  7     *    @T06   J
/var/log/squid/cache.log                        640  7     *    @T06   J /var/run/squid/squid.pid  30
флажок не указан, а эта бяка всё равно файл создаёт, а потом после сигнала еще и squid файлик создёт, переименовывая предыдущий DDD
Вроде бага)
То есть было так:

Код: Выделить всё

-rw-r-----  1 squid  squid    53k  8 июл 06:35 access.log
-rw-r-----  1 squid  squid   496B  8 июл 06:08 cache.log
делаем:

Код: Выделить всё

newsyslog -v
И получаем(про владельца в курсе):

Код: Выделить всё

-rw-r-----  1 squid  squid   422B  8 июл 06:38 access.log
-rw-r-----  1 root   squid    99B  8 июл 06:37 access.log.0.bz2
-rw-r-----  1 squid  squid    55k  8 июл 06:37 access.log.1
-rw-r-----  1 squid  squid   407B  8 июл 06:37 cache.log
-rw-r-----  1 root   squid    99B  8 июл 06:37 cache.log.0.bz2
-rw-r-----  1 squid  squid   554B  8 июл 06:37 cache.log.1
В кроне:

Код: Выделить всё

#
# Rotate log files every hour, if necessary.
0       *       *       *       *       root    newsyslog
#
# Perform daily/weekly/monthly maintenance.
:bn:

tauri
проходил мимо

Re: Помогите совладать с newsyslog

Непрочитанное сообщение tauri » 2014-07-08 3:46:53

Проверял по шагам, в начале newsyslog без сигнала, потом kill -30 squid'у владельца то же менял ))))

tauri
проходил мимо

Re: Помогите совладать с newsyslog

Непрочитанное сообщение tauri » 2014-07-08 3:49:30

ключь "C" есть только в /etc/defaults/rc.conf

Код: Выделить всё

newsyslog_enable="YES"  # Run newsyslog at startup.
newsyslog_flags="-CN"   # Newsyslog flags to create marked files
но с ним вроде как только при старте вызывается...