Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
ротация логов (логи на чёрный день)
#1
Может кому пригодится...

Начнём с того, что же такое "ротация" логов.
Для примера можно посмотреть на логи апач сервера (/var/log/apache2) - при достижениия определённого размера или времени (например по прошествии одного месяца), текущий лог-файл запаковывается, переименовывается и создаётся новый пустой лог-файл.
Делается это в основном для удобства чтения логов - ведь куда удобнее, когда на каждый месяц\день лежит свой лог, и не приходится искать дату в одной большой свалке. Ну и немножко для экономии места - текстовые логи очень неплохо ужимаются.

Итак. Первое, что приходит по этому поводу в голову - можно написать простенький скрипт, который проверял бы дату создания файла, его размер и т.п. и повесить его на крон. Но, в убунте для ротации логов предусмотрена замечательная программка - logrotate, заморочек с ней гораздо меньше Wink так что именно её и будем использовать.

Для начала установим её (хотя зачастую она уже установлена):
Код:
sudo apt-get update
sudo apt-get install logrotate
Настройки logrotate лежат в двух местах:
Код:
/etc/logrotate.conf
тут определяются настройки для приложений по умолчанию. А в папке
Код:
/etc/logrotate.d/
лежат настройки для каждого приложения отдельно.

Первый файл, с дефолтными настройками, можно не трогать. Нас интересуют файлы настроек для приложений.
Создадим новый файл для сервера, например назовём его pw_logs и отредактируем его:
Код:
sudo touch /etc/logrotate.d/pw_logs
sudo nano /etc/logrotate.d/pw_logs
(тут надо заметить, что можно сразу открыть файл на редактирование и при сохранении система его создаст, но мне так привычней Wink )
Теперь нужно вписать в него собственно настройки. Первой строкой пишем путь к логам
Код:
/pwserver/logs/*
Звёздочка в конце указывает, что ротация будет вестись независимо от расширения файла. Сами настройки указываются в блоке фигурных скобок, т.е. файл должен выглядеть примерно так:
Код:
/pwserver/logs/* {
        monthly
        size 10M
        rotate 10
        compress
        missingok
        notifempty
        create 644 root root
}
Сначала у меня указано время ротации - monthly, т.е. в начале каждого месяца логи будут упакованы.

Далее размер - size 10M (10 Мб), выбрал 10, потому что логи чаще приходится смотреть через фтп, а ждать пока скачается 100 метров ненужного лога долго =) Опция думаю понятна - при достижении логом размера в 10Мб производится ротация.

compress - указывает на то, что логи надо архивировать, а не просто переименовывать.

rotate 10 - количество сохраняемых логов, в данном примере старые логи будут упаковываться, пока их количество не станет 10, тогда самый старый лог удалится.

missingok - пропуск возможных ошибок при ротации лога, с этой опцией ошибки игнорируются и новый лог-файл создаётся в любом случае.

notifempty - флаг, говорящий о том, что пустые файлы паковать не надо =)

create 644 root root - права, пользователь и группа, с которыми создаются новые логи, лучше всего посмотреть с какими правами у вас создаются логи сейчас и поставить такие же тут (разумеется поставьте свой путь до логов)
Код:
ls -la /pwserver/logs

С настройкой закончили, можно конечно добавить ещё кучу всего, но этого вполне достаточно (подробнее можно почитать например здесь)

Теперь можно запустить logrotate
Код:
sudo logrotate /etc/logrotate.conf
и посмотреть что стало с логами (если были те, которые удовлетворяют условиям)

По умолчанию logrotate запускается ежедневным кроном (/etc/cron.daily), но при желании можно сделать запуск и в другое время, для этого нужно просто добавить "logrotate /etc/logrotate.conf" в крон.

Кажется всё Wink
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  Логи ГСа Mag_i_str 6 7,027 05-01-2013, 09:01 PM
Последний пост: Mag_i_str

Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)