URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 89190
[ Назад ]

Исходное сообщение
"freebsd newsyslog и squid"

Отправлено netc , 21-Июн-10 12:24 
добрый день!

есть шлюз на freebsd 8.0 с настроенным squid + lightsquid

нужно производить ротацию файлов access.log, cache.log, store.log один раз в сутки в полночь

хотелось бы делать это при помощи newsyslog:

добавляем строки в newsyslog:


/var/log/squid3/access.log      squid:squid 770 7       *       @T00    JB      /usr/local/squid/logs/squid.pid 30
/var/log/squid3/cache.log       squid:squid 770 7       *       @T00    JB      /usr/local/squid/logs/squid.pid 30
/var/log/squid3/store.log       squid:squid 770 7       *       @T00    JB      /usr/local/squid/logs/squid.pid 30

насколько я понимаю, newsyslog пошлет процессу `cat /usr/local/squid/logs/squid.pid` сигнал 30, т.е. USR1

при котором squid по идее закроет файлы (access.log, cache.log, store.log) и что дальше?

успеет ли newsyslog сделать файлам журналов truncate ?

продолжит ли после этого squid работать в нормальном режиме и писать логи ?

поидее он должен создать новые файлы журналов, которые после закрытия их newsyslog-ом откроет squid и будет туда все что ему надо писать ?

а как у вас ?

все ли я продумал ? как вы считаете, правильно ли я мыслю ?


Содержание

Сообщения в этом обсуждении
"freebsd newsyslog и squid"
Отправлено vitek16 , 21-Июн-10 12:40 
>поидее он должен создать новые файлы журналов, которые после закрытия их newsyslog-ом
>откроет squid и будет туда все что ему надо писать ?

Так и есть.Сначала надо попробовать, а потом уже спрашивать если что-то не получается.



"freebsd newsyslog и squid"
Отправлено netc , 21-Июн-10 13:54 
>>поидее он должен создать новые файлы журналов, которые после закрытия их newsyslog-ом
>>откроет squid и будет туда все что ему надо писать ?
>
>Так и есть.Сначала надо попробовать, а потом уже спрашивать если что-то не
>получается.

просто если честно то не совсем понимаю, как newsyslog будет делать, то что ему сказано если запускается всего раз а час и походу проектировался чем то вроде anacron, но кому то очень хотелось добавить в него выполнение задания по расписанию

ну вот как например он выполнит мне задание заданное в @T2330, если сам то запускается в ..., 22, 23, 24 часа

ну по крайней мере у меня так (cat /var/log/cron | grep newsyslog):


Jun 21 10:00:02 host /usr/sbin/cron[16072]: (root) CMD (newsyslog)
Jun 21 11:00:02 host /usr/sbin/cron[1243]: (root) CMD (newsyslog)
Jun 21 12:00:02 host /usr/sbin/cron[1223]: (root) CMD (newsyslog)
Jun 21 13:00:03 host /usr/sbin/cron[1463]: (root) CMD (newsyslog)

вот странный демон вообще ;)

короче действительно подумываю о просто cron'e и трех заданиях
squid stop
rotate
squid start

;)

p.s. если ни кто не переубедит ;) просто у меня такое ощущение, что он задумывался для сжатия логов по критерию размера нежели времени


"freebsd newsyslog и squid"
Отправлено Сергей , 21-Июн-10 12:47 
Бросьте вы это гнилое занятие, напишите в кроне что-нибудь типа .../squid -k rotate ...

"freebsd newsyslog и squid"
Отправлено vitek16 , 21-Июн-10 12:52 
> Бросьте вы это гнилое занятие, напишите в кроне что-нибудь типа .../squid
>-k rotate ...

Для чего тогда newsyslod придуман?


"freebsd newsyslog и squid"
Отправлено Golub Mikhail , 21-Июн-10 13:34 
>> Бросьте вы это гнилое занятие, напишите в кроне что-нибудь типа .../squid
>>-k rotate ...
>
>Для чего тогда newsyslod придуман?

Для cache.log сигнал посылать не надо.
А access_log пишите через syslog и тогда тоже сигнал посылать не надо.

И потом в newsyslog.conf что-то типа:
/var/log/squid/*.log    squid:squid     640  7     *    @T00  JG

А в store.log вообще нет смысла.
cache_store_log none


"freebsd newsyslog и squid"
Отправлено netc , 21-Июн-10 13:45 
>[оверквотинг удален]
>А access_log пишите через syslog и тогда тоже сигнал посылать не надо.
>
>
>И потом в newsyslog.conf что-то типа:
>/var/log/squid/*.log    squid:squid     640  7
>    *    @T00  JG
>
>
>А в store.log вообще нет смысла.
>cache_store_log none

честно говоря даже и не додумался бы ;( ;)

а вообще где то натыкался на рассуждение, что через syslog нужно писать то, что генерит не большое количество логов.

а squid как раз так генерит прилично собака



"freebsd newsyslog и squid"
Отправлено Golub Mikhail , 21-Июн-10 14:03 
>[оверквотинг удален]
>>
>>А в store.log вообще нет смысла.
>>cache_store_log none
>
>честно говоря даже и не додумался бы ;( ;)
>
>а вообще где то натыкался на рассуждение, что через syslog нужно писать
>то, что генерит не большое количество логов.
>
>а squid как раз так генерит прилично собака

За сутки порядка 10 000 строк записей в лог - syslog (его замена syslog-ng) справляется.

От "squid -k rotate" отказался в свое время из-за проблем с пулами и из-а того, что клиентов довольно много (пару тысяч) и при выполнении rotate была пауза.



"freebsd newsyslog и squid"
Отправлено netc , 21-Июн-10 16:18 
>[оверквотинг удален]
>>то, что генерит не большое количество логов.
>>
>>а squid как раз так генерит прилично собака
>
>За сутки порядка 10 000 строк записей в лог - syslog (его
>замена syslog-ng) справляется.
>
>От "squid -k rotate" отказался в свое время из-за проблем с пулами
>и из-а того, что клиентов довольно много (пару тысяч) и при
>выполнении rotate была пауза.

в моем случае походу самым простым вариантом является вариант через cron:

чисто squid -k rotate, который сам пошлет сигнал USR1 и заротейтит лог, дабы парсеру lightparser от lightsquid легко было делать отчеты

т.к. пользователей у меня около 20

т.е. поидее в полночь запускать squid -k rotate и все да ?
и ни каких в принципе тебе newsyslog'ов не нужно
всмысле у вас так было?


"freebsd newsyslog и squid"
Отправлено netc , 21-Июн-10 16:24 
>[оверквотинг удален]
>
>чисто squid -k rotate, который сам пошлет сигнал USR1 и заротейтит лог,
>дабы парсеру lightparser от lightsquid легко было делать отчеты
>
>т.к. пользователей у меня около 20
>
>т.е. поидее в полночь запускать squid -k rotate и все да ?
>
>и ни каких в принципе тебе newsyslog'ов не нужно
>всмысле у вас так было?

и еще один вопросик вы squid -k rotate через cron от имени squid или root запускали ?


"freebsd newsyslog и squid"
Отправлено Golub Mikhail , 21-Июн-10 17:26 
>[оверквотинг удален]
>
>чисто squid -k rotate, который сам пошлет сигнал USR1 и заротейтит лог,
>дабы парсеру lightparser от lightsquid легко было делать отчеты
>
>т.к. пользователей у меня около 20
>
>т.е. поидее в полночь запускать squid -k rotate и все да ?
>
>и ни каких в принципе тебе newsyslog'ов не нужно
>всмысле у вас так было?

#  TAG: logfile_rotate
#       Specifies the number of logfile rotations to make when you
#       type 'squid -k rotate'. The default is 10, which will rotate
#       with extensions 0 through 9. Setting logfile_rotate to 0 will
#       disable the file name rotation, but the logfiles are still closed
#       and re-opened. This will enable you to rename the logfiles
#       yourself just before sending the rotate signal.
#
#       Note, the 'squid -k rotate' command normally sends a USR1
#       signal to the running squid process.  In certain situations
#       (e.g. on Linux with Async I/O), USR1 is used for other
#       purposes, so -k rotate uses another signal.  It is best to get
#       in the habit of using 'squid -k rotate' instead of 'kill -USR1
#       <pid>'.
#
#       Note, from Squid-3.1 this option has no effect on the cache.log,
#       that log can be rotated separately by using debug_options

Попробуйте, от рута или от squid-а.
По-моему, и от рута проблем нет.


"freebsd newsyslog и squid"
Отправлено netc , 21-Июн-10 13:55 
> Бросьте вы это гнилое занятие, напишите в кроне что-нибудь типа .../squid
>-k rotate ...

почти согласился ;)


"freebsd newsyslog и squid"
Отправлено Сергей , 21-Июн-10 21:31 
Почему squid -k rotate, да потому, что данная ротация лога не зависит от его размера, и вы будете иметь данный лог за время, в вашем случае за день,  если используете newssyslog, то там речь идет о размере, при превыщении которого будет ваш лог обрезан и архивирован,  а вы представляете, если ваши пользователи отработают указанный вами размер допустим за 2-а часа и начнется новый лог, то для того чтобы поиметь статистику за день вам необходимо будет сделать еще один, в моем понимании изврат... У народа это масло масляное  или правой рукой левое ухо, выбирайте, хотя конечно, если у вас не хватает дискового пространства...

"freebsd newsyslog и squid"
Отправлено DeadLoco , 22-Июн-10 11:08 
> если используете newssyslog, то там речь идет о размере,
> при превыщении которого будет ваш лог обрезан и архивирован

Хм-м-м... Неужели все так плохо в нюсислоге?
Я вот в сабже смотрел конфиг - увидел только ротацию в полночь, про размер - ни буквы.


"freebsd newsyslog и squid"
Отправлено netc , 22-Июн-10 14:50 
>> если используете newssyslog, то там речь идет о размере,
>> при превыщении которого будет ваш лог обрезан и архивирован
>
>Хм-м-м... Неужели все так плохо в нюсислоге?
>Я вот в сабже смотрел конфиг - увидел только ротацию в полночь,
>про размер - ни буквы.

да как бы не так уж все и плохо, плохо что почему то ждешь от него чего то большего чем он может и только в самом конце понимаешь что он не совсем как бы логично спроектирован

а именно ротация по времени у него сделана на отъебись. извините другого слова не могу подобрать ;)


"freebsd newsyslog и squid"
Отправлено DeadLoco , 22-Июн-10 22:20 
>а именно ротация по времени у него сделана на отъебись. извините другого
>слова не могу подобрать ;)

Странное дело. У меня нюсислог что по времени, что по размеру - превосходнейшим образом ротирует. И ротирует он у всех хорошо, дай бог памяти, с одна тысяча девятьсот девяносто седьмого года. И, что характерно - всем нравится, одной Сарочке не нравится... (с)


"freebsd newsyslog и squid"
Отправлено netc , 22-Июн-10 14:48 
> Почему squid -k rotate, да потому, что данная ротация лога не
>зависит от его размера, и вы будете иметь данный лог за
>время, в вашем случае за день,  если используете newssyslog, то
>там речь идет о размере, при превыщении которого будет ваш лог
>обрезан и архивирован,  а вы представляете, если ваши пользователи отработают
>указанный вами размер допустим за 2-а часа и начнется новый лог,
>то для того чтобы поиметь статистику за день вам необходимо будет
>сделать еще один, в моем понимании изврат... У народа это масло
>масляное  или правой рукой левое ухо, выбирайте, хотя конечно, если
>у вас не хватает дискового пространства...

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

так что с ним конечно уже проехали


"freebsd newsyslog и squid"
Отправлено DeadLoco , 21-Июн-10 16:31 
>все ли я продумал ? как вы считаете, правильно ли я мыслю?

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

/var/log/squid3/access.log      squid:squid 770 7       *       @T00    JB      
/var/log/squid3/cache.log       squid:squid 770 7       *       @T00    JB      /usr/local/squid/logs/squid.pid 30

Иначе у вас в полночь сквиду дважды подряд будет послан USR1. При этом, поскольку сквид не дурак и блокирует сигнал на время его же отработки, оба сигнала не наложатся, а отработаются последовательно. Выглядеть это будет, как длинные логи перемежающиеся файликами в пару байт с текстом "Logfile rotated"


"freebsd newsyslog и squid"
Отправлено netc , 22-Июн-10 15:00 
ну что сказать сделал вчера:


echo "59      23      *       *       *       squid   squid -k rotate" >> /etc/crontab
/etc/rc.d/cron restart

и что вы думаете:

на утро мне звонят - инет не работает, ну думаю - собака ;)

смотрю log cron:


Jun 21 23:59:03 brokerug /usr/sbin/cron[1888]: (squid) CMD (squid -k rotate)

смотрю ротацию - ее нет : ????? ну думаю ладно, честно такое чувство что его надо запускать в кроне от root

да и решил добавить в squid.conf параметр по поводу

pid_filename /usr/local/squid/logs/squid.pid

посмотрим что сегодня будет


"freebsd newsyslog и squid"
Отправлено аноним , 22-Июн-10 19:17 
>посмотрим что сегодня будет

Вот блин повезло кому то с админом :( Уникально тупой экземпляр!


"freebsd newsyslog и squid"
Отправлено SubGun , 23-Июн-10 11:15 
>>посмотрим что сегодня будет
>
>Вот блин повезло кому то с админом :( Уникально тупой экземпляр!

Поддерживаю.

2 netc:

$ cat /etc/crontab | grep squid
0       1       *       *       *       root    /usr/local/sbin/squid -k rotate


"freebsd newsyslog и squid"
Отправлено netc , 23-Июн-10 11:27 
>[оверквотинг удален]
>
>Поддерживаю.
>
>2 netc:
>
>$ cat /etc/crontab | grep squid
>0       1    
>  *       *  
>     *      
> root    /usr/local/sbin/squid -k rotate

59      23      *       *       *       root    squid -k rotate

cat /var/log/cron
...

Jun 22 23:45:02 host /usr/sbin/cron[2978]: (root) CMD (   /usr/local/www/lightsquid/lightparser.pl)
Jun 22 23:59:02 host /usr/sbin/cron[3025]: (root) CMD (squid -k rotate)
Jun 23 00:00:03 host /usr/sbin/cron[3037]: (root) CMD (   /usr/local/www/lightsquid/lightparser.pl)
...

команда по идее выполнялась, а вот результата не было

может по причине того, что я не указал полный путь

тогда почему когда я в консоли работаю от root мне не нужно писать полный путь к squid


"freebsd newsyslog и squid"
Отправлено SubGun , 23-Июн-10 11:44 
>команда по идее выполнялась, а вот результата не было
>
>может по причине того, что я не указал полный путь
>
>тогда почему когда я в консоли работаю от root мне не нужно
>писать полный путь к squid

Если вы ставили squid не через порты, то вполне вероятно, что с путями проблемы.
Проверьте права на лог-файлы, владельцем должен быть squid.


"freebsd newsyslog и squid"
Отправлено netc , 23-Июн-10 11:51 
>>команда по идее выполнялась, а вот результата не было
>>
>>может по причине того, что я не указал полный путь
>>
>>тогда почему когда я в консоли работаю от root мне не нужно
>>писать полный путь к squid
>
>Если вы ставили squid не через порты, то вполне вероятно, что с
>путями проблемы.
>Проверьте права на лог-файлы, владельцем должен быть squid.

нужно было указать полный путь к исполняемому файлу squid-а и он стал отрабатывать

как нужно, т.е. практически не прерывая своей работы, ротирует файлы

я сразу не досметрел вверху в каментах к /etc/crontab написана переменная path которая видимо задается перед исполнением инструкции из /etc/crontab

так что всем спасибо - разобрался


"freebsd newsyslog и squid"
Отправлено netc , 23-Июн-10 11:59 
В итоге, для ротации логов squid на FreeBSD

чтобы делать ротацию лога access.log средствами самого squid нужно:

добавить строку в /etc/crontab
59      23      *       *       *       squid    /usr/local/sbin/squid -k rotate

примечание:

1. путь должен быть полным или в переменной PATH (crontab) должен быть указан путь к исполняемому файлу squid

2. эта команда пошлет сигнал USR1 запущенному демону, который закроет файл access.log, ротирует его согласно настройкам из конфига squid и далее продолжит работу в обычном режиме.

3. команду можно выполнять и от пользователя squid и с правами суперпользователя (root), в примере указан пользователь squid


"freebsd newsyslog и squid"
Отправлено netc , 23-Июн-10 11:29 
>>посмотрим что сегодня будет
>
>Вот блин повезло кому то с админом :( Уникально тупой экземпляр!

да ладно вам, по себе людей не судят


"freebsd newsyslog и squid"
Отправлено straped , 12-Авг-10 10:52 
Народ, подскажите, пожалуйста, в newsyslog добавил такую строку

/usr/local/squid/logs/access.log   squid:squid   640   3   50000   *   BZC   /usr/local/squid/logs/squid.pid>   30

но сквид после ротации перестает писать в access.log пока его не перезапустишь