>  기사  >  운영 및 유지보수  >  Linux 운영 및 유지 관리 logrotate 로그 회전 - nginx 로그 회전

Linux 운영 및 유지 관리 logrotate 로그 회전 - nginx 로그 회전

齐天大圣
齐天大圣원래의
2020-11-12 17:11:452377검색

Linux 시스템에는 매우 유용한 회전 서비스인 logrotate가 있습니다. 이 서비스를 통해 로그 파일을 순환적으로 관리할 수 있습니다. 로그 파일이 너무 크면 여러 개의 작은 로그 파일로 잘라서 압축할 수 있습니다. nginx의 기본 로그 파일 access.log 및 error.log는 자체적으로 회전하지 않습니다. 따라서 logrotate는 nginx 로그를 회전하는 데 자주 사용됩니다.

logrotate

logrotate 프로그램 실행은 시스템의 예약된 작업에서 매일 실행됩니다.

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

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

다음으로 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
}

logrotate의 구성 파일을 이해한 후 회전 연습을 위한 로그를 직접 만들 수 있습니다. 먼저 로그 파일을 준비합니다

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

여기서는 로그 파일에 -a 속성을 추가해 새로운 내용만 추가할 수 있도록 하면 좋을 것 같습니다.

# chattr +a logrotate_learn.log

다음으로 로그 파일의 순환 규칙에 대해 생각해 봐야 합니다. 여기서는 일주일에 한 번씩 회전된 파일을 회전 및 압축할 예정이며, 파일 크기가 10M를 초과하는 경우에만 회전할 예정입니다. 또한 7개의 로그 파일을 보관할 예정입니다. 여기서 또 주목해야 할 점이 있습니다. 파일에는 a 속성이 있으므로 회전 전에 a 속성을 삭제하고 회전이 완료된 후 추가해야 합니다. 그럼 이제 구성 규칙을 작성해야 합니다

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
}

이제 회전을 해보겠습니다.

# 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


nginx 로그 파일 순환 관리 수행

학습을 마치고 로그 파일 순환 관리를 수행하면 이제 실제 실습에 들어갑니다.

# 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

이 4개의 로그 파일을 차례로 관리해야 합니다. 먼저 구성 파일을 만듭니다.

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

이제 nginx 로그의 회전 관리가 완료되었습니다. 시스템은 매일 회전이 필요할 때 자체적으로 이를 감지합니다.

위 내용은 Linux 운영 및 유지 관리 logrotate 로그 회전 - nginx 로그 회전의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.