Как настроить Logrotate в Linux (чтобы у вас не закончилось место на сервере) — CloudSavvy IT

Большинство служб в Linux создают файлы журналов, обычно хранящиеся в /var/log/. Это простые текстовые файлы, но они могут стать действительно очень большими — до такой степени, что вы сможете запускать сервер из любого места.

Что делает Logrotate?

Logrotate помогает управлять файлами журналов и предотвращает их накопление. Он автоматически архивирует текущий файл журнала, создает новый пустой файл и удаляет действительно старые архивы после нескольких ротаций. Время по умолчанию может быть установлено очень большим (по умолчанию nginx хранит журналы в течение одного года), поэтому вы можете столкнуться с проблемами, если не отредактируете файлы конфигурации.

Размер ваших файлов будет варьироваться в зависимости от службы, и вы захотите соответствующим образом настроить logrotate. Если вы хотите узнать, сколько места занимает каждая служба с журналами, вы можете использовать ее. du команда:

du -h /var/log/ | sort -hr

Почти все файлы журналов будут в /var/log/, да du добавляет все файлы журналов и отображает их в красивом списке (с разрешением sort -hr для «человекочитаемого»):

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

Обычно такие вещи, как веб-серверы (apache2, nginx и т. Д.) И другие приложения, которые получают много взаимодействий, создают множество файлов журналов, полагая, что точный размер будет зависеть от того, сколько данных они фактически регистрируют на диске.

Установка Logrotate (если у вас его еще нет)

По умолчанию вам может не понадобиться ничего делать для настройки logrotate, потому что по умолчанию он установлен во многих дистрибутивах и службах, которые генерируют много файлов журналов (nginx, apache и т. Д.). Обычно они имеют предварительно настроенную конфигурацию logrotate.

Вы можете проверить, установлен ли logrotate, используя:

which logrotate

Или установите его из диспетчера пакетов вашего дистрибутива, если нет. Для систем на основе Debian, таких как Ubuntu, это будет:

sudo apt-get install logrotate

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

Как работает Logrotate

Хотя logrotate будет предварительно настроен для популярных сервисов, таких как nginx и apache2, вы можете настроить его вручную или изменить конфигурацию по умолчанию.

Глобальная конфигурация logrotate хранится в /etc/logrotate.conf, но вы перезапишете большую часть его файлами конфигурации для отдельных приложений, которые хранятся в /etc/logrotate.d/ адресная книга. Давайте посмотрим на конфигурацию nginx по умолчанию в /etc/logrotate.d/nginxкоторый вы можете использовать в качестве шаблона для добавления новых приложений в logrot:

/var/log/nginx/*.log {
        weekly
        missingok
        rotate 52
        compress
        delaycompress
        notifempty
        create 0640 www-data adm
        sharedscripts
        prerotate
                if [ -d /etc/logrotate.d/httpd-prerotate ]; then 
                        run-parts /etc/logrotate.d/httpd-prerotate; 
                fi 
        endscript
        postrotate
                invoke-rc.d nginx rotate >/dev/null 2>&1
        endscript
}

Первая строка запускает блок и говорит logrotate, какие файлы искать. Подстановочный знак *.log будет соответствовать всем файлам, заканчивающимся на .log расширения в папке журнала nginx. Вы также можете ввести здесь несколько каталогов и включить их в одну конфигурацию.

еженедельно будет менять протоколы один раз в неделю. Если вы хотите повернуть их по размеру, вы можете использовать их вместо size 25M поверните их, как только они достигнут определенного предела, в этом примере 25 мегабайт.

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

52 года хранит 52 различных файла журнала. В этом случае, поскольку он будет обновляться один раз в неделю, logrotate будет хранить файлы журнала годами, прежде чем удалять старые. Вы можете изменить его на rotate 4 хранить файлы журнала только на один месяц.

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

непустой — еще один флаг проверки, который гарантирует, что logrotate запускается только при записи новых файлов журнала. В Создайте flag создает эти новые файлы журналов с определенными разрешениями. Синтаксис: create [mode] [owner] [group].

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

Обратите внимание, что вам нужно будет преобразовать режим в восьмеричный, да -rw-r----- случается 0640. Владелец nginx здесь www-dataи группа adm.

общие скрипты указывает, что вращать а также стремиться хуки будут запускаться только один раз за ротацию, а не один раз за каждый ротационный файл журнала. Эти хуки представляют собой скрипты, которые вы можете вызывать до и после ротации. По умолчанию для переключения файлов журнала запускается несколько сценариев конфигурации nginx. Если настраиваемая служба не может загружать новые файлы журналов, вы захотите остановить и перезапустить ее в этих перехватчиках. Однако ловушка не обязана связываться со службой; например, вы можете использовать крюк перед поворотом резервное копирование файлов журналов на AWS S3 с участием s3cmd пока они не будут удалены.

Logrotate работает самостоятельно, поэтому вам не нужно беспокоиться о запуске службы при загрузке или настройке. cron Работа. Просто вставьте файлы конфигурации для каждого приложения /etc/logrotate.d/и вам больше никогда не придется беспокоиться о протоколах.

[

]

Add a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *