Что-то все реже и реже находится время, чтобы написать несколько абзацев в свой новый блог. Но сегодня будет исключение. Я все же возьму себя в руки и что-нибудь напишу. Речь в сегодняшнем посте пойдет о ротации логов: с чем едят, как готовить на примере нами любимого unicorn’а.
Думаю, что такое логи и для чего они нужны все знают. А вот что такое ротация логов многие могут не знать. Или знать, что это такое, но не использовать в повседневной жизни (к коим относился я до недавних пор).
Ротация логов – это, если простыми словами, то простой сдвиг, после которого текущий файл логов “обрубается”, архивируется (по желанию) и логи начинают писаться в чистый файл. Для ротации логов используют logrotate, конфигурационные файлы которого можно найти в /etc/logrotate.d/. Скорее всего, у вас на сервере эта папка не пуста и можно найти конфиги для postgresql’а, nginx’а и много чего еще.
Мы же с вами рассмотрим настройку ротации логов для unicorn’а. Если ваш ресурс посещает множество людей, то лог файл (production.log) становится нескромно большим, т.к. хранит все обращения ко всем страницам, все произошедшие ошибки и прочую информацию. Для того, чтобы этого избежать, создадим файл /etc/logrorate.d/#{your_app_name}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
Теперь по порядку:
- в кавычках мы указываем какие файлы будут “вращаться”, можно использовать “*” для нескольких файлов
- daily – сообщает logrotate “прокручивать” файл(ы) логов раз в день.
- missingok – не выдавать ошибочное сообщение, если файл логов отсутствует.
- rotate – лог будет “сдвинут” 180 раз, прежде, чем будет удален.
- compress – старые файлы будут заархивированы (gzip по умолчанию) для того, чтобы занимать меньше места.
- dateext – полезная опция, которая дописывает в название файла дату, формат можно изменить опцией dateformat вместо скучных названий, вроде (blog.log.1)
- delaycompress – откладывает сжатие на один цикл
- lastaction и endscript – строки между данными директивами будут выполнены (с применением /bin/sh) после каждой ротации. Мы используем их, чтобы сообщить unicorn’у и всем его воркерам (USR1 сигнал) заново открыть файлы логов.
После того, как мы написали конфиг, мы должны сообщить logrotate об этом, я предпочитаю сделать это с флагом -f (force), который заново считывает свои конфиги делает один “оборот” логов.
sudo logrotate -f /etc/logrotate.d/#{your_app_name}
Как вы, наверное, уже догадались, #{your_app_name} необходимо заменить именем вашего приложения. После прочтения данного поста, вы с легкостью сможете настроить ротацию логов для чего угодно. Удачи вам и не теряйте свои логи :)