Управление журналами: предотвращение заполнения диска с logrotate
Важные расположения журналов, настройка logrotate, ограничения размера journald, поиск больших файлов журналов и основы анализа журналов на Linux-серверах.
Содержание
Управление журналами: предотвращение заполнения диска с logrotate
Файлы журналов незаменимы для диагностики системных проблем и мониторинга событий безопасности. Однако без управления они могут заполнить дисковое пространство и вызвать сбои системы. В этом руководстве рассматриваются важные расположения журналов, настройка logrotate, управление размером journald и поиск больших файлов журналов.
Важные расположения журналов
Системные файлы журналов
# Основная директория системных журналов
ls -lh /var/log/
# Важные файлы журналов:
# /var/log/syslog — Общие системные сообщения (Debian/Ubuntu)
# /var/log/messages — Общие системные сообщения (RHEL/CentOS)
# /var/log/auth.log — Журналы аутентификации (Debian/Ubuntu)
# /var/log/secure — Журналы аутентификации (RHEL/CentOS)
# /var/log/kern.log — Сообщения ядра
# /var/log/cron — Журналы cron-задач
# /var/log/mail.log — Журналы почтового сервера
Файлы журналов приложений
# Журналы веб-сервера
/var/log/nginx/access.log
/var/log/nginx/error.log
/var/log/apache2/access.log
/var/log/apache2/error.log
# Журналы баз данных
/var/log/mysql/error.log
/var/log/postgresql/
Мониторинг файлов журналов
# Мониторинг журналов в реальном времени
tail -f /var/log/syslog
tail -f /var/log/nginx/access.log
# Последние 100 строк
tail -n 100 /var/log/auth.log
# Поиск по ключевому слову
grep "ERROR" /var/log/nginx/error.log
grep "Failed password" /var/log/auth.log
# Поиск в нескольких файлах
grep -r "error" /var/log/nginx/
Анализ дискового пространства
Поиск больших файлов журналов
# Найти наибольшие файлы в /var/log
du -sh /var/log/* | sort -rh | head -20
# Найти большие файлы в системе (100МБ+)
find / -type f -size +100M -exec ls -lh {} \; 2>/dev/null
# Файлы больше 50МБ в /var/log
find /var/log -type f -size +50M -exec ls -lh {} \;
# Проверить использование диска
df -h
# Просмотр размеров директорий
du -sh /var/log/
du -sh /var/log/* | sort -rh
Настройка logrotate
logrotate — инструмент, автоматически ротирующий, сжимающий и удаляющий файлы журналов.
Как работает logrotate
# logrotate обычно запускается ежедневно через cron
cat /etc/cron.daily/logrotate
# Запустить вручную
sudo logrotate /etc/logrotate.conf
# Режим симуляции (без реальных операций)
sudo logrotate --debug /etc/logrotate.conf
# Принудительная ротация
sudo logrotate --force /etc/logrotate.d/nginx
Основная конфигурация logrotate
# Основной файл конфигурации
sudo nano /etc/logrotate.conf
# Настройки по умолчанию
weekly # Ротация еженедельно
rotate 4 # Хранить 4 старые версии
create # Создавать новый файл после ротации
compress # Сжимать старые журналы
delaycompress # Не сжимать последний ротированный журнал
include /etc/logrotate.d # Включить конфигурации приложений
Конфигурация logrotate для конкретного приложения
# Конфигурация logrotate для Nginx
sudo nano /etc/logrotate.d/nginx
/var/log/nginx/*.log {
daily # Ротация ежедневно
missingok # Не ошибаться если файл отсутствует
rotate 14 # Хранить 14 дней журналов
compress # Сжимать
delaycompress # Не сжимать последний
notifempty # Не ротировать пустые файлы
create 0640 www-data adm
sharedscripts
postrotate
if [ -f /var/run/nginx.pid ]; then
kill -USR1 `cat /var/run/nginx.pid`
fi
endscript
}
logrotate для пользовательского приложения
sudo nano /etc/logrotate.d/myapp
/var/log/myapp/*.log {
daily
rotate 30
compress
delaycompress
missingok
notifempty
create 0644 www-data www-data
dateext
dateformat -%Y%m%d
postrotate
systemctl reload myapp 2>/dev/null || true
endscript
}
Управление размером journald
# Проверить текущий размер журнала
journalctl --disk-usage
# Очистить старые журналы (старше 2 недель)
sudo journalctl --vacuum-time=2weeks
# Очистить с ограничением размера
sudo journalctl --vacuum-size=500M
# Хранить определённое количество файлов
sudo journalctl --vacuum-files=5
Постоянная конфигурация journald
# Редактировать файл конфигурации journald
sudo nano /etc/systemd/journald.conf
[Journal]
# Максимальное использование диска
SystemMaxUse=500M
# Минимальное свободное место на диске
SystemKeepFree=1G
# Максимальный размер файла
SystemMaxFileSize=50M
# Период хранения журналов
MaxRetentionSec=2weeks
# Сжатие
Compress=yes
# Постоянное хранение
Storage=persistent
# Применить конфигурацию
sudo systemctl restart systemd-journald
Основы анализа журналов
# Анализ журналов ошибок Nginx
grep -c "error" /var/log/nginx/error.log
grep "error" /var/log/nginx/error.log | tail -20
# Обнаружение попыток брутфорса SSH
grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -rn | head -10
# Найти IP с наибольшим количеством запросов
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -10
# Подсчёт HTTP-кодов состояния
awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -rn
# Фильтрация ошибок из journald
journalctl -p err --since "1 hour ago"
Экстренная ситуация: диск заполнен
# Быстрое реагирование при заполненном диске
# 1. Проверить состояние диска
df -h
# 2. Найти наибольшие файлы
du -sh /var/log/* | sort -rh | head -10
# 3. Очистить старые журналы
sudo journalctl --vacuum-time=3days
# 4. Сжать несжатые старые журналы
find /var/log -name "*.log.*" ! -name "*.gz" -exec gzip {} \;
# 5. Принудительно запустить logrotate
sudo logrotate --force /etc/logrotate.conf
# 6. Очистить кэш пакетов
sudo apt clean # Ubuntu/Debian
sudo dnf clean all # RHEL/CentOS
Автоматизируйте управление журналами: регулярно проверяйте конфигурацию logrotate, устанавливайте ограничения размера journald и настраивайте оповещения для мониторинга использования диска.
Заключение
Эффективное управление журналами предотвращает проблемы с заполнением диска и повышает надёжность системы. С автоматической ротацией logrotate, ограничениями размера journald и регулярным анализом журналов вы можете поддерживать серверы REXE в хорошем состоянии.
Связанные статьи
Подключение к VDS по SSH: PuTTY, терминал и SSH-ключи
Пошаговое руководство по SSH-подключению к Linux VDS: PuTTY, терминал, аутентификация по ключу, правило фильтрации Path Panel и советы по безопасности.
Подключение к Windows VDS по RDP: полное руководство
Пошаговое руководство по RDP-подключению к Windows Server VDS: настройка, безопасность NLA, правило фильтрации Path Panel и устранение неполадок.
Смена ОС VDS-сервера: пошаговое руководство (Reinstall)
Смена операционной системы VDS через панель REXE: советы по резервному копированию, поддерживаемые дистрибутивы Linux и версии Windows Server.