Назад | Перейти на главную страницу

Лучшие практики архивирования журналов веб-сервера (Linux + Nginx)

Я хочу сохранить / заархивировать все журналы моего веб-сервера и не удалять ни один из них с помощью logrotate. Какой подход рекомендуется для этого? Это Linux, работающий под управлением Nginx. Заранее спасибо.

(Я бы предпочел использовать cronolog, но, похоже, он не подходит для Nginx из-за того, как Nginx обрабатывает ведение журнала.)

Сделайте это с помощью logrotate, просто скажите, что хотите ...

/var/log/nginx/*.log {
    daily
    dateext
    missingok
    rotate 7305 # 2 decades
    olddir /var/log/nginx/old
    compress
    delaycompress
    notifempty
    create 644 nginx root
    sharedscripts
    postrotate
      if [ -f /var/run/nginx.pid ]; then
        kill -USR1 `cat /var/run/nginx.pid`
      fi
    endscript
}

Я не использую nginx, поэтому я использовал пример, который я нашел для postrotate ... Если у вас уже есть сценарий logrotate, начните с его изменения.

Ключевые части:

  • «ежедневно» означает каждый день. Вы можете делать это еженедельно или по размеру, но это не так хорошо взаимодействует с dateext.
  • «dateext» означает, что ротационным файлам журнала будет присвоено имя на основе даты, а не простого числа; таким образом не нужно переименовывать каждый файл журнала каждый день и вы можете определить дату файла журнала по имени файла
  • «Поверните 7305» - это два десятилетия. Держите более или менее ... logrotate действительно предпочитает пенсию, но вы можете установить ее до смехотворно высокого уровня.
  • "olddir" должен находиться в той же файловой системе, но при этом журналы будут храниться в отдельном каталоге, чтобы вы могли понять, что происходит.
  • "delaycompress" и "create" помогают убедиться, что он работает с программным обеспечением, которое не хочет с ним работать.