Ротация и архивирование журналов
Настройте `logrotate` для управления размерами файлов журналов, предотвращения переполнения диска и эффективного архивирования журналов.
«Ротация и архивирование журналов» — бесплатный урок Linux Server Deployment & SSH Mastery на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Linux Server Deployment & SSH Mastery, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Linux Server Deployment & SSH Mastery содержит 4 уроков всего.
Почему важна ротация журналов
Журналы сервера необходимы для отладки и мониторинга, но со временем они могут стать очень большими. Если не контролировать их размер, они быстро заполнят дисковое пространство, что приведёт к нестабильной работе сервера или даже сбоям.
Здесь на помощь приходит ротация журналов. Это важный процесс эффективного управления размером файлов журналов.
Знакомство с утилитой `logrotate`
В системах Linux используется утилита logrotate для автоматизации управления файлами журналов. Она предназначена для следующих задач:
- Ротация журналов (переименование старых файлов)
- Сжатие старых журналов для экономии места
- Удаление очень старых файлов журналов
- Запуск пользовательских сценариев после ротации
В большинстве дистрибутивов Linux logrotate предварительно установлен и настроен на ежедневный запуск через задание cron.
Как `logrotate` находит инструкции
logrotate считывает конфигурацию из определённых файлов. Есть два основных места:
/etc/logrotate.conf: основной файл конфигурации, часто содержащий глобальные параметры и значения по умолчанию./etc/logrotate.d/: каталог, в котором отдельные приложения и службы размещают собственные правила ротации журналов. Каждый файл в этом каталоге рассматривается как отдельная конфигурация.
Такой модульный подход упрощает управление правилами для разных служб.
Настройка периодичности ротации журналов
Один из первых параметров, который нужно определить, — как часто следует выполнять ротацию журналов. logrotate предлагает для этого несколько директив:
daily: выполнять ротацию журналов каждый день.weekly: выполнять ротацию журналов раз в неделю.monthly: выполнять ротацию журналов раз в месяц.yearly: выполнять ротацию журналов раз в год.
Выберите периодичность, которая обеспечит баланс между сохранением подробностей журналов и расходом дискового пространства.
Хранение определённого количества старых журналов
Директива rotate указывает logrotate, сколько старых файлов журналов нужно хранить до удаления самых старых. Например, rotate 4 означает, что будет сохранён текущий файл журнала и четыре ротированные (архивные) версии.
После достижения этого ограничения самый старый ротированный журнал удаляется при выполнении следующей ротации.
Сжатие старых файлов log
Чтобы сэкономить ещё больше места на диске, logrotate может сжимать старые файлы log. Директива compress делает именно это, обычно с помощью gzip.
При включении этой функции повернутые файлы log будут иметь расширение .gz (например, myapp.log.1.gz). Для большинства серверных файлов log это настоятельно рекомендуется.
Ротация по размеру, а не только по времени
Иногда файлы log могут очень быстро увеличиваться, и ожидания ежедневной или еженедельной ротации недостаточно. Директива size позволяет выполнять ротацию файлов log, если они превышают определённый размер, независимо от периодичности по времени.
size 100k: выполнять ротацию, если файл log больше 100 килобайт.size 10M: выполнять ротацию, если файл log больше 10 мегабайт.size 1G: выполнять ротацию, если файл log больше 1 гигабайта.
Если указаны и периодичность по времени (например, daily), и size, ротация выполняется при соблюдении любого из условий.
Пример конфигурации `logrotate`
Вот простой пример файла конфигурации, который можно найти в каталоге /etc/logrotate.d/, для файла log условного приложения:
Эта конфигурация будет выполнять ротацию log ежедневно, хранить 7 старых копий и сжимать их.
/var/log/my_app/access.log {
daily
rotate 7
compress
notifempty
missingok
}
Запуск `logrotate` вручную
Хотя logrotate обычно запускается автоматически через cron, Вы можете вручную проверить или принудительно выполнить ротацию. Основная команда — logrotate /etc/logrotate.conf.
Чтобы принудительно выполнить ротацию (это удобно для проверки конфигураций), используйте флаг -f:
logrotate -f /etc/logrotate.d/my_app: принудительно выполняет ротацию для указанного файла конфигурации.logrotate -f /etc/logrotate.conf: принудительно выполняет ротацию для всех настроенных файлов log.
Используйте флаг -d (отладка), чтобы увидеть, какие действия были бы выполнены, не запуская фактическую ротацию.
Быстрая проверка: хранение файлов log
Рассмотрите следующую конфигурацию logrotate для /var/log/webserver/error.log:
/var/log/webserver/error.log {
weekly
rotate 4
compress
notifempty
}Если эта конфигурация работает уже несколько недель, сколько *сжатых* исторических файлов log Вы ожидаете найти в любой момент времени?
Итоги: освоение управления файлами log
В этом уроке мы изучили эффективное управление серверными файлами log с помощью logrotate. Мы узнали, что:
- Ротация файлов log предотвращает исчерпание места на диске.
logrotateиспользует файлы конфигурации в каталогах/etc/logrotate.confи/etc/logrotate.d/.- К основным директивам относятся
daily/weekly/monthlyдля задания периодичности,rotateдля хранения,compressдля экономии места иsizeдля условной ротации.
Правильное управление файлами log — основа стабильной работы сервера!
Изучай Linux Server Deployment & SSH Mastery с ИИ-репетитором — бесплатно
Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.
- Курсы
- 12
- Уроки
- 48
Часто задаваемые вопросы
Урок «Ротация и архивирование журналов» бесплатный?
Да — полный текст урока «Ротация и архивирование журналов» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Linux Server Deployment & SSH Mastery, подпишись на CoddyKit PRO. Курс Linux Server Deployment & SSH Mastery содержит 4 уроков всего.
Чему я научусь в уроке «Ротация и архивирование журналов»?
Настройте `logrotate` для управления размерами файлов журналов, предотвращения переполнения диска и эффективного архивирования журналов. Ты практикуешь Linux Server Deployment & SSH Mastery с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Linux Server Deployment & SSH Mastery?
Предыдущий опыт не требуется. Linux Server Deployment & SSH Mastery на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Ротация и архивирование журналов»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Linux Server Deployment & SSH Mastery?
Да. Каждый урок Linux Server Deployment & SSH Mastery включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Инструменты мониторинга системы
- Понимание системных журналов
- Ротация и архивирование журналов
- Централизованный мониторинг и оповещения