Ротация логов с помощью newsyslog.
Решил настроить ротацию логов.
Причиной послужило резкое увеличение размеров лог файлов, которые вскоре
могли забить раздел /var:
shield@/root> cd /var/log/ shield@/var/log> ll total 41266 drwxr-xr-x 5 root wheel 2,0K 24 ноя 04:00 . drwxr-xr-x 24 root wheel 512B 24 ноя 18:39 .. -rw------- 1 root wheel 83K 24 ноя 19:20 auth.log -rw------- 1 root wheel 14K 6 авг 02:00 auth.log.0.bz2 -rw------- 1 root wheel 8,9K 27 июл 18:00 auth.log.1.bz2 -rw------- 1 root wheel 15K 22 июл 10:00 auth.log.2.bz2 -rw------- 1 root wheel 10K 22 июл 00:00 auth.log.3.bz2 -rw------- 1 root wheel 14K 20 июл 08:00 auth.log.4.bz2 -rw------- 1 root wheel 13K 2 июл 17:00 auth.log.5.bz2 drwxr-xr-x 2 squid squid 512B 17 окт 15:09 c_icap drwxr-xr-x 2 clamav clamav 512B 17 окт 10:35 clamav -rw------- 1 root wheel 42K 24 ноя 19:20 cron -rw------- 1 root wheel 4,7K 24 ноя 04:00 cron.0.bz2 -rw------- 1 root wheel 4,7K 23 ноя 00:00 cron.1.bz2 -rw------- 1 root wheel 4,7K 21 ноя 20:00 cron.2.bz2 -rw------- 1 root wheel 4,7K 20 ноя 16:00 cron.3.bz2 -rw------- 1 root wheel 1,8K 24 ноя 16:30 debug.log -rw------- 1 root wheel 4,5K 22 ноя 20:00 debug.log.0.bz2 -rw------- 1 root wheel 3,6K 23 июн 22:00 debug.log.1.bz2 -rw------- 1 root wheel 30K 24 ноя 03:07 dmesg.today -rw------- 1 root wheel 30K 23 ноя 03:07 dmesg.yesterday -rw------- 1 root wheel 5,3K 7 авг 19:17 frox-log -rw------- 1 root wheel 44B 4 авг 03:01 ipfw.today -rw------- 1 root wheel 44B 3 авг 03:01 ipfw.yesterday -rw-r--r-- 1 root wheel 137K 24 ноя 19:19 lastlog -rw-r--r-- 1 root wheel 55B 22 июн 11:21 lpd-errs -rw-r----- 1 root wheel 6,8K 24 ноя 15:45 maillog -rw-r----- 1 root wheel 888B 24 ноя 00:00 maillog.0.bz2 -rw-r----- 1 root wheel 871B 23 ноя 00:00 maillog.1.bz2 -rw-r----- 1 root wheel 875B 22 ноя 00:00 maillog.2.bz2 -rw-r----- 1 root wheel 890B 21 ноя 00:00 maillog.3.bz2 -rw-r----- 1 root wheel 892B 20 ноя 00:00 maillog.4.bz2 -rw-r----- 1 root wheel 1,0K 19 ноя 00:00 maillog.5.bz2 -rw-r----- 1 root wheel 881B 18 ноя 00:00 maillog.6.bz2 -rw-r----- 1 root wheel 875B 17 ноя 00:00 maillog.7.bz2 -rw-r--r-- 1 root wheel 18K 24 ноя 19:20 messages -rw-r--r-- 1 root wheel 8,7K 22 ноя 20:00 messages.0.bz2 -rw-r--r-- 1 root wheel 11K 28 окт 17:00 messages.1.bz2 -rw-r--r-- 1 root wheel 98K 17 окт 17:00 messages.2 -rw-r--r-- 1 root wheel 99K 28 сен 20:00 messages.3 -rw-r--r-- 1 root wheel 148K 31 авг 12:00 messages.4 -rw-r--r-- 1 root wheel 101K 4 авг 09:00 messages.5 -rw------- 1 root wheel 251B 12 ноя 03:06 mount.today -rw------- 1 root wheel 251B 10 ноя 03:06 mount.yesterday -rw------- 1 bind bind 29M 31 июл 22:51 named-auth.log -rw------- 1 bind bind 50K 31 июл 22:29 named-update.log -rw-r--r-- 1 root wheel 541K 24 ноя 19:20 net.log -rw------- 1 root wheel 476B 24 ноя 03:07 pf.today -rw------- 1 root wheel 481B 23 ноя 03:07 pf.yesterday -rw-r----- 1 root network 55B 22 июн 11:21 ppp.log -rw-r--r-- 1 root wheel 9,6M 24 ноя 15:40 rsyncd.log drwxr-xr-x 3 root wheel 512B 25 окт 20:20 samba -rw------- 1 root wheel 55B 22 июн 11:21 security -rw-r----- 1 root wheel 728B 24 ноя 15:45 sendmail.st -rw-r----- 1 root wheel 728B 22 ноя 03:07 sendmail.st.0 -rw-r----- 1 root wheel 728B 16 ноя 03:07 sendmail.st.1 -rw-r----- 1 root wheel 728B 17 сен 23:36 sendmail.st.10 -rw-r----- 1 root wheel 728B 9 ноя 13:27 sendmail.st.2 -rw-r----- 1 root wheel 728B 3 ноя 00:00 sendmail.st.3 -rw-r----- 1 root wheel 728B 27 окт 02:00 sendmail.st.4 -rw-r----- 1 root wheel 728B 20 окт 03:15 sendmail.st.5 -rw-r----- 1 root wheel 728B 14 окт 03:14 sendmail.st.6 -rw-r----- 1 root wheel 728B 7 окт 04:24 sendmail.st.7 -rw-r----- 1 root wheel 728B 1 окт 02:55 sendmail.st.8 -rw-r----- 1 root wheel 728B 24 сен 03:11 sendmail.st.9 -rw------- 1 root wheel 7,8K 2 окт 03:12 setuid.today -rw------- 1 root wheel 7,9K 11 сен 03:13 setuid.yesterday -rw-r----- 1 root network 55B 22 июн 11:21 slip.log -rw-r--r-- 1 root wheel 0B 24 окт 19:09 smartd.log -rw-r--r-- 1 root wheel 65K 24 ноя 19:20 snmpd.log -rw-r--r-- 1 squid squid 77K 27 окт 20:10 squidGuard.log -rw-r--r-- 1 root wheel 25K 3 ноя 17:23 traffic.log -rw------- 1 root wheel 1,5K 3 ноя 00:24 userlog -rw-r--r-- 1 root wheel 3,7K 24 ноя 19:19 wtmp -rw-r--r-- 1 root wheel 9,8K 31 окт 17:50 wtmp.0 -rw-r--r-- 1 root wheel 6,9K 1 окт 00:08 wtmp.1 -rw-r--r-- 1 root wheel 4,6K 31 авг 15:52 wtmp.2 -rw-r--r-- 1 root wheel 3,1K 1 авг 01:12 wtmp.3 -rw------- 1 root wheel 156B 1 авг 00:56 xferlog shield@/var/log> ll | grep M -rw------- 1 bind bind 29M 31 июл 22:51 named-auth.log -rw-r--r-- 1 root wheel 9,6M 24 ноя 15:40 rsyncd.log shield@/var/log>
| Ух...
Файлик named-auth.log занимает 29 метров... Нехило. :) Надо с этим
что-то делать. Сначала я хотел написать свой sh срикпт, который будет
запускаться по ночам и все ротировать, но прогуглив этот вопрос, я
понял, что пытаюсь изобрести велосипед, так как ротацией логов
занимается программа newsyslog.
Newsyslog запускается раз в час, читает свой конфигурационный файл и
следую написанным там указаниям, производит определенные действия с
лог-файлами.
Давайте посмотрим, что имеется в /etc/newsyslog.conf:
shield@/var/log> ll /etc/newsyslog.conf -rw------- 1 root wheel 1,9K 3 ноя 2005 /etc/newsyslog.conf shield@/var/log> cat /etc/newsyslog.conf # comments by fr33man # 24.11.2006
# лог-файл -- абсолютный путь к файлу, с которым будем работать. # [владелец:группа] -- необязательный параметр, который указывает newsyslog'у # кто должен являться владельцом данного лог файла # права -- права, которые должны быть на файле # кол-во -- максимальное количество заархивированных лог файлов. # когда -- время, через которое архивировать лог-файл. # флаги -- некоторые параметры, для лог-файлов: # B - по умолчанию, newsyslog добавляет в новый лог-файл сообщение о том, что # лог-файл был ротирован, но если лог-файл бинарный, то это сообщение испортит лог, # с параметром B newsyslog не будет добавлятьт никаких сообщений в лог # C - если лог-файл не существует, то его необходимо создать. # G - если указан данный флаг, то в названии лог-файла можно # использовать стандартные шаблоны(например *) # J - сжимать лог-файл, используя bzip2 # N - Не предупреждать никакой процесс, о ротации лог-файла # W - если используете флаги Z или J, то newsyslog должен подождать, # пока заверщиться процесс архивации. # Z - сжимать лог, использую gzip.
# лог-файл [владелец:группа] права кол-во размер когда флаги [пид файл] [sig_num] /var/log/all.log 600 7 * @T00 J /var/log/amd.log 644 7 100 * J /var/log/auth.log 600 7 100 * JC /var/log/console.log 600 5 100 * J /var/log/cron 600 3 100 * JC /var/log/daily.log 640 7 * @T00 JN /var/log/debug.log 600 7 100 * JC /var/log/kerberos.log 600 7 100 * J /var/log/lpd-errs 644 7 100 * JC /var/log/maillog 640 7 * @T00 JC /var/log/messages 644 5 100 * JC /var/log/monthly.log 640 12 * $M1D0 JN /var/log/pflog 600 3 100 * JB /var/run/pflogd.pid /var/log/ppp.log root:network 640 3 100 * JC /var/log/security 600 10 100 * JC /var/log/sendmail.st 640 10 * 168 B /var/log/slip.log root:network 640 3 100 * JC /var/log/weekly.log 640 5 1 $W6D0 JN /var/log/wtmp 644 3 * @01T05 B /var/log/xferlog 600 7 100 * JC
| Файл, как я считаю, достаточно прокомментирован, поэтому давайте приступим к редактированию newsyslog.conf, а именно изменим
следующие строки:
# Меняем значение count, а то надоело видеть в /vat/log дофига старых логов. /var/log/maillog 640 1 * @T00 JC /var/log/messages 644 1 100 * JC /var/log/sendmail.st 640 1 * 168 B /var/log/wtmp 644 2 * @01T05 B # Теперь добавляем собственные файлы # Сначала идет rsyncd.log, его будем ротировать при достижении 500 kb, потом сжимать. /var/log/rsyncd.log 600 2 500 * ZC # Тоже самое для named-auth.log, заметьте, что владелец файла # не root, поэтому явно указываем владельца и группу. /var/log/named-auth.log bind:bind 600 2 500 * ZC
| Ну вот и все, теперь сами запустим newsyslog и проверим результат:
shield@/var/log> ll named-auth.log -rw------- 1 bind bind 29M 31 июл 22:51 named-auth.log shield@/var/log> ll rsyncd.log -rw-r--r-- 1 root wheel 9,6M 24 ноя 15:40 rsyncd.log shield@/var/log> newsyslog shield@/var/log> ll named-auth.log* -rw------- 1 bind bind 77B 24 ноя 19:56 named-auth.log -rw------- 1 bind bind 1,7M 24 ноя 19:56 named-auth.log.0.gz shield@/var/log> ll rsyncd.log* -rw------- 1 root wheel 77B 24 ноя 19:56 rsyncd.log -rw------- 1 root wheel 1,2M 24 ноя 19:56 rsyncd.log.0.gz shield@/var/log>
| Ну вот, все работает.
Если хотите подробнее узнать о newsyslog, то почитайте man newsyslog.conf, там все прекрасно расписано.
размещено: 2006-11-27,
последнее обновление: 2006-11-27,
автор: fr33man
|