добрый день!есть шлюз на 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 и будет туда все что ему надо писать ?
а как у вас ?
все ли я продумал ? как вы считаете, правильно ли я мыслю ?
>поидее он должен создать новые файлы журналов, которые после закрытия их newsyslog-ом
>откроет squid и будет туда все что ему надо писать ?Так и есть.Сначала надо попробовать, а потом уже спрашивать если что-то не получается.
>>поидее он должен создать новые файлы журналов, которые после закрытия их 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. если ни кто не переубедит ;) просто у меня такое ощущение, что он задумывался для сжатия логов по критерию размера нежели времени
Бросьте вы это гнилое занятие, напишите в кроне что-нибудь типа .../squid -k rotate ...
> Бросьте вы это гнилое занятие, напишите в кроне что-нибудь типа .../squid
>-k rotate ...Для чего тогда newsyslod придуман?
>> Бросьте вы это гнилое занятие, напишите в кроне что-нибудь типа .../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
>[оверквотинг удален]
>А access_log пишите через syslog и тогда тоже сигнал посылать не надо.
>
>
>И потом в newsyslog.conf что-то типа:
>/var/log/squid/*.log squid:squid 640 7
> * @T00 JG
>
>
>А в store.log вообще нет смысла.
>cache_store_log noneчестно говоря даже и не додумался бы ;( ;)
а вообще где то натыкался на рассуждение, что через syslog нужно писать то, что генерит не большое количество логов.
а squid как раз так генерит прилично собака
>[оверквотинг удален]
>>
>>А в store.log вообще нет смысла.
>>cache_store_log none
>
>честно говоря даже и не додумался бы ;( ;)
>
>а вообще где то натыкался на рассуждение, что через syslog нужно писать
>то, что генерит не большое количество логов.
>
>а squid как раз так генерит прилично собакаЗа сутки порядка 10 000 строк записей в лог - syslog (его замена syslog-ng) справляется.
От "squid -k rotate" отказался в свое время из-за проблем с пулами и из-а того, что клиентов довольно много (пару тысяч) и при выполнении rotate была пауза.
>[оверквотинг удален]
>>то, что генерит не большое количество логов.
>>
>>а squid как раз так генерит прилично собака
>
>За сутки порядка 10 000 строк записей в лог - syslog (его
>замена syslog-ng) справляется.
>
>От "squid -k rotate" отказался в свое время из-за проблем с пулами
>и из-а того, что клиентов довольно много (пару тысяч) и при
>выполнении rotate была пауза.в моем случае походу самым простым вариантом является вариант через cron:
чисто squid -k rotate, который сам пошлет сигнал USR1 и заротейтит лог, дабы парсеру lightparser от lightsquid легко было делать отчеты
т.к. пользователей у меня около 20
т.е. поидее в полночь запускать squid -k rotate и все да ?
и ни каких в принципе тебе newsyslog'ов не нужно
всмысле у вас так было?
>[оверквотинг удален]
>
>чисто squid -k rotate, который сам пошлет сигнал USR1 и заротейтит лог,
>дабы парсеру lightparser от lightsquid легко было делать отчеты
>
>т.к. пользователей у меня около 20
>
>т.е. поидее в полночь запускать squid -k rotate и все да ?
>
>и ни каких в принципе тебе newsyslog'ов не нужно
>всмысле у вас так было?и еще один вопросик вы squid -k rotate через cron от имени squid или root запускали ?
>[оверквотинг удален]
>
>чисто 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-а.
По-моему, и от рута проблем нет.
> Бросьте вы это гнилое занятие, напишите в кроне что-нибудь типа .../squid
>-k rotate ...почти согласился ;)
Почему squid -k rotate, да потому, что данная ротация лога не зависит от его размера, и вы будете иметь данный лог за время, в вашем случае за день, если используете newssyslog, то там речь идет о размере, при превыщении которого будет ваш лог обрезан и архивирован, а вы представляете, если ваши пользователи отработают указанный вами размер допустим за 2-а часа и начнется новый лог, то для того чтобы поиметь статистику за день вам необходимо будет сделать еще один, в моем понимании изврат... У народа это масло масляное или правой рукой левое ухо, выбирайте, хотя конечно, если у вас не хватает дискового пространства...
> если используете newssyslog, то там речь идет о размере,
> при превыщении которого будет ваш лог обрезан и архивированХм-м-м... Неужели все так плохо в нюсислоге?
Я вот в сабже смотрел конфиг - увидел только ротацию в полночь, про размер - ни буквы.
>> если используете newssyslog, то там речь идет о размере,
>> при превыщении которого будет ваш лог обрезан и архивирован
>
>Хм-м-м... Неужели все так плохо в нюсислоге?
>Я вот в сабже смотрел конфиг - увидел только ротацию в полночь,
>про размер - ни буквы.да как бы не так уж все и плохо, плохо что почему то ждешь от него чего то большего чем он может и только в самом конце понимаешь что он не совсем как бы логично спроектирован
а именно ротация по времени у него сделана на отъебись. извините другого слова не могу подобрать ;)
>а именно ротация по времени у него сделана на отъебись. извините другого
>слова не могу подобрать ;)Странное дело. У меня нюсислог что по времени, что по размеру - превосходнейшим образом ротирует. И ротирует он у всех хорошо, дай бог памяти, с одна тысяча девятьсот девяносто седьмого года. И, что характерно - всем нравится, одной Сарочке не нравится... (с)
> Почему squid -k rotate, да потому, что данная ротация лога не
>зависит от его размера, и вы будете иметь данный лог за
>время, в вашем случае за день, если используете newssyslog, то
>там речь идет о размере, при превыщении которого будет ваш лог
>обрезан и архивирован, а вы представляете, если ваши пользователи отработают
>указанный вами размер допустим за 2-а часа и начнется новый лог,
>то для того чтобы поиметь статистику за день вам необходимо будет
>сделать еще один, в моем понимании изврат... У народа это масло
>масляное или правой рукой левое ухо, выбирайте, хотя конечно, если
>у вас не хватает дискового пространства...так вот же и я про тоже newsyslog - это вообще бля хрень какая-то нафига было в него пихать выполнение обрезания по времени не понятно, т.к. он сам не понятно когда работает, у меня например каждый час запускается
так что с ним конечно уже проехали
>все ли я продумал ? как вы считаете, правильно ли я мыслю?Почти правильно, за исключением того, что посыл сигнала должен быть только в последней строчке
/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"
ну что сказать сделал вчера:
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
посмотрим что сегодня будет
>посмотрим что сегодня будетВот блин повезло кому то с админом :( Уникально тупой экземпляр!
>>посмотрим что сегодня будет
>
>Вот блин повезло кому то с админом :( Уникально тупой экземпляр!Поддерживаю.
2 netc:
$ cat /etc/crontab | grep squid
0 1 * * * root /usr/local/sbin/squid -k rotate
>[оверквотинг удален]
>
>Поддерживаю.
>
>2 netc:
>
>$ cat /etc/crontab | grep squid
>0 1
> * *
> *
> root /usr/local/sbin/squid -k rotate59 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
>команда по идее выполнялась, а вот результата не было
>
>может по причине того, что я не указал полный путь
>
>тогда почему когда я в консоли работаю от root мне не нужно
>писать полный путь к squidЕсли вы ставили squid не через порты, то вполне вероятно, что с путями проблемы.
Проверьте права на лог-файлы, владельцем должен быть squid.
>>команда по идее выполнялась, а вот результата не было
>>
>>может по причине того, что я не указал полный путь
>>
>>тогда почему когда я в консоли работаю от root мне не нужно
>>писать полный путь к squid
>
>Если вы ставили squid не через порты, то вполне вероятно, что с
>путями проблемы.
>Проверьте права на лог-файлы, владельцем должен быть squid.нужно было указать полный путь к исполняемому файлу squid-а и он стал отрабатывать
как нужно, т.е. практически не прерывая своей работы, ротирует файлы
я сразу не досметрел вверху в каментах к /etc/crontab написана переменная path которая видимо задается перед исполнением инструкции из /etc/crontab
так что всем спасибо - разобрался
В итоге, для ротации логов 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
>>посмотрим что сегодня будет
>
>Вот блин повезло кому то с админом :( Уникально тупой экземпляр!да ладно вам, по себе людей не судят
Народ, подскажите, пожалуйста, в newsyslog добавил такую строку/usr/local/squid/logs/access.log squid:squid 640 3 50000 * BZC /usr/local/squid/logs/squid.pid> 30
но сквид после ротации перестает писать в access.log пока его не перезапустишь