로그 절단의 Logrotate

10085 단어

1. 로그 절단 정보


로그 파일은 시스템에서 발생하는 사건에 대한 유용한 정보를 포함하고 있으며, 장애물 제거 과정이나 시스템 성능 분석에 자주 사용된다.바쁜 서버에 대해 로그 파일의 크기가 매우 빠르게 증가하고 서버가 디스크 공간을 빨리 소모하는 것이 문제가 된다.그 외에 하나의 거대한 로그 파일을 처리하는 것도 종종 매우 까다로운 일이다.logrotate는 로그를 자동으로 차단하거나 압축하고 오래된 로그 파일을 삭제할 수 있는 매우 유용한 도구입니다.예를 들어logrotate를 설정하여/var/log/foo 로그 파일을 30일마다 순환시키고 6개월이 넘는 로그를 삭제할 수 있습니다.설정이 끝난 후,logrotate의 운영은 완전히 자동화되어 있으며, 어떠한 진일보한 인위적인 개입도 할 필요가 없다.

2. logrotate 설치


시스템 버전 설명
[root@clsn6 ~]# cat /etc/redhat-release 
CentOS release 6.9 (Final)
[root@clsn6 ~]# uname -r 
2.6.32-696.el6.x86_64

기본centos시스템은 자체logrotate를 설치하고 설치 방법은 다음과 같습니다.
yum -y install logrotate crontabs 

패키지 정보 설명
[root@clsn6 ~]# rpm -ql  logrotate
/etc/cron.daily/logrotate
/etc/logrotate.conf  #  
/etc/logrotate.d   #  

logrotate의 프로필은/etc/logrotate입니다.conf, 보통 수정할 필요가 없습니다.로그 파일의 순서는 독립된 프로필에 설정되어 있으며,/etc/logrotate에 놓여 있습니다.디렉터리 아래.

3. 실천 설정logrotate


3.1logrotate가 로그를 어떻게 관리하는지 테스트


여기에서 우리는 10MB의 로그 파일/var/log/log-file을 만들 것입니다.로그 파일을 관리하기 위해logrotate를 사용하는 방법을 보여 드리겠습니다.
로그 파일을 만드는 것부터 시작해서 10MB의 무작위 비트 흐름 데이터 파일을 입력하십시오.
[root@clsn6 ~]# touch /var/log/log-file
[root@clsn6 ~]# head -c 10M < /dev/urandom > /var/log/log-file 

현재 로그 파일이 준비되어 있기 때문에, 로그 파일을 순환하기 위해logrotate를 설정할 것입니다.이 파일을 위한 프로필을 만듭니다.
[root@clsn6 ~]# vim /etc/logrotate.d/log-file 
/var/log/log-file {
    monthly
    rotate 5
    compress
    delaycompress
    missingok
    notifempty
    create 644 root root
    postrotate
        /usr/bin/killall -HUP rsyslogd
    endscript
}

위의 템플릿은 통용되며, 설정 매개 변수는 당신의 요구에 따라 조정됩니다. 모든 매개 변수가 필요한 것은 아닙니다.man 매뉴얼의 예를 통해 설정할 수도 있습니다.

3.2 프로필 설명


매개변수 구성
설명
monthly
로그 파일은 월별로 정렬됩니다.다른 사용 가능한 값은'daily','weekly'또는'yearly'입니다.
rotate 5
한 번에 5개의 아카이브 로그가 저장됩니다.여섯 번째 아카이브의 경우 가장 오래된 아카이브가 삭제됩니다.
compress
순서대로 작업이 끝난 후, 이미 순서대로 압축된 압축 파일은 gzip로 압축됩니다.
delaycompress
항상compress 옵션과 함께 사용됩니다.delaycompress 옵션은logrotate가 최근의 압축 파일을 압축하지 않도록 지시합니다. 압축은 다음 주기에 진행될 것입니다.이것은 당신이나 어떤 소프트웨어가 최신 압축 파일을 읽어야 할 때 매우 유용하다.
missingok
로그가 순환하는 동안'파일을 찾을 수 없습니다'와 같은 오류는 무시됩니다.
notifempty
로그 파일이 비어 있으면 순서대로 진행되지 않습니다.
create 644 root root
지정한 권한으로 새로운 로그 파일을 만들고logrotate도 원본 로그 파일의 이름을 바꿉니다.
postrotate/endscript
모든 다른 명령이 완료되면postrotate와endscript에서 지정한 명령이 실행됩니다.이 경우rsyslogd 프로세스는 즉시 설정을 다시 읽고 계속 실행합니다.
위 정보 출처 "man logrotate"

3.3 logrotate 수동 실행


logrotate는 언제든지 명령줄에서 수동으로 호출할 수 있습니다./etc/lograte로 호출합니다.d/아래 설정된 모든 로그 호출logrotate:
[root@clsn6 ~]# logrotate /etc/logrotate.conf

특정한 설정을 위해logrotate를 호출하려면 절단 작업 테스트를 실행하십시오
[root@clsn6 ~]# ll /var/log/log-file 
-rw-r--r-- 1 root root 10485760 Feb  7 18:50 /var/log/log-file
[root@clsn6 ~]# logrotate -vf /etc/logrotate.d/log-file 
[root@clsn6 ~]# ll /var/log/log-file* 
-rw-r--r-- 1 root root        0 Feb  7 19:17 /var/log/log-file
-rw-r--r-- 1 root root 10485760 Feb  7 18:50 /var/log/log-file.1

순환 조건이 충족되지 않더라도, 우리는'-f'옵션을 사용하여logrotate 순환 로그 파일을 강제할 수 있으며,'-v'매개 변수는 상세한 출력을 제공합니다.

3.4Logrotate 레코드 로그


logrotate 자체의 로그는 보통/var/lib/logrotate/status 디렉터리에 저장됩니다.바리케이드 제거 목적에 있다면logrotate가 지정한 파일에 기록하기를 원합니다. 아래와 같이 명령줄에서 지정할 수 있습니다.
[root@clsn6 ~]# logrotate -vf -s /var/log/logrotate-status /etc/logrotate.d/log-file
reading config file /etc/logrotate.d/log-file
reading config info for /var/log/log-file 

Handling 1 logs

rotating pattern: /var/log/log-file  forced from command line (5 rotations)
empty log files are not rotated, old logs are removed
considering log /var/log/log-file
  log does not need rotating
not running postrotate script, since no logs were rotated

3.5 Logrotate 정시 작업


logrotate에 필요한cron 작업은 설치할 때 자동으로 만들어집니다. 참고할 수 있도록cron 파일의 내용을 붙입니다.
[root@clsn6 ~]# 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

4. logrotate 생산 응용


4.1nginx에 대한 로그 절단 설정


로그 파일 크기에 대한 액세스 방지
[root@clsn nginx]# cat /etc/logrotate.d/nginx 
/var/log/nginx/*.log {
    daily
    rotate 5
    missingok
    notifempty
    create 644 www www
    postrotate
      if [ -f /application/nginx/logs/nginx.pid ]; then
          kill -USR1 `cat /application/nginx/logs/nginx.pid`
      fi
endscript
}

logrotate 도구는 방대한 로그 파일로 인해 저장 공간이 소모되는 것을 방지하는 데 매우 유용하다.설정이 끝난 후, 프로세스는 자동으로 실행되며, 인위적인 개입 없이 장시간 실행될 수 있다.이 강좌는logrotate를 사용하는 몇 가지 기본 사례에 중점을 두고 있으며, 당신도 당신의 요구를 만족시키기 위해 그것을 맞춤형으로 만들 수 있습니다.
추가 서비스 로그 절단에 대한 추가 보충

5, 부록


5.1 USR1 신호 해석


발췌:http://www.xuebuyuan.com/323422.html
USR1은 일반적으로 응용 프로그램에 프로필을 다시 불러오는 것을 알리는 데 사용된다.예를 들어 Apache HTTP 서버에 USR1 신호를 보내면 다음 단계가 발생합니다. 새로운 연결을 받지 않고 현재 연결이 정지될 때까지 기다리고, 프로필을 다시 불러오고, 로그 파일을 다시 열고, 서버를 다시 시작하여 상대적으로 매끄러운 꺼지지 않는 변경을 실현합니다.내용 발췌:http://zh.wikipedia.org/wiki/SIGUSR1%E5%92%8CSIGUSR2  
USR1과 2는 사용자 정의가 가능하며 POSIX가 호환되는 플랫폼에서 SIGUSR1과 SIGUSR2는 하나의 프로세스에 보내는 신호로 사용자 정의 상황을 나타낸다.그것들의 기호 상량은 헤더 파일signal에 있다.h에서 정의합니다.서로 다른 플랫폼에서 신호의 번호가 바뀔 수 있기 때문에 기호 이름을 사용해야 한다.
kill -HUP pid   killall -HUP pName:

여기서 pid는 프로세스 ID이고 pName은 프로세스의 이름입니다.서비스를 중지하고 다시 시작할 필요 없이 구성을 변경하려면 위의 두 명령을 사용할 수 있습니다.구성 파일에 필요한 변경을 한 후 서비스 구성을 동적으로 업데이트하는 명령을 보냅니다.약속에 따라, 수신 중단 신호 (신호 1 또는 HUP) 를 보낼 때, 대부분의 서버 프로세스 (모든 자주 사용하는 프로세스) 는 리셋 작업을 하고 프로필을 다시 불러옵니다.

5.2 일반 구성 매개변수 소결


매개변수 구성
설명
compress                
gzip을 통해 저장된 로그 압축
nocompress              
압축하지 않음
copytruncate            
현재 로그를 백업하고 끊는 데 사용할 로그 파일 열기
nocopytruncate          
로그 파일을 백업하지만 끊지 않습니다.
create mode owner group 
파일 덤프, 지정한 파일 모드로 새 로그 파일 만들기
nocreate                
새 로그 파일을 만들지 않음
delaycompress           
compress와 함께 사용할 때, 저장된 로그 파일은 다음 저장할 때 압축됩니다
nodelaycompress         
delaycompress 옵션을 덮어쓰고 덤프와 압축을 동시에 합니다.
errors address          
지정된 이메일 주소로 전용 저장 오류 메시지 보내기
ifempty                 
빈 파일이라도 저장합니다. 이것은logrotate의 부족한 옵션입니다.
notifempty              
빈 파일이면 덤프하지 않음
mail address             
저장된 로그 파일을 지정한 E-mail 주소로 보내기
nomail                  
덤프할 때 로그 파일을 보내지 않음
olddir directory         
덤프된 로그 파일을 지정한 디렉터리에 넣으려면 현재 로그 파일과 같은 파일 시스템에 있어야 합니다
noolddir                
덤프된 로그 파일과 현재 로그 파일이 같은 디렉터리에 있습니다
prerotate/endscript     
덤프하기 전에 실행해야 할 명령은 이 쌍을 넣을 수 있습니다. 이 두 키워드는 단독으로 줄을 만들어야 합니다.
daily                   
매일 덤프 주기 지정
weekly                  
매주 덤프 주기 지정
monthly                 
매월 덤프 주기 지정
rotate count            
로그 파일이 삭제되기 전에 저장된 횟수를 지정합니다. 0은 백업이 없고, 5는 5개의 백업을 보존합니다.
tabooext [+] list
logrotate가 지정한 확장자를 저장하지 않도록 합니다. 기본 확장자는:.rpm-orig, .rpmsave, v, 및 ~
size size               
로그 파일이 지정한 크기에 도달했을 때,bytes(기본값) 및 KB(sizek) 또는 MB(sizem)
missingok
로그가 순환하는 동안'파일을 찾을 수 없습니다'와 같은 오류는 무시됩니다.

6. 참고 문헌


[1]https://linux.cn/article-4126-1.html[2]http://xmodulo.com/2014/09/logrotate-manage-log-files-linux.html[3]http://blog.csdn.net/fuming0210sc/article/details/50906372[4]http://blog.csdn.net/forthemyth/article/details/44062529

좋은 웹페이지 즐겨찾기