Maison  >  Article  >  Opération et maintenance  >  Rotation des journaux d'exploitation et de maintenance Linux - rotation des journaux nginx

Rotation des journaux d'exploitation et de maintenance Linux - rotation des journaux nginx

齐天大圣
齐天大圣original
2020-11-12 17:11:452332parcourir

Il existe un service de rotation très utile sur le système Linux-logrotate. Grâce à ce service, les fichiers journaux peuvent être gérés en rotation. Lorsque le fichier journal est trop volumineux, il peut être découpé en plusieurs petits fichiers journaux et compressé. Les fichiers journaux par défaut access.log et error.log de nginx ne tourneront pas d'eux-mêmes. Par conséquent, logrotate est souvent utilisé pour faire pivoter les journaux nginx.

logrotate

L'exécution du programme logrotate est exécutée quotidiennement dans les tâches planifiées du système.

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

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

Ensuite, jetons un coup d'œil au fichier de configuration de 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
}

Après avoir compris le fichier de configuration de logrotate, nous pouvons créer nous-mêmes un journal pour la pratique de la rotation. Tout d'abord, nous préparons un fichier journal

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

Ici, nous ferions mieux d'ajouter l'attribut -a au fichier journal, afin de pouvoir uniquement y ajouter du nouveau contenu.

# chattr +a logrotate_learn.log

Ensuite, nous devons réfléchir aux règles de rotation du fichier journal. Ici, nous prévoyons de faire pivoter et de compresser les fichiers pivotés une fois par semaine, et de les faire pivoter uniquement lorsque la taille du fichier dépasse 10 Mo. De plus, nous conserverons 7 fichiers journaux. Ici, il y a autre chose à noter. Étant donné que le fichier possède l'attribut a, l'attribut a doit être supprimé avant la rotation, puis ajouté une fois la rotation terminée. Il nous faut donc maintenant écrire les règles de configuration

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
}

Ensuite, faisons la 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


Effectuer la gestion de la rotation des fichiers journaux nginx

Comment effectuer la gestion de la rotation des fichiers journaux après avoir appris Enfin, nous entrons maintenant dans l’exercice de combat proprement dit.

# 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

Nous devons gérer ces quatre fichiers journaux en rotation. Tout d'abord, créez le fichier de configuration.

# 对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
}

À ce stade, nous avons terminé la gestion de la rotation des journaux nginx. Le système le détectera automatiquement chaque jour. Lorsqu'une rotation est nécessaire, une gestion de la rotation sera effectuée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn