Заранее спасибо. У меня есть сервер, действующий как сервер syslog-ng и получающий журналы от нескольких сетевых устройств. Эти файлы быстро увеличиваются в размере, поэтому я создал файл logrotate с конфигурациями ниже.
/syslog-ng/logs/devices/*.log
{
maxsize 10M
notifempty # Do not rotate the log if it is empty
compress # Old versions of log files are compressed with gzip
hourly # Interval
dateext # Archive old versions of log files adding a daily extension
missingok # If the log file is missing, go on to the next one without issuing an error message
rotate 5
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2>/dev/null` 2 >/dev/null || true endscript
endscript
}
Я хотел, чтобы он менялся, если пройдет час или если размер любого из этих файлов журнала достигнет 10 МБ.Однако этого не происходит. Я узнал, что logrotate должен запускаться заданием cron для того, чтобы он имел какой-либо эффект, поэтому я добавил следующую запись в
/etc/cron.d/
[root@proem cron.d]# cat syslog-logrotate-15mins
*/10 * * * * root /usr/sbin/logrotate /etc/logrotate.d/splunk-logrotate >/dev/null 2>&1
. Файлы по-прежнему достигают 200 и 300 Мбайт без вступления logrotate в силу, однако почасовой logrotate работает и max-size не действует.
Если вы посмотрите на файлы внутри каталога, который нужно повернуть
total 2441816
drwxr-x--- 2 bin bin 8192 May 28 11:50 .
drwxr-x--- 3 bin bin 21 May 7 11:31 ..
-rw------- 1 bin bin 288410030 May 28 12:00 ASA-10.40.36.19.log
-rw------- 1 bin bin 9160117 May 28 07:00 ASA-10.40.36.19.log-2019052807.gz
-rw------- 1 bin bin 10237580 May 28 08:00 ASA-10.40.36.19.log-2019052808.gz
-rw------- 1 bin bin 19497590 May 28 09:00 ASA-10.40.36.19.log-2019052809.gz
-rw------- 1 bin bin 25640952 May 28 10:00 ASA-10.40.36.19.log-2019052810.gz
-rw------- 1 bin bin 24734338 May 28 11:00 ASA-10.40.36.19.log-2019052811.gz
-rw------- 1 bin bin 292677 May 28 11:59 ASA-10.40.36.20.log
-rw------- 1 bin bin 4763 May 28 06:51 ASA-10.40.36.20.log-2019052807.gz
-rw------- 1 bin bin 627 May 28 07:55 ASA-10.40.36.20.log-2019052808.gz
-rw------- 1 bin bin 4842 May 28 08:59 ASA-10.40.36.20.log-2019052809.gz
-rw------- 1 bin bin 9432 May 28 09:59 ASA-10.40.36.20.log-2019052810.gz
-rw------- 1 bin bin 8106 May 28 10:59 ASA-10.40.36.20.log-2019052811.gz
-rw------- 1 bin bin 4085275 May 28 06:59 Bluecoat-proxy.log-2019052807.gz
-rw------- 1 bin bin 4695767 May 28 08:00 Bluecoat-proxy.log-2019052808.gz
-rw------- 1 bin bin 13686609 May 28 09:00 Bluecoat-proxy.log-2019052809.gz
-rw------- 1 bin bin 18211983 May 28 10:00 Bluecoat-proxy.log-2019052810.gz
-rw------- 1 bin bin 9524946 May 28 10:35 Bluecoat-proxy.log-2019052811.gz
-rw------- 1 bin bin 403974411 May 28 12:00 Firepower-10.40.82.15.log
-rw------- 1 bin bin 6592767 May 28 06:59 Firepower-10.40.82.15.log-2019052807.gz
-rw------- 1 bin bin 7364536 May 28 07:59 Firepower-10.40.82.15.log-2019052808.gz
-rw------- 1 bin bin 14523366 May 28 09:00 Firepower-10.40.82.15.log-2019052809.gz
-rw------- 1 bin bin 19629133 May 28 09:59 Firepower-10.40.82.15.log-2019052810.gz
-rw------- 1 bin bin 19185954 May 28 10:59 Firepower-10.40.82.15.log-2019052811.gz
-rw------- 1 bin bin 184590 May 28 11:59 Firepower-10.40.82.25.log
-rw------- 1 bin bin 6146 May 28 06:59 Firepower-10.40.82.25.log-2019052807.gz
-rw------- 1 bin bin 6319 May 28 07:59 Firepower-10.40.82.25.log-2019052808.gz
-rw------- 1 bin bin 5441 May 28 08:59 Firepower-10.40.82.25.log-2019052809.gz
-rw------- 1 bin bin 5220 May 28 09:59 Firepower-10.40.82.25.log-2019052810.gz
-rw------- 1 bin bin 5225 May 28 10:59 Firepower-10.40.82.25.log-2019052811.gz
-rw------- 1 bin bin 633384651 May 28 12:00 Paloalto-10.40.82.18.log
-rw------- 1 bin bin 5603673 May 28 07:00 Paloalto-10.40.82.18.log-2019052807.gz
-rw------- 1 bin bin 5722379 May 28 08:00 Paloalto-10.40.82.18.log-2019052808.gz
-rw------- 1 bin bin 6466792 May 28 09:00 Paloalto-10.40.82.18.log-2019052809.gz
-rw------- 1 bin bin 7398515 May 28 10:00 Paloalto-10.40.82.18.log-2019052810.gz
-rw------- 1 bin bin 39241773 May 28 11:00 Paloalto-10.40.82.18.log-2019052811.gz
Если вы заметили, что он вращается каждый час, а запись максимального размера не действует.
Я попытался выполнить logrotate -d только для того, чтобы увидеть и показать вам подробности.
[root@proem logrotate.d]# logrotate -d splunk-logrotate
reading config file splunk-logrotate
Allocating hash table for state file, size 15360 B
Handling 1 logs
rotating pattern: /syslog-ng/logs/devices/*.log
hourly (5 rotations)
empty log files are not rotated, log files >= 10485760 are rotated earlier, old logs are removed
considering log /syslog-ng/logs/devices/ASA-10.40.36.19.log
log needs rotating
considering log /syslog-ng/logs/devices/ASA-10.40.36.20.log
log does not need rotating (log has been already rotated)considering log /syslog-ng/logs/devices/Firepower-10.40.82.15.log
log needs rotating
considering log /syslog-ng/logs/devices/Firepower-10.40.82.25.log
log does not need rotating (log has been already rotated)considering log /syslog-ng/logs/devices/Paloalto-10.40.82.18.log
log needs rotating
rotating log /syslog-ng/logs/devices/ASA-10.40.36.19.log, log->rotateCount is 5
dateext suffix '-2019052811'
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
destination /syslog-ng/logs/devices/ASA-10.40.36.19.log-2019052811.gz already exists, skipping rotation
rotating log /syslog-ng/logs/devices/Firepower-10.40.82.15.log, log->rotateCount is 5
dateext suffix '-2019052811'
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
destination /syslog-ng/logs/devices/Firepower-10.40.82.15.log-2019052811.gz already exists, skipping rotation
rotating log /syslog-ng/logs/devices/Paloalto-10.40.82.18.log, log->rotateCount is 5
dateext suffix '-2019052811'
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
destination /syslog-ng/logs/devices/Paloalto-10.40.82.18.log-2019052811.gz already exists, skipping rotation
Работает только ежечасный logrotate. Я попробовал и "Размер", и "максимальный размер", чтобы добиться того же результата. Я также добавил сценарий logrotate в почасовые задания cron. Благодарю за вашу помощь.
Вполне возможно, что он пытается повернуть, когда файл превышает максимальный размер при запуске logrotate, однако, поскольку dateext
имеет только часовую часть, это приведет к предыдущий повернутый файл должен быть перезаписан.
Я предлагаю добавить строку конфигурации:
dateformat -%Y%m%d%H%M
, чтобы минуты также составляли часть повернутого имени файла.