Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Linux-Betrieb und -Wartung logrotate Protokollrotation – Nginx-Protokolle drehen

Linux-Betrieb und -Wartung logrotate Protokollrotation – Nginx-Protokolle drehen

齐天大圣
齐天大圣Original
2020-11-12 17:11:452383Durchsuche

Es gibt einen sehr nützlichen Rotationsdienst auf dem Linux-System – logrotate. Über diesen Dienst können Protokolldateien im Rotationsverfahren verwaltet werden. Wenn die Protokolldatei zu groß ist, kann sie in mehrere kleine Protokolldateien geschnitten und komprimiert werden. Die Standardprotokolldateien access.log und error.log von nginx rotieren nicht von selbst. Daher wird Logrotate häufig zum Drehen von Nginx-Protokollen verwendet.

logrotate

Die Ausführung des Logrotate-Programms wird täglich in den geplanten Aufgaben des Systems ausgeführt.

# cat /etc/cron.daily/logrotate 
#!/bin/sh

/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status
……

Als nächstes werfen wir einen Blick auf die Konfigurationsdatei von logrotate /etc/logrotate.conf.

# 通过man logrotate查看更多信息

# 下面是默认配置
weekly <=== 默认一周进行一次轮替操作
rotate 4 <=== 默认保存4份日志文件
create <==== 当轮替完成后,创建一个新的日志文件
dateext <=== 轮替的文件名前加上日期以便管理
#compress  <=== 默认对轮替的文件不进行压缩,如果想压缩,就把#去掉

#将/etc/logrotate.d目录下的文件加载进来
include /etc/logrotate.d


# 下面是两个日志文件轮替的规则
/var/log/wtmp {  <=== 指定文件名
    monthly <=== 一个月进行一次轮替
    create 0664 root utmp <=== 新的日志文件权限及所有人,所属组设置
 minsize 1M <=== 日志文件至少有1M时候才进行轮替
    rotate 1  <=== 只保留一份日志文件
}

/var/log/btmp {
    missingok <=== 如果日志文件不存在,则不报错,直接忽略
    notifempty <=== 如果日文文件是空的则不进行轮替
    monthly
    create 0600 root utmp
    rotate 1
}

Nachdem wir die Konfigurationsdatei von logrotate verstanden haben, können wir selbst ein Protokoll für die Rotationspraxis erstellen. Zuerst bereiten wir eine Protokolldatei vor

# ll logrotate_learn.log 
-rwx------ 1 www www 223288003 Nov 12 09:05 logrotate_learn.log

Hier fügen wir der Protokolldatei besser das Attribut -a hinzu, damit wir ihr nur neue Inhalte hinzufügen können.

# chattr +a logrotate_learn.log

Als nächstes müssen wir über die Rotationsregeln der Protokolldatei nachdenken. Hier planen wir, die rotierten Dateien einmal pro Woche zu rotieren und zu komprimieren und nur dann zu rotieren, wenn die Dateigröße 10 MB überschreitet. Darüber hinaus werden wir 7 Protokolldateien aufbewahren. Hier gibt es noch etwas zu beachten. Da die Datei über das Attribut a verfügt, muss das Attribut a vor der Drehung gelöscht und nach Abschluss der Drehung hinzugefügt werden. Jetzt müssen wir also die Konfigurationsregeln schreiben

vim /etc/logrotate.d/logrotate_learn

# 轮替练习
/root/logrotate_learn.log
{
    missingok
    notifempty
    weekly
    rotate 7
    size=10M
    create 0700 www www
    compress 
    sharedscripts
    prerotate
       /usr/bin/chattr -a /root/logrotate_learn.log
    endscript
    sharedscripts
    postrotate
        /usr/bin/chattr +a /root/logrotate_learn.log
    endscript
}

Jetzt machen wir die Rotation.

# logrotate [-vf] logfile 
选项与参数:
-v :启动显示模式,会显示logrotate 运作的过程喔!
-f :不论是否符合,强制每个日志文件都进行rotate 的动作!

# logrotate -v /etc/logrotate.d/logrotate_learn 
reading config file /etc/logrotate.d/logrotate_learn
Allocating hash table for state file, size 15360 B
……

# ll logrotate_learn.log*
-rwx------ 1 www www        0 Nov 12 10:15 logrotate_learn.log
-rwx------ 1 www www 20974585 Nov 12 10:15 logrotate_learn.log.1.gz


Rotationsverwaltung von Nginx-Protokolldateien durchführen

Nachdem wir gelernt haben, ob Sie eine Rotationsverwaltung von Protokolldateien durchführen, werden wir nun mit der eigentlichen Praxis beginnen.

# ll /www/wwwlogs/
total 1852452
-rwx------ 1 www www    350288 Nov 12 02:50 access.log
-rwx------ 1 www www  14016937 Nov 11 22:44 isunshinenet.com.error.log
-rwx------ 1 www www 300416647 Nov 11 22:44 isunshinenet.com.log
-rwx------ 1 www www         0 Sep 30 09:57 nginx_error.log

Wir müssen diese vier Protokolldateien abwechselnd verwalten. Erstellen Sie zunächst die Konfigurationsdatei.

# 对nginx日志文件进行呢轮替
/www/wwwlogs/access.log
/www/wwwlogs/nginx_error.log
/www/wwwlogs/isunshinenet.com.error.log
/www/wwwlogs/isunshinenet.com.log
{
    missingok
    notifempty
    daily
    rotate 7
    size=1M
    create 0700 www www
    sharedscripts
    postrotate
 if [ -f /www/server/nginx/logs/nginx.pid ];then
    /www/server/nginx/sbin/nginx -s reload  
 fi
    endscript
}

Zu diesem Zeitpunkt haben wir die Rotationsverwaltung von Nginx-Protokollen abgeschlossen. Das System erkennt es selbst. Wenn eine Rotation erforderlich ist, wird die Rotationsverwaltung durchgeführt.

Das obige ist der detaillierte Inhalt vonLinux-Betrieb und -Wartung logrotate Protokollrotation – Nginx-Protokolle drehen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn