Побеждаем пухлый log в Ubuntu / Блог им. FREExLOADER / Мтааламу - для профи и профессиональных любителей

Побеждаем пухлый log в Ubuntu

Недавно начал качать усиленно с торрентов, покачав несколько дней заметил что на системном диске с Ubuntu 10.04 — резко пропало 8 гб . Поставив на проверку веса дерикторий обноружил что всему причиной файлы находящиеся в var/log:

/var/log/syslog.log
/var/log/kern.log
/var/log/messages.log
/var/log/ufw.log

Вычитав и покапавшись в логах понял что виною данных проблем является UFW AUDIT ошибающийся при неудачных попытках сетевых соединений(как я понимаю это следствие закрытых портов в фаерволе).
Так как же вылечить это недразумение? а вот так:
Оказывается в стандартный пакет Ubuntu включена специальная система ротации логов logrotate.
Конфиги для архивации логов находятся здесь /etc/logrotate.d их то мы и будем править
откроем через права администратора файл rsyslog:
sudo gedit /etc/logrotate.d/rsyslog

мы увидем что то подобное:
/var/log/syslog
{
	rotate 7
	weekly
	missingok
	notifempty
	delaycompress
	compress
	postrotate
		reload rsyslog >/dev/null 2>&1 || true
	endscript
}

/var/log/mail.info
/var/log/mail.warn
/var/log/mail.err...
...и так далее(не стал выкладывать конфиг целиком)


Разобратся с этим нам поможет вот эта таблица:

Параметр Описание

rotate <число> Количество хранимых файлов


daily
weekly
monthly игнорировать размер файла; Производить ротацию раз в день/неделю/месяц


size <байт>
size 1000
size 100k
size 1M
Производить ротацию если log-файл превысил указанный размер

байт
Кбайт
Мбайт

start <число> число с которого начнётся нумерация файлов


compress Архивировать файлы (по умолчанию gzip)

nocompress Отключает compress


delaycompress Не сжимать 'свеже' созданный архив. Например access.log.1 не будет зжат.
Используется с compress


create <права><владелец><группа>
create 640 root root После ротации создать пустой log-файл. Любые из этих атрибутов могут быть опущены,

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

copy Создать копию оригинального log-файла, не изменяя его. Исключает create


nocopy Отключает copy

copytruncate Создать копию оригинального log-файла, а потом его 'обнулить'.
Таким образом сам файл не удаляется.
Исключает copy, create


ifempty Архивирует даже пустой файл (используется по умолчанию)

notifempty Не архивировать пустые файлы


missingok В случае отсутствия оригинального log-файла не вызовет ошибку

nomissingok В случае отсутствия оригинального log-файла вызовет ошибку


postrotate
<команды>
endscript Строки, находящиеся между postrotate и endscript

будут выполнены как sh скрипт после архивирования log-файла

prerotate
<команды>
endscript Аналогично postrotate, только действия будут выполнены до начала архивирования


sharedscripts Скрипты postrotate и prerotate будут выполнены только один раз в рамках своей секции.


nosharedscripts Отключает sharedscripts.
Скрипты будут выполняются при ротации каждого log-файла,

при определение /var/log/apache2/*.log скрипт будет выполнен столько раз
сколько уникальных log-файлов будет находится в данной директории

olddir <путь>

olddir /home/logsПеремещать архивные файлы в указанную директорию

noolddir Отключает olddir



Команды пишутся после строки с местом нахождения лога- например:
/var/log/ufw.log
{команды пишутся сюда}  

Так как же нам оптимизировать лог — вот пример как это настроенно у меня:
rsyslog:

/var/log/syslog
{
	rotate 3
	size 200M
	missingok
	notifempty
	delaycompress
	compress
	postrotate
		reload rsyslog >/dev/null 2>&1 || true
	endscript
}
/var/log/mail.info
/var/log/mail.warn
/var/log/mail.err
/var/log/mail.log
/var/log/daemon.log
/var/log/kern.log
{
	rotate 3
	size 200M
	missingok
	notifempty
	delaycompress
	compress
	postrotate
		reload rsyslog >/dev/null 2>&1 || true
	endscript
}
/var/log/auth.log
/var/log/user.log
/var/log/lpr.log
/var/log/cron.log
/var/log/debug
/var/log/messages
{
	rotate 3
	size 200M
	missingok
	notifempty
	compress
	delaycompress
	sharedscripts
	postrotate
		reload rsyslog >/dev/null 2>&1 || true
	endscript
}



ufw:

/var/log/ufw.log
{
	rotate 3
	size 200M
	missingok
	notifempty
	compress
	delaycompress
	sharedscripts
	postrotate
		reload rsyslog >/dev/null 2>&1 || true
	endscript
}

В данном случае указанно что логи после превышения определенного размера будут ротироватся(не по неделям как это было до оптимизации) и их максимальное количество будет не больше 3х штук в сжатом виде — стоит заметить после обновления конфига советую подчистить старые логи настройки которых мы оптимизировали(возможно они много весят) — можно их просто удалить под правами администратора(тока осторожнее не переусердствуйте) — после перезагрузки они создадутся автоматически.
И уйти в перезагрузку.
Надеюсь вам поможет моя статья в оптимизации ubuntu .

Комментарии (7)

RSS свернуть / развернуть
+
+1
OMG! а не проще было
apt-get purge ufw
?
avatar

durman

  • 25 июля 2010, 12:49
+
0
можт быть и проще но оказывается есть и такой способ оптимизации логов — не охота рубить пакеты — можт быть он мне ещё пригодится
avatar

FREExLOADER

  • 25 июля 2010, 12:52
+
0
насколько мне известно, ufw это обертка над iptables. Так что смело можно apt-get purge ufw =)
avatar

durman

  • 25 июля 2010, 12:55
+
0
будем знать
avatar

FREExLOADER

  • 25 июля 2010, 12:56
+
0
Но про ротацию логов было интересно почитать =)
avatar

durman

  • 25 июля 2010, 12:54
+
0
Пользо б/п! Правда, мой шлюз построен на Slax и там все логи живут до первой перезагрузки.
avatar

yababay

  • 25 июля 2010, 15:21
+
0
Польза!!!
avatar

Markony

  • 26 июля 2010, 10:34

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.