0Pricing
DevOps Bootcamp · Урок

Автоматическая ротация и очистка журналов

Поддерживайте диски в порядке, автоматизировав ротацию журналов и удаление старых файлов с помощью logrotate и скриптов на основе find, запускаемых по расписанию.

«Автоматическая ротация и очистка журналов» — бесплатный урок DevOps Bootcamp на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения DevOps Bootcamp, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс DevOps Bootcamp содержит 4 уроков всего.

Проблема растущих журналов

Долго работающие службы записывают журналы бесконечно. Без управления они заполняют диск и приводят систему к сбою. Ротация и очистка помогают держать их под контролем.

du -sh /var/log/*

Что делает ротация журналов

Ротация переименовывает текущий журнал, создаёт новый пустой и сохраняет ограниченное число старых сжатых копий.

  • app.log становится app.log.1
  • старые копии сжимаются с помощью gzip
  • самые старые удаляются

Знакомство с logrotate

logrotate — стандартный инструмент Linux, который автоматически выполняет ротацию по размеру или сроку, заданным в /etc/logrotate.d/.

cat /etc/logrotate.conf

Простая конфигурация logrotate

Блок конфигурации задаёт файлы журналов и правила ротации.

/var/log/myapp/*.log {
    daily
    rotate 7
    compress
    missingok
    notifempty
}

Разбор директив

Распространённые директивы:

  • daily выполнять ротацию ежедневно
  • rotate 7 хранить 7 старых файлов
  • compress сжимать журналы после ротации
  • missingok пропускать отсутствующие файлы

Проверка без ожидания

Принудительно запустите обработку с помощью -f или выполните пробный запуск с помощью -d, чтобы проверить конфигурацию до того, как доверить ей расписание.

logrotate -d /etc/logrotate.d/myapp
logrotate -f /etc/logrotate.d/myapp

Сценарии postrotate

Многие службы продолжают использовать открытый дескриптор старого файла. Блок postrotate сообщает службе, что после ротации журнал нужно открыть заново.

/var/log/myapp/*.log {
    daily
    postrotate
        systemctl reload myapp
    endscript
}

Очистка старых файлов с помощью find

Для разовой очистки используйте find с -mtime: команда находит файлы старше N дней и удаляет их.

find /var/log/myapp -name "*.log" -mtime +30 -delete

Безопасный сценарий очистки

Оформите очистку в виде сценария, который записывает сведения об удаляемых файлах, чтобы у Вас оставался журнал аудита.

#!/bin/bash
DIR=/var/backups
find "$DIR" -name "*.tar.gz" -mtime +14 -print -delete \
  >> /var/log/cleanup.log 2>&1

Планирование очистки

Разместите ротацию в конфигурации logrotate (она уже запускается через cron), а собственные сценарии очистки запланируйте отдельной записью в Вашем crontab.

# crontab -e
30 2 * * * /usr/local/bin/cleanup.sh

Мониторинг использования диска

Добавьте проверку, которая отправляет оповещение при превышении разделом порогового значения, чтобы очистка никогда не запускалась слишком поздно.

USAGE=$(df --output=pcent / | tr -dc "0-9")
[ "$USAGE" -gt 90 ] && echo "Disk over 90%" | mail -s alert root

Быстрая проверка

Проверьте свои знания об автоматизации.

Итоги

Вы автоматизировали обслуживание журналов:

  • logrotate выполняет ротацию по сроку или размеру с помощью rotate, compress, postrotate
  • Проверяйте конфигурацию с помощью -d / -f
  • Используйте find -mtime +N -delete для собственной очистки
  • Планируйте запуск через cron и устанавливайте защиту с помощью оповещений об использовании диска

Часто задаваемые вопросы

Урок «Автоматическая ротация и очистка журналов» бесплатный?

Да — полный текст урока «Автоматическая ротация и очистка журналов» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс DevOps Bootcamp, подпишись на CoddyKit PRO. Курс DevOps Bootcamp содержит 4 уроков всего.

Чему я научусь в уроке «Автоматическая ротация и очистка журналов»?

Поддерживайте диски в порядке, автоматизировав ротацию журналов и удаление старых файлов с помощью logrotate и скриптов на основе find, запускаемых по расписанию. Ты практикуешь DevOps Bootcamp с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать DevOps Bootcamp?

Предыдущий опыт не требуется. DevOps Bootcamp на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Автоматическая ротация и очистка журналов»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке DevOps Bootcamp?

Да. Каждый урок DevOps Bootcamp включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Планирование задач с Cron
  2. Автоматизация системного администрирования
  3. Проект по расширенной разработке скриптов
  4. Автоматическая ротация и очистка журналов
← Назад к DevOps Bootcamp