newsyslog를 이용한 로그순환

Posted at 2008/11/27 11:36// Posted in 도구

httpd로그로 인한 디스크 꽉참 문제를 해결하였지만, 그래도 로그를 순환시키는 게 바른 일이니만큼 인터넷을 뒤져서 newsyslog.conf를 설정하여 순환에 성공하였다.


#vi /etc/newsyslog.conf

사용자 설정 안하면 기본이 root, 권한은 644, 파일은 5개까지 남기고 용량 상관없이 매일 00시에 압축.
로그를 압축하고 httpd를 재시작 하기 위해 아래 두줄 추가.


/var/log/httpd-access.log               644  5     *    @T00  Z
/var/log/httpd-error.log                644  5     *    @T00  Z    /var/run/httpd.pid   1

/var/run/httpd.pid로 pid지정, 마지막에 시그널은 man signal로 확인 후 재시작을 위해 1을 줬다.
그리하여 아래와 같이 로그와 백업파일이 생성되었다.


/var/log#ls -rtlh httpd*
-rw-r--r--  1 root  wheel    89K Nov 27 00:00 httpd-error.log.0.gz
-rw-r--r--  1 root  wheel    15M Nov 27 00:00 httpd-access.log.0.gz
-rw-r--r--  1 root  wheel   177K Nov 27 09:13 httpd-error.log
-rw-r--r--  1 root  wheel    18M Nov 27 09:14 httpd-access.log
2008/11/27 11:36 2008/11/27 11:36
Tag

DB가 어쩌구 하면서 홈페이지에 접속이 되지 않는 일이 일어났었다. 원인을 찾다보니 DB가 /var에 있었는데 이게 100%가 나버린 것이다. 급하게 정리해서 70%대까지 떨어뜨렸는데 며칠 후에 다시보니 아래와 같이 /var의 공간이 가득차다시피했다.

#df -h /var
Filesystem     Size    Used   Avail Capacity  Mounted on
/dev/da0s1d    4.3G    3.7G    261M    94%    /var

하지만 막상 du로 확인해보면 아래와 같다.

#du -sh /var
364M    /var

실제로도 해당 디렉토리에 있는 파일은 360여 MB 밖에 되지 않았다. PHPSCHOOL에 질문글을 올려보니 파일을 삭제해도 프로세스가 해당공간을 점유하고 있을 수 있다고 한다. fstat으로 찾아본 결과 httpd가 수상쩍었다.

#fstat -f /var | grep httpd|more
www      httpd      64201    2 /var     117769 -rw-r--r--  81665514  w
www      httpd      64201    7 /var     117774 -rw-r--r--  3430783359  w
www      httpd      64201    8 /var     117769 -rw-r--r--  81665514  w

추정키로 아파치 액세스 로그를 로그로테이트로 끊지 않고 그냥 삭제해버렸는데, 그게 문제가 된 게 아닌가 싶었다. 그래서 아래와 같이 했더니 해결되었다.

#apachectl graceful
#df -h /var
Filesystem     Size    Used   Avail Capacity  Mounted on
/dev/da0s1d    4.3G    502M    3.5G    12%    /var

하지만 FreeBSD에서 logrotate를 어찌 돌리는지 몰라서 같은 문제를 반복하지 않기 위해 그냥 액세스 로그를 생성하지 않게 만들었다. 이제 난 모른다. 여차하면 배째야지ㅡㅡ;

그리고 추가로 발견한 문제가 있는데, 관리의 편의를 위해 설치한 phpsysinfo-2.5.4와 직접 서버에서 df로 확인한 것 사이에 오차가 있었다.

사용자 삽입 이미지

사소한 차이긴 하다.

2008/11/19 15:37 2008/11/19 15:37