Автор: Кузнецов Константин
Системные сообщения и управление ими (logrotate)
План:
1. Введение
2. Использование логов
3. Управление логами с помощью logrotate
4. Используемая литература и полезные ссылки
-------------------------------------------------------------------------------------
1. Введение в логи
В операционной системе Gnu/Linux, как и в любой другой уважающей себя операционной системе, есть системные сообщения (логи), будь то сообщения об ошибках, сообщения об удачном/неудачном подключении к серверу, аутентификация пользователя и пр. Все эти сообщения хранятся (по идее должны храниться, а там уж как настроишь) в специально существующей для них директории /var/log/ . Для каждой программы, которая "пишет логи" (отправляет сообщения о своей работе в файл журнала), существует свой лог, за исключением некоторых системных, которые пишут все в один общий файл. Например, программа samba хранит логи в директории /var/log/samba в файлах log.smbd, log.nmbd, log.192.168.0.3, log.comp4 и т.д. Программа postfix (почтовый сервер) кидает логи в специальный лог - /var/log/mail.log. Mysql - /var/log/mysql.err и /var/log/mysql.log. Просмотрев список файлов и директорий в /var/log можно узнать, какие сообщения и от каких программ доступны.
-------------------------------------------------------------------------------------
2. Использование логов
Логи могут пригодиться в различных ситуациях:
- при настройке программы (отслеживание и устранение ошибок в том числе и файлах конфигурации)
- при аудите безопасности (кто подключался, кто не смог, откуда слишком много попыток подключения с неправильным паролем - подбор пароля и т.п.)
- при сборе статистики (подсчет трафика и пр.)
Любой лог - это текстовый файл, каждая строчка которого - одно сообщение. Строки эти расположены в хронологическом порядке с указанием времени. Таким образом можно просто делать вывод файла и отсеивать по времени:
cat /var/log/mail.log|grep "15:00:0"Можно посмотреть последние несколько строчек (последние записи):
tail /var/log/mail.logВ некоторых случаях даже существуют специальные программы, обрабатывающие логи и выводящие необходимую информацию (статистику в основном).
Проблемы с логами.
В некоторых случаях логи могут занимать много места на диске. Такое может произойти при неправильно настроенной системе или если нам так надо. Большой лог-файл нам может понадобиться для обработки сообщений за длительный период времени (за месяц, за квартал). После чего файл переименовывается/сжимается/удаляется и создается новый. Можно настроить систему таким образом, чтобы некоторые лог-файлы очищались ежечасно, некоторые ежедневно, некоторые еженедельно, а некоторые - ежемесячно и т.п. Выполнением планового очищения занимается инструмент logrotate, конфигурационный файл которого /etc/logrotate.conf.
-------------------------------------------------------------------------------------
3. Управление логами с помощью logrotate
Очищение (ротация) логов.
Утилита logrotate по сути выполняет периодическое переименование существующего лога, например, error.log в error.log2, потом в error.log3, потом еще и сжимает в error.log3.tar.gz, потом удаляет. На место переименованного записывает новый пустой, или более свежий лог. Путь к лог-файлу, количество ротаций, сжимать ли, что делать перед ротацией, что делать после ротации, как часто выполнять ротацию и прочие опции можно задавать для каждого приложения в /etc/logrotate.d/, например /etc/logrotate.d/vsftpd:
/var/log/vsftpd.log {
# ftpd doesn't handle SIGHUP properly
nocompress # не сжимать ротируемый файл
missingok # отсутствие файла не является ошибкой
notifempty # не обрабатывать пустые файлы
rotate 4 # Сохранять 4 старых лога, они будут иметь вид log.1, log.2.gz, log.3.gz
weekly # Выполнять ротацию еженедельно
}
-------------------------------------------------------------------------------------
4. Используемая литература и полезные ссылки
1. ru.wikipedia.org/wiki/Файл_регистрации
2. Ротация логов с помощью logrotate в Debian / Ubuntu
3. Автоматическая ротация log'ов с помощью logrotate