NginX-Protokollrotation

9

Ich bediene ein paar verschiedene Domains über NginX auf demselben Server und sie protokollieren jeweils in ihrer eigenen Datei. Ich muss ein Skript zum Drehen einrichten, diese Dateien komprimieren und zu cron hinzufügen.

Ich weiß, dass ich etwas tun muss, damit NginX eine neue Protokolldatei öffnet, sobald ich die alte verschiebe. Kann mir jemand das Verfahren zum sicheren Drehen von Nginx-Protokolldateien geben? Ich vermute, ich muss logrotate verwenden. Wie konfiguriere ich es?

System:

  • Ubuntu 9.04 Server ed.
  • Nginx / 0,7,61
John F. Miller
quelle

Antworten:

18

Unter Unix-Dämonen ist es zu einer Art informellem Standard geworden, dass sie ihre Protokolldateien leeren und / oder drehen, wenn Sie ihnen ein Auflegesignal senden ( SIGHUP). Nginx folgt dieser Konvention nicht USR1genau, reagiert jedoch auf das Signal auf die gleiche Weise, wie auf der Nginx-Website unter dem Titel Log Rotation dokumentiert .

Sie könnten also so etwas versuchen

kill -s USR1 `pidof nginx`
Jörg W Mittag
quelle
1
ein anderer Weg, "pkill -USR1 -n -x nginx"
Palani
11

logrotierende Nginx-Protokolle:

# nginx SIGUSR1: Re-opens the log files.
/opt/nginx/logs/access.log {
  missingok
  notifempty
  delaycompress
  sharedscripts
  postrotate
    test ! -f /opt/nginx/logs/nginx.pid || kill -USR1 `cat /opt/nginx/logs/nginx.pid`
 endscript 
}

/opt/nginx/logs/error.log {
  missingok
  notifempty
  delaycompress
  sharedscripts
  postrotate  
    test ! -f /opt/nginx/logs/nginx.pid || kill -USR1 `cat /opt/nginx/logs/nginx.pid`
  endscript
}

Logrotationsschienen Produktionsprotokoll:

/home/app_user/apps/railsapp/log/production.log {
  missingok
  notifempty
  delaycompress
  sharedscripts
  postrotate
    test ! -f /opt/nginx/logs/nginx.pid || kill -USR1 `cat /opt/nginx/logs/nginx.pid`
  endscript
}

quelle
In welche Datei soll ich das legen?
Emil Stenström
Wenn Sie Ubuntu verwenden, sollten Sie diese Codezeilen in diese Datei einfügen : /etc/logrotate.d/nginx. und es wird wirksam.
Siwei Shen 申思维
3

Wenn Sie logrotate verwenden, fügen Sie Folgendes (mit der richtigen Position) in den Abschnitt von nginx in der logrotate.conf ein:

postrotate
  kill -s USR1 `cat /location/of/nginx.pid`
endscript

Laut Logrotate (8) Manpage

Lamnk
quelle