Подтвердить что ты не робот

Установка Centos/Linux логротата до максимального размера файла для всех журналов

мы используем logrotate, и он работает ежедневно... теперь у нас были ситуации, когда журналы значительно выросли (читай: gigbaytes) и убив наш сервер. Итак, теперь мы хотели бы установить максимальный размер файла для журналов....

Можно ли добавить это в файл logrotate.conf?

размер 50M

и применим ли он ко всем файлам журнала? Или мне нужно установить это на основе журнала?

Или любой другой совет?

(ps. Я понимаю, что если вы хотите, чтобы вас уведомляли, журнал растет, как описано, и то, что мы хотим сделать, не идеально - но это лучше, чем неспособность входа в систему больше, потому что свободного места нет)

спасибо, Шон

4b9b3361

Ответ 1

Он определяет размер файла журнала для запуска вращения. Например, size 50M приведет к вращению журнала, если размер файла равен 50 МБ. Вы можете использовать суффикс M для мегабайт, k для килобайт и G для гигабайт. Если суффикс не используется, это будет означать байты. Вы можете проверить этот пример в конце. Доступны три директивы size, maxsize и minsize. Согласно manpage:

minsize size
              Log  files  are  rotated when they grow bigger than size bytes,
              but not before the additionally specified time interval (daily,
              weekly,  monthly, or yearly).  The related size option is simi-
              lar except that it is mutually exclusive with the time interval
              options,  and  it causes log files to be rotated without regard
              for the last rotation time.  When minsize  is  used,  both  the
              size and timestamp of a log file are considered.

size size
              Log files are rotated only if they grow bigger then size bytes.
              If size is followed by k, the size is assumed to  be  in  kilo-
              bytes.  If the M is used, the size is in megabytes, and if G is
              used, the size is in gigabytes. So size 100,  size  100k,  size
              100M and size 100G are all valid.
maxsize size
              Log files are rotated when they grow bigger than size bytes even before
              the additionally specified time interval (daily, weekly, monthly, 
              or yearly).  The related size option is  similar  except  that  it 
              is mutually exclusive with the time interval options, and it causes
              log files to be rotated without regard for the last rotation time.  
              When maxsize is used, both the size and timestamp of a log file are                  
              considered.

Вот пример:

"/var/log/httpd/access.log" /var/log/httpd/error.log {
           rotate 5
           mail [email protected]
           size 100k
           sharedscripts
           postrotate
               /usr/bin/killall -HUP httpd
           endscript
       }

Вот объяснение для обоих файлов /var/log/httpd/access.log и /var/log/httpd/error.log. Они вращаются всякий раз, когда они растут более чем на 100 тыс., И старые файлы журналов отправляются (несжатые) по адресу [email protected] после прохождения 5 поворотов, а не удаляются. Совлокальные скрипты означают, что postrotate script будет запускаться только один раз (после того, как старые журналы были сжаты), а не один раз для каждого журнала, который вращается. Обратите внимание, что двойные кавычки вокруг первого имени файла в начале этого раздела позволяют logrotate вращать журналы с пробелами в имени. Действуют нормальные правила кавычек оболочки, поддерживаются символы , и \.

Ответ 2

Как уже упоминалось, мой Zeeshan, опции logrotate size, minsize, maxsize являются триггерами для вращения.

Чтобы лучше объяснить это. Вы можете запускать logrotate так часто, как вам нравится, но если не достигнуто пороговое значение, например достигнутый размер файла или соответствующее время, журналы не будут повернуты.

Параметры размера не гарантируют, что ваши повернутые журналы также имеют заданный размер. Чтобы заставить их быть близкими к указанному размеру, вам нужно часто вызывать программу логротата. Это важно.

Для файлов журнала, которые накапливаются очень быстро (например, в сотнях МБ в день), если вы не хотите, чтобы они были очень большими, вам нужно будет обеспечить, чтобы logrotate вызывается часто! это важно.

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

на Ubuntu, вы можете легко переключиться на часовое вращение, перемещая script/etc/cron.daily/logrotate в /etc/cron.hourly/logrotate

Или добавьте

*/5 * * * * /etc/cron.daily/logrotate 

В файл /etc/crontab. Чтобы запустить его каждые 5 минут.

Параметр size игнорирует ежедневные, еженедельные, месячные параметры времени. Но minsize и maxsize учитывают это.

Персональная страница немного запуталась. Вот мое объяснение.

minsize вращается только тогда, когда файл достиг нужного размера и установленный период времени прошел., например. minsize 50MB + ежедневно Если файл достигнет 50 МБ перед ежедневным временем, он будет расти до следующего дня.

maxsize будет вращаться, когда журнал достигнет установленного размера или соответствующее время прошло. например maxsize 50MB + ежедневно. Если файл равен 50 МБ, и мы еще не на следующий день, журнал будет повернут. Если файл находится всего 20 МБ, и мы переходим к следующему дню, тогда файл будет повернут.

size будет вращаться при размере журнала. Независимо от того, указан ли часовой/ежедневный/еженедельный/ежемесячный.. Если у вас размер 100M - это означает, что если ваш файл журналa > 100M, журнал будет повернут, если logrotate будет выполняться, когда это условие истинно. После его поворота основной журнал будет 0, и последующий прогон ничего не сделает.

Итак, в случае op. В частности, 50 Мбайт макс. Я бы использовал что-то вроде следующего:

/var/log/logpath/*.log {
    maxsize 50M
    hourly
    missingok
    rotate 8
    compress
    notifempty
    nocreate
}

Это означает, что он создаст 8 часов журнала max. И было бы 8 из них не более 50 МБ каждый. Так как он говорит, что каждый день получает несколько гигабайт, и, полагая, что они растут с довольно постоянной скоростью, а maxsize используется, он будет близок к максимальному, достигнутому для каждого файла. Таким образом, они, вероятно, будут близки к 50 МБ каждый. Учитывая объем, который они создают, ему нужно будет убедиться, что logrotate работает достаточно часто, чтобы соответствовать целевому размеру.

Поскольку я почаще нахожусь там, нам нужно, чтобы logrotate запускался как минимум каждый час. Но так как они наращивают до 2 гигабайт в день, и мы хотим 50 МБ... при условии постоянной скорости, что 83 МБ в час. Таким образом, вы можете себе представить, ежели мы запускаем logrotate каждый час, несмотря на то, что при установке maxsize до 50 мы получим 83MB-журнал в этом случае. Таким образом, в этом случае необходимо, чтобы работа выполнялась каждые 30 минут или меньше.

Убедитесь, что logrotate запускается каждые 30 минут.

*/30 * * * * /etc/cron.daily/logrotate 

Ответ 3

Я никогда не использовал это как глобальный вариант, но один из способов проверить его - использовать флаг -d. Это не будет обрабатывать какие-либо вращения, но он скажет вам, что сделает logrotate.

Итак, я тестировал это только с флагом -d. Мой опыт, похоже, противоречит странице руководства. Если бы я установил "размер 10", который бы вращался, если файл журнала был больше, чем 10 байт, но также установите поворот в неделю, он не будет вращать файл, даже если он больше 10 байтов. Если я прокомментирую параметр "еженедельный", то logrotate указывает, что он будет вращать файл. Кажется, это противоречит тому, что я ожидал от страницы руководства.