Показать статистику
0 голосов
от (2.3тыс. баллов)
1.3тыс. просмотров 1 ответов

1 Ответ

0 голосов
от (26.4тыс. баллов)
редактировать от

Logrotate - это утилита, предназначенная для администраторов, которые управляют серверами, производящими большое количество файлов журналов, чтобы помочь им сэкономить некоторое дисковое пространство, а также избежать потенциального риска, который может привести к зависанию системы из-за недостатка дискового пространства. Обычно решение, позволяющее избежать подобных проблем, заключается в настройке отдельного раздела или логического тома для точки монтирования /var. Однако logrotate также может быть эффективным решением этой проблемы, особенно если уже слишком поздно перемещать все журналы в другой раздел. В этом руководстве Вы узнаете все об использовании и настройке logrotate на сервере RedHat / CentOS Linux.

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

# ls /etc/cron.daily/
cups  logrotate  makewhatis.cron  mlocate.cron  prelink  readahead.cron  rhsmd  tmpwatch

Настройка Logrotate

Конфигурация Logrotate выполняется путем редактирования двух отдельных файлов конфигурации:

/etc/logrotate.conf
специфичные для службы файлы конфигурации, хранящиеся в /etc/logrotate.d/.
Основной файл logrotate.conf содержит общую конфигурацию. Вот файл конфигурации logrotate по умолчанию, logrotate.conf:

     1  weekly
     2  rotate 4
     3  create
     4  dateext
     5  include /etc/logrotate.d
     6  /var/log/wtmp {
     7  monthly
     8  create 0664 root utmp
     9  minsize 1M
    10 rotate 1
    11  }

Строка 1 - опция еженедельной конфигурации обеспечивает еженедельную ротацию всех файлов журнала, определенных в основном файле конфигурации и в каталоге /etc/logrotate.d/.
Строка 2 -  rotate 4 гарантирует, что logrotate хранит резервную копию всех файлов журнала в течение 4 недель.
Строка 3 - опция создания указывает logrotate создавать новые пустые файлы журнала после каждого обращения
Строка 4 - dateext добавляет расширение ко всем ротируемым файлам журнала в форме даты, когда каждый конкретный файл журнала обрабатывался logrotate
Строка 5 - включает все остальные настройки из каталога /etc/logrotate.d
Строка 6 - 11 содержит конфигурацию чередования конкретного журнала обслуживания

В отличие от logrotate.conf каталог /etc/logrotate.d/ содержит определенные файлы конфигурации службы, используемые logrotate. В следующем разделе мы создадим образец конфигурации logrotate скелета.

Включая новые сервисные журналы для логирования

В этом разделе мы добавим новый файл журнала в конфигурацию logrotate. Допустим, у нас есть файл журнала с именем:

/var/log/Ваше_Название.log

находящийся в нашем каталоге /var/log, который нужно ежедневно менять. Сначала нам нужно создать новый файл конфигурации logrotate для размещения нашего нового файла журнала:

$ vi /etc/logrotate.d/Ваше_Название

Вставьте следующий текст в /etc/logrotate.d/Ваше_Название:

/var/log/Ваше_Название.log {
    missingok
    notifempty
    compress
    size 20k
    daily
    create 0600 root root
}

Вот построчное объяснение вышеупомянутого файла конфигурации logrotate:

 Если вы хотите включить несколько файлов журнала в один файл конфигурации, используйте подстановочный знак. Например, /var/log/mylogs/*.log будет указывать logrotate сжимать все файлы журнала, расположенные в / var / log / mylogs / с расширением .log.

  • missingok - не выводить ошибку, если отсутствует файл журнала
  • notifempty - не сдвигать файл журнала, если он пуст
  • compress - Старые версии файлов журналов по умолчанию сжимаются с помощью gzip (1)
  • размер - файл журнала сжимается, только если он становится больше, чем 20 КБ
  • ежедневно - обеспечивает ежедневную ротацию файлов журнала
  • создать - создает новый лог-файл с разрешениями 600, где владелец и группа - пользователь root

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

$ man logrotate
  • copy - сделать копию файла журнала, но не изменять оригинал вообще.
  • mail <email @ address> - в конце цикла rotate журнал отправляется по почте на адрес.
  • olddir <каталог> - журналы перемещаются в <каталог> для ротации.
  • postrotate / endcript - строки между postrotate и endcript выполняются после ротации журнала.

Тестирование новой конфигурации Logrotate

После того, как вы создали новый файл конфигурации logrotate в /etc/logrotate.d:

# cat /etc/logrotate.d/Ваше_Название
/var/log/Ваше_Название.log {
    missingok
    notifempty
    compress
    size 20k
    daily
    create 0600 root root

создайте некоторый пример файла журнала (если не существует!):

# echo "rotate my log file" > /var/log/Ваше_Название.log

Как только ваш файл журнала будет на месте, заставьте logrotate вращать все журналы с опцией -f.

# logrotate -f /etc/logrotate.conf

 Приведенная выше команда будет чередовать все ваши журналы, определенные в каталоге /etc/logrotate.d.

Теперь снова зайдите в каталог /var/log/ и убедитесь, что ваш файл журнала был ротирован и создан новый файл журнала:

# cat /var/log/Ваше_Название.log
rotate my log file
# logrotate -f /etc/Ваше_Название.conf 
# cat /var/log/Ваше_Название.log
file /var/log/Ваше_Название.log-20130409.gz 
/var/log/Ваше_Название.log-20130409.gz: gzip compressed data, from Unix, last modified: Mar Fri 9 11:35:28 2019
# zcat /var/log/Ваше_Название.log-20130409.gz 
rotate my log file

Как вы можете видеть, новый пустой файл журнала Ваше_Название.log был создан, а старый файл Ваше_Название.log был сжат с помощью gzip и переименован с расширением даты.

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

Заключение
Как уже упоминалось ранее, лучший способ избежать засорения вашей системы файлами журналов - создать отдельный раздел / логический том для вашего каталога /var/ или даже лучше / var/log. Однако даже тогда logrotate может помочь вам сэкономить место на диске, сжимая файлы журналов. Logrotate также может помочь вам заархивировать ваши файлы журналов для использования в будущем, создав дополнительную копию или отправив вам по электронной почте все вновь обращенные файлы журналов. Для получения дополнительной информации см. Страницу руководства logrotate:

$ man logrotate
...