nginx 로그 관리의 logrotate

10574 단어 logrotatenginx 로그
사실은 이미 오랫동안 블 로 그 를 쓰 지 않 았 다. 이번 블 로 그 는 주로 두 가 지 를 강조 한다. 하 나 는 로그 가 운영 업무 에 대한 중요성 이다.
둘째, 서버 로 그 를 어떻게 잘 관리 하 는 지.블 로 그 는 주로 nginx 로그 에서 설명 을 한 다음, logrotate 도 구 를 통 해
로그 가 디스크 공간 을 너무 많이 차지 하지 않도록 로 그 를 관리 합 니 다.
첫 번 째 부분: Nginx 로그
    nginx 는 현재 인터넷 에서 매우 많은 웹 서 비 스 를 사용 하고 부하 균형, 역방향 대리, 캐 시 등 기능 을 실현 할 수 있 습 니 다.
그러나 내 가 이런 것 이 라면 이 편의 내용 이 아니 라 이 편 은 주로 nginx 의 일 지 를 소개 하 는 것 이다.
로그 형식:
문법: logformat name string....
예:
log_format  combined  '$remote_addr - $remote_user [$time_loca]'
		      ' "$request" $status $body_bytes_sent '
		      ' "$http_referer" "$http_user_agent" '
log_format  proxy     '$http_x_forwarded_for - $remote_user [$time_local]'
		      ' "$request" $status $body_bytes_sent '
		      ' "$http_referer" "$http_user_agent" '

관련 변수의 해석:
---------------------------------------------------------------------
$remote_addr,$http_x_forwarded_for: 클 라 이언 트 IP 주소 기록
---------------------------------------------------------------------
$remote_user: 클 라 이언 트 사용자 이름 기록
---------------------------------------------------------------------
$request: 요청 한 URL 과 HTTP 프로 토 콜 을 기록 합 니 다.
---------------------------------------------------------------------
$status: 요청 상태 기록
---------------------------------------------------------------------
$body_bytes_sent: 클 라 이언 트 에 보 내 는 바이트 수 는 응답 헤드 크기 를 포함 하지 않 습 니 다.
---------------------------------------------------------------------
$bytes_sent: 클 라 이언 트 에 보 내 는 총 바이트 수
---------------------------------------------------------------------
$connection: 연 결 된 시리 얼 번호
---------------------------------------------------------------------
$connection_requests: 현재 연결 을 통 해 얻 은 요청 수량
---------------------------------------------------------------------
$msec: 로그 기록 시간, 단위 s, 정밀도 ms
---------------------------------------------------------------------
$http_referer: 어느 페이지 링크 에서 방 문 했 는 지 기록 합 니 다.
---------------------------------------------------------------------
$http_user_에이전트: 클 라 이언 트 브 라 우 저 관련 정보 기록
---------------------------------------------------------------------
$request_length: 요청 한 길이 (요청 줄, 요청 헤더, 요청 본문 포함)
---------------------------------------------------------------------
$request_time: 처리 요청 시간
---------------------------------------------------------------------
$time_iso 8601: ISO 8601 표준 형식의 로 컬 시간
---------------------------------------------------------------------
$time_local: 로그 형식 으로 로 컬 시간
---------------------------------------------------------------------
만약 에 이때 한 사이트 가 www. test. com 이 라 고 가정 하면 이 사이트 에 방문 한 정 보 를 log 에 기록 해 야 합 니 다.
http {

log_format  combined  '$remote_addr - $remote_user [$time_loca]'
		      ' "$request" $status $body_bytes_sent '
		      ' "$http_referer" "$http_user_agent" '

server {
	listen	80;
	server_name	www.test.com;
	root	/data/web/htdocs;
	index  index.php index.html index.htm;
	
	access_log	/var/log/nginx/test.access.log  combined;
	error_log	/var/log/nginx/test.error.log   error;	

	location ~ \.php$ {
		root /data/web/htdocs;
		fastcgi_pass 127.0.0.1:9000;
		fastcgi_index index.php;
		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
		include fastcgi_params;
		}
	}
}

위 는 하나의 예 일 뿐 http 세그먼트 에는 방문 로 그 를 정의 하 는 부분 만 표시 되 어 있 고 다른 부분 은 쓰 여 있 지 않 습 니 다.
두 번 째 부분: logrotate 관리 로그
       logrotate 는 로그 파일 관리 도구 입 니 다.오래된 파일 을 순환, 압축, 삭제 하고 새로운 로그 파일 을 만 드 는 데 사용 합 니 다.
로그 파일 의 크기, 일수 등에 따라 저장 할 수 있 습 니 다. 로그 파일 관리 에 편리 합 니 다. 일반적으로 cron 계획 작업 을 통 해 이 루어 집 니 다.
logrotate 의 설정 파일 은 주로 logrotate. conf 와 logrotate. d 아래 의 모든 파일 로 구성 되 어 있 으 며, 사용 자 는 자신의 설정 수 요 를 설정 파일 에 기록 합 니 다.그리고 crontab 를 통 해 실행 되 며, 실행 주 기 는 daily, weekly 일 수 있 습 니 다./ etc / cron. daily 에서 볼 수 있 습 니 다.
[root@bbs01 cron.daily]# ls
logrotate  makewhatis.cron  mlocate.cron  prelink  readahead.cron  tmpwatch

cron. daily 디 렉 터 리 에 logrotate 가 있 는 것 을 볼 수 있 습 니 다. 주로 logrotate 서 비 스 를 실 행 했 습 니 다.
#!/bin/sh

/usr/sbin/logrotate /etc/logrotate.conf >/dev/null 2>&1
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
    /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0

crontab 가 언제 logrotate 임 무 를 수행 하 는 지, centos 시스템 에서 anacrontab 가 자동 으로 수행 하 는 지 어떻게 알 수 있 습 니까?설정 에 서 는 매일, 매주, 매달 작업 을 수행 하 는 시간 을 정의 합 니 다.
[root@bbs01 cron.daily]# vim /etc/anacrontab 
#period in days   delay in minutes   job-identifier   command
1       5       cron.daily              nice run-parts /etc/cron.daily
7       25      cron.weekly             nice run-parts /etc/cron.weekly
@monthly 45     cron.monthly            nice run-parts /etc/cron.monthly

이상 은 logrotate 의 전체 작업 과정 입 니 다. 그러면 우리 의 logrotate 를 어떻게 설정 합 니까?
먼저 제 온라인 설정 을 보 세 요. 주로 nginx 를 대상 으로 합 니 다.
# cat /etc/logrotate.d/nginx
/usr/local/nginx/logs/*.log {
    rotate 5
    daily
    dateext
    postrotate
        /bin/kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid)
    endscript
    missingok
    compress
}

형식 은 간단 합 니 다. 먼저 로그 가 있 는 위 치 를 지정 하고 일치 하 는 것 도 지원 할 수 있 습 니 다. 그 다음 에 특정한 매개 변수 가 있 습 니 다.
매개 변수의 설명 은 다음 과 같다.
---------------------------------------------------------------------
copress: gzip 압축 을 통 해 오래된 로 그 를 저장 합 니 다.
---------------------------------------------------------------------
nocopress: 압축 이 필요 없 을 때 이 인자 로
---------------------------------------------------------------------
copytruncate: 열 려 있 는 로그 파일 에 사용 합 니 다. 현재 로 그 를 백업 하고 차단 합 니 다.
---------------------------------------------------------------------
nocopytruncate: 로그 파일 을 백업 하지만 끊 지 않 습 니 다.
---------------------------------------------------------------------
create mode owner group: 지정 한 파일 모드 로 로그 파일 을 만 듭 니 다.
---------------------------------------------------------------------
nocreate: 새 로그 파일 을 만 들 지 않 습 니 다.
---------------------------------------------------------------------
delaycopress: copress 와 함께 사용 할 때 덤 프 된 로그 파일 은 다음 덤 프 때 압축 됩 니 다.
---------------------------------------------------------------------
dateext  전환 한 로그 파일 은 짧 은 가로줄 과 YYYYYMMDD 형식의 날 짜 를 추가 합 니 다. 이 설정 항목 이 없 으 면 소수점 에 숫자 번 호 를 추가 합 니 다.
---------------------------------------------------------------------
nodelaycopress: delaycopress 옵션 을 덮어 쓰 고 덤 프 와 동시에 압축 합 니 다.
---------------------------------------------------------------------
errors address: 지정 한 Email 주소 로 저 장 된 오류 메 시 지 를 보 냅 니 다.
---------------------------------------------------------------------
ifemty: 빈 파일 이라도 덤 프 합 니 다. 이것 은 logrotate 의 부족 한 옵션 입 니 다.
---------------------------------------------------------------------
notifempty: 빈 파일 이 라면 저장 하지 않 습 니 다.
---------------------------------------------------------------------
mail address: 저 장 된 로그 파일 을 지정 한 E - mail 주소 로 보 냅 니 다.
---------------------------------------------------------------------
missingok: 로그 파일 을 잃 어 버 리 면 다음 덤 프 를 계속 합 니 다. 오류 메 시 지 를 보 내지 않 습 니 다.
---------------------------------------------------------------------
nomail: 저장 할 때 로그 파일 을 보 내지 않 습 니 다.
---------------------------------------------------------------------
olddir directory: 저 장 된 로그 파일 을 지정 한 디 렉 터 리 에 넣 으 려 면 현재 로그 파일 과 같은 파일 시스템 에 있어 야 합 니 다.
---------------------------------------------------------------------
noolddir: 저 장 된 로그 파일 과 현재 로그 파일 을 같은 디 렉 터 리 에 두 었 습 니 다.
---------------------------------------------------------------------
prerotate / endscript: 저장 하기 전에 실행 해 야 할 명령 을 이 쌍 에 넣 을 수 있 습 니 다. 이 두 키 워드 는 따로 줄 을 지어 야 합 니 다.
---------------------------------------------------------------------
post rotate / endscript: 덤 프 후 실행 해 야 할 명령 을 이 쌍 에 넣 을 수 있 습 니 다. 이 두 키 워드 는 따로 줄 을 지어 야 합 니 다.
---------------------------------------------------------------------
shared script: 모든 로그 파일 이 돌아 가면 서 스 크 립 트 를 통일 적 으로 실행 합 니 다.
---------------------------------------------------------------------
daily: 저장 주 기 를 매일 로 지정 합 니 다.
---------------------------------------------------------------------
weekly: 지정 한 덤 프 주 기 는 매주 입 니 다.
---------------------------------------------------------------------
monthly: 지정 한 덤 프 주 기 는 매달 입 니 다.
---------------------------------------------------------------------
rotate count: 로그 파일 을 삭제 하기 전에 저장 할 횟수 를 지정 합 니 다. 0 은 백업 이 없 는 것 을 말 합 니 다. 5 는 5 개의 백업 을 유지 하 는 것 을 말 합 니 다.
---------------------------------------------------------------------
size size: 로그 파일 이 지정 한 크기 에 도 달 했 을 때 저장 합 니 다. Size 는 bytes (결 성) 와 KB (size k) 또는
---------------------------------------------------------------------
prerotate/endscript
    prerotate 와 endscript 사이 의 줄 (둘 이 각각 한 줄 을 차지 합 니 다) 은 로그 파일 이 돌아 가기 전에 돌아 가 야 할 때 실 행 됩 니 다.
    이 명령 은 log 파일 정의 에 만 사용 할 수 있 습 니 다.
---------------------------------------------------------------------
postrotate/endscript
    prerotate 와 endscript 사이 의 줄 은 로그 파일 이 돌아 간 후에 실 행 됩 니 다.
    이 명령 은 log 파일 정의 에 만 사용 할 수 있 습 니 다.
---------------------------------------------------------------------
firstaction/endscript
    firstaction 과 endscript 사이 의 줄 에서 마스크 와 일치 하 는 모든 로 그 를 돌아 가기 전에,
    prerotate 가 실행 되 기 전에 로그 가 돌아 가 야 할 때 만 실 행 됩 니 다.
    로그 파일 정의 에 만 사용 할 수 있 습 니 다. 스 크 립 트 가 잘못 종료 되면 더 이상 진행 하지 않 습 니 다.
---------------------------------------------------------------------
lastaction/endscript
    lastaction 과 endscript 사이 의 줄 에서 일치 하 는 로 그 를 모두 돌 린 후 post rotate 에서 실 행 된 후,
    그리고 최소한 로그 가 돌아 가 는 경우 가 있어 야 실행 할 수 있 습 니 다.
---------------------------------------------------------------------
우 리 는 logrotate 즉시 관리 로 그 를 수 동 으로 실행 할 수도 있 고, crontab 가 자동 으로 작업 계획 을 실행 할 때 까지 기다 릴 수도 있 습 니 다.
수 동 실행 과정 은 - f, - d 인 자 를 추가 할 수 있 고 - f 는 강제 실행 할 수 있 으 며 - d 는 debug 모드 입 니 다.
예 를 들 어 logrotate - f - d - d / etc / logrotate. d / nginx
logrotate 를 사용 하여 nginx 로 그 를 관리 합 니 다. 장점 은:
1. 로그 파일 이 디 렉 터 리 를 가득 채 울 까 봐 걱정 하지 않 아 도 됩 니 다. logrotate 는 특정한 수의 파일 을 유지 합 니 다.
2. 매일 로 그 를 한 파일 에 넣 고 계속 앞으로 넘 길 필요 가 없 으 며 쉽게 찾 아 볼 수 있 습 니 다.

좋은 웹페이지 즐겨찾기