내 access.log는 10.5GB입니다. - 좋은 로그 관리 절차는 무엇입니까?

내 access.log는 10.5GB입니다. - 좋은 로그 관리 절차는 무엇입니까?

가끔씩 들어가서 지우는 것 외에는 어떤 로그 관리도 없습니다. 트래픽이 너무 많지 않은 서버가 있습니다(대부분의 로그는 라이브 채팅에서 나옵니다). 그런데 로그를 제대로 관리하려면 어떤 로그 관리 절차를 거쳐야 하는지 궁금해졌습니다. 특정 항목만 기록되도록 설정하고, 로그가 며칠 동안 삭제되도록 설정하셨나요? 접속 로그는 얼마나 오래 보관해야 하나요? 다른 로그는 얼마나 오래 보관해야 합니까?

답변1

그 때문에 내 로그 파일도 커집니다. 저는 거의 모든 Linux 배포판에서 사용할 수 있는 표준 logrotate를 사용합니다.

너무 커지는 항목은 매일, 다른 항목은 매주 로그 회전하도록 구성했습니다.

시도 해봐. xz로 압축하기 때문에 파일 크기가 상대적으로 작으며 어느 쪽에서든 대역폭을 크게 잃지 않고 조사를 위해 개인 상자에 다운로드할 수 있습니다.

자세한 내용은 man logrotate 및 man logrotate.conf를 참조하세요.

답변2

먼저 웹 서버가 access.log에 추가되므로 크기를 최소한으로 유지해야 한다는 점을 이해하십시오. 내 Apache 서버는 4GB가 넘는 로그 파일이 있는 경우 페이지를 더 느리게 로드하기 시작합니다(아마도 저만 눈치챌 수 있습니다).

awstats를 사용해 보세요. 이는 귀하의 트래픽에 대한 훌륭한 보기를 얻을 수 있는 HTML 기반 파일을 생성하고 귀하가 가지고 있는 거대한 access.log 파일도 지울 것입니다. 이 앱을 처음 실행하면 access.log가 너무 크기 때문에 시간이 정말 오래 걸릴 것입니다.

awstats나 logrotate가 효과가 없다면 언제든지 cron을 사용하여 하루에 한 번씩 access.log를 핵으로 만들 수 있습니다.

에코 "" > access.log

하지만 저는 개인적으로 매우 빠르게 잘라야 하는 거대한 로그 파일이 있는 경우에만 이것을 사용합니다. 이렇게 잘라내는 것은 정말 로그 낭비입니다.

답변3

사용크로놀로그시간별 로그 파일 또는 일일 로그 파일을 생성합니다. 사용 방법을 확인하세요.

TransferLog "|/usr/sbin/cronolog /web/logs/%Y/%m/%d/access.log"
ErrorLog    "|/usr/sbin/cronolog /web/logs/%Y/%m/%d/errors.log"

로그 위의 cronjob 압축을 사용하여 디스크가 가득 차는 것을 방지하고 며칠 동안(한 달이 될 수 있음) 데이터를 보관합니다.

또는 logrotate를 사용하여 로그를 회전합니다(위 답변에서 설명한 대로).

관련 정보