Linux 에서 Nginx 로그 파일 자동 분할 (3) --- Logrotate

5837 단어
logrotate 는 로그 파일 을 자동 으로 차단 하거나 압축 하거나 삭제 할 수 있 는 유용 한 도구 입 니 다.예 를 들 어 logrotate 를 설정 하여 / var / log / foo 로그 파일 을 30 일 마다 돌아 가면 서 6 개 월 이 넘 는 로 그 를 삭제 할 수 있 습 니 다.설정 이 완료 되면 logrotate 의 운영 이 완전히 자동화 되 어 더 이상 인위적인 간섭 을 할 필요 가 없 으 며, 일반적인 Liux 내부 에 자체 적 으로 가지 고 있 는 이 도 구 는 설치 할 필요 가 없습니다.
1. 설치 여 부 를 확인 합 니 다.
[root@localhost ~]#  rpm -qa |grep logrotate
logrotate-3.7.8-23.el6.x86_64
설치 되 어 있 지 않 으 면 yum 을 통 해 직접 설치 하면 됩 니 다.
[root@localhost ~]# yum install logrotate crontabs
둘째, logrotate: logrotate 를 설정 하 는 설정 파일 은 / etc / logrotate. conf 입 니 다. 수정 할 필요 가 없습니다.로그 파일 의 순환 은 독립 된 설정 파일 에 설정 되 어 있 습 니 다. / etc / logrotate. d / 디 렉 터 리 에 놓 여 있 습 니 다.
  설정 인 스 턴 스 1:
[root@localhost ~]# vim /etc/logrotate.d/cut-log-file
/usr/local/nginx/logs/nginx.access.log {
    monthly
    rotate 5
    compress
    delaycompress
    missingok
    notifempty
    create 644 root root
    postrotate
        /usr/bin/killall -HUP rsyslogd
    endscript
}
  • monthly: 로그 파일 은 매달 돌아 갑 니 다.다른 사용 가능 한 값 은 'daily', 'weekly' 또는 'yearly' 입 니 다.
  • rotate 5: 한 번 에 5 개의 압축 파일 로 그 를 저장 합 니 다.여섯 번 째 압축 파일 에 대해 서 는 가장 오래된 압축 파일 이 삭 제 됩 니 다.
  • copress: 순환 작업 이 완 료 된 후에 순환 되 어 있 는 압축 파일 은 gzip 로 압축 합 니 다.
  • delaycopress: 항상 copress 옵션 과 함께 사용 합 니 다. delaycopress 옵션 은 logrotate 에 게 최근 압축 파일 을 압축 하지 말 라 고 지시 합 니 다. 압축 은 다음 라운드 에서 주기 적 으로 진 행 됩 니 다.이것 은 당신 이나 어떤 소프트웨어 가 최신 압축 파일 을 읽 어야 할 때 유용 합 니 다.
  • missingok: 로그 가 돌아 가 는 동안 '파일 을 찾 을 수 없습니다' 와 같은 오 류 는 무 시 됩 니 다.
  • notifempty: 로그 파일 이 비어 있 으 면 순환 이 진행 되 지 않 습 니 다.
  • create 644 root: 지정 한 권한 으로 새로운 로그 파일 을 만 들 고 logrotate 도 원본 로그 파일 의 이름 을 바 꿉 니 다.
  • post rotate / endscript: 모든 다른 명령 이 완료 되면 post rotate 와 endscript 에서 지정 한 명령 이 실 행 됩 니 다.이 경우 rsyslogd 프로 세 스 는 즉시 설정 을 다시 읽 고 계속 실 행 됩 니 다.

  • 위의 템 플 릿 은 통용 되 고 설정 파 라미 터 는 당신 의 요구 에 따라 조정 되 며 모든 파라미터 가 필요 한 것 은 아 닙 니 다.
       설정 인 스 턴 스 2: 이 예 에서 로그 파일 을 따라 가 려 고 하지만 로그 파일 크기 는 50MB 로 늘 릴 수 있 습 니 다.
    [root@localhost ~]# vim /etc/logrotate.d/cut-log-file
    /usr/local/nginx/logs/nginx.access.log {
        size=50M             #        50M
        rotate 5             #    5       
        create 644 root root     
        postrotate
            /usr/bin/killall -HUP rsyslogd
        endscript
    }

      설정 인 스 턴 스 3: 오래된 로그 파일 을 만 든 날짜 로 이름 을 짓 고 싶 습 니 다. dateext 상 숙 을 추가 하여 구현 할 수 있 습 니 다.
    [root@localhost ~]# vim /etc/logrotate.d/cut-log-file
    /usr/local/nginx/logs/nginx.access.log {
        monthly
        rotate 5
        dateext           #            
        create 644 root root
        postrotate
            /usr/bin/killall -HUP rsyslogd
        endscript
    }

    3. 실행 절차:
    1, 수 동 실행 명령 형식: logrotate + 프로필 (/ etc / logrotate. d / cut - log - file)
    [root@localhost ~]# logrotate /etc/logrotate.d/cut-log-file 
    비고: logrotate / etc / logrotate. d / cut - log - file 은 하나의 분할 파일 만 실행 합 니 다. 많 으 면 logrotate / etc / logrotate. conf 만 실행 하면 모든 분할 파일 을 실행 할 수 있 습 니 다.
    2. 폴 링 을 실행 하지 않 고 아 날로 그 만 보고 출력 을 표시 하려 면 매개 변수 - d 를 추가 해 야 합 니 다.
    ~                                                                                            
    [root@localhost ~]# logrotate -d /etc/logrotate.d/cut-log-file 
    reading config file /etc/logrotate.d/cut-log-file
    reading config info for /usr/local/nginx/logs/nginx.access.log 
    Handling 1 logs
    rotating pattern: /usr/local/nginx/logs/nginx.access.log  monthly (5 rotations)
    empty log files are not rotated, old logs are removed
    considering log /usr/local/nginx/logs/nginx.access.log
      log does not need rotating
    not running postrotate script, since no logs were rotated
    [root@localhost ~]# 
    우리 가 위의 출력 결 과 를 통 해 알 수 있 듯 이 logrotate 는 이 순환 이 불필요 하 다 고 판단 합 니 다.만약 파일 의 시간 이 하루 보다 작다 면, 이것 은 발생 할 것 이다.
    3. 강제 폴 링: 순환 조건 이 만족 하지 않 더 라 도 '- f' 옵션 을 사용 하여 logrotate 순환 로그 파일 을 강제 할 수 있 습 니 다. '- v' 매개 변 수 는 상세 한 출력 을 제공 합 니 다.
    [root@localhost ~]# logrotate -vf /etc/logrotate.d/cut-log-file  
    reading config file /etc/logrotate.d/cut-log-file
    reading config info for /usr/local/nginx/logs/nginx.access.log 
    Handling 1 logs
    rotating pattern: /usr/local/nginx/logs/nginx.access.log  forced from command line (5 rotations)
    empty log files are not rotated, old logs are removed
    considering log /usr/local/nginx/logs/nginx.access.log
      log needs rotating
    rotating log /usr/local/nginx/logs/nginx.access.log, log->rotateCount is 5
    dateext suffix '-20151120'
    glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
    glob finding logs to compress failed
    glob finding old rotated logs failed
    fscreate context set to unconfined_u:object_r:usr_t:s0
    renaming /usr/local/nginx/logs/nginx.access.log to /usr/local/nginx/logs/nginx.access.log-20151120
    creating new /usr/local/nginx/logs/nginx.access.log mode = 0644 uid = 0 gid = 0
    running postrotate script
    set default create context
    4. logrotate 로그 기록 보기: logrotate 자체 로 그 는 보통 / var / lib / logrotate / status 디 렉 터 리 에 저 장 됩 니 다.만약 배 리 케 이 드 목적 에 있다 면, 우 리 는 logrotate 를 지정 한 파일 에 기록 하고 싶 습 니 다. 아래 와 같이 명령 행 에서 지정 할 수 있 습 니 다.
    5, Logrotate 정시 작업: logrotate 에 필요 한 cron 작업 은 설치 할 때 자동 으로 생 성 되 어야 합 니 다.
    [root@localhost ~]# cat /etc/cron.daily/logrotate 
    #!/bin/sh
    /usr/sbin/logrotate /etc/logrotate.conf
    EXITVALUE=$?
    if [ $EXITVALUE != 0 ]; then
        /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
    fi
    exit 0
    한 마디 로, logrotate 도 구 는 방대 한 로그 파일 로 인해 저장 공간 이 소모 되 는 것 을 방지 하 는 데 매우 유용 하 다.설정 이 완료 되면 프로 세 스 가 자동 으로 진행 되 며, 인위적인 관여 없 이 장시간 실 행 될 수 있 습 니 다.
    다음으로 전송:https://blog.51cto.com/liqingbiao/1714992

    좋은 웹페이지 즐겨찾기