강좌
클라우드/리눅스에 관한 강좌입니다.
자격증 분류

리눅스마스터1급 : 시스템 로그 분석 로그 서버

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

리눅스마스터1: 시스템 로그 분석 로그 서버

 

 




로그를 작성해서 일정한 서버에 자료를 보내면 이것을 지속적으로 백업해 둘 수 있을 것이다.

 

 

 

여러 대의 시스템을 관리하면서 로그를 백업해 두어야 할 때 보다 효율적인 관리 방안을 제시해 준다.

 

 

 

 

이것을 위해서는 로그를 작성하는 클라이언트 서버와 로그가 작성되어 클라이언트로부터 보내오는 로그 파일을 받아서 처리하는 syslog 데몬을 운영하는 서버에서 모두 설정이 필요하다.

 

 

 

 

 

로그를 작성하는 클라이언트 서버 설정

다음과 같이 /etc/syslog.conf 설정 파일에 보낼 파일과 호스트명을 적어서 설정하면 된다.

 

 

 

 

 

 

 

 

 

mail.info @logserver

 

 

 

 

 

이것은 mail.info 에 해당하는 로그를 logserver 이라는 호스트로 보내는 것으로 상황에 따라 다양한 설정을 할 수 있을 것이다.

 

 

 

*.*로 설정하면 로그 전체를 보낼 수 있다.

 

 

 

logserverDNS 뿐만 아니라 /etc/hosts에 등록해 두는 것이 안전하다.

 

 

 

 

로그를 처리하는 서버 설정

syslogd 데몬을 시작할 때 추가 옵션이 필요하다.

 

 

 

서버를 시작하는 스크립트 파일인 /etc/init.d/syslog에 데몬을 시작하는 옵션으로 다음과 같이 설정할 수 있다.

 

 

 

SULinux2023에는 “-m 0” 만 설정되어 있다.

 

 

 

 

 

 

 

 

 

daemon syslogd -m 0 -r -h

 

 

 

 

 

이것은 각각 다음과 같은 의미를 가진다.

 

 

 

 

 

-m 0 : 기본 설정되어 있는 것으로 변경하지 않아도 된다.

 

 

 

지정한 분 동안 MARK 라고 로그파일에 기록한다.

 

 

 

0 이면 기록을 하지 않는다.

 

 

 

-r : 인터넷 도메인 소켓을 이용해 네트워크에서 메시지를 받는 옵션이다.

 

 

 

-h : 기본적으로 syslogd는 원격 호스트에서 받은 메시지를 포워드(forward)하지 않는다.

 

 

 

이 옵션을 사용하여 원격 호스트에서 받은 로그파일을 포워드한다(포워드란 전송 받은 로그 메시지를 서버의 로그파일에 기록하는 것이라고 생각하면 된다).

 

 

 

 

 

 

 

 

시스템 로그 관리의 필요성

로그 파일들이 디스크 공간을 차지하는 비율도 높다고 할 수 있다.

 

 

 

직접 시스템을 운영한다면 어느 순간에는 파일 시스템 풀(file system full)”로 인해서 시스템이 다운된 경우를 경험할 수 있을 것이다.

 

 

 

파일 시스템 풀(File system full)란 할당된 디스크 공간(파티션)에 여유 공간이 모자란다는 의미로 대부분 로그 파일을 그냥 방치한 결과 이 로그 파일들의 원인인 경우가 거의 대부분이라고 할 수 있다.

 

 

 

이런 경우 로그 파일을 제대로 관리했다면 문제가 발생하지 않았을 것이다.

 

 

 

 

 

소규모로 서버를 운영하는 경우 로그 파일에 그다지 신경을 쓰는 일이 없다.

 

 

 

그렇지만 제공하는 서비스가 많아지고 규모가 커질 경우 예상치 못한 곳에서 문제가 생기는 일이 많다.

 

 

 

그 중 하나가 엄청나게 증가하는 로그 파일 문제이다.

 

 

 

예를 들어 하루에 10만 통의 전자 메일을 처리하는 경우를 생각해 보자. sendmail은 전자 메일을 전송하면서 그 결과에 대한 메시지는 syslogd를 이용하여 /var/log/maillog에 저장한다(이는 설정에 따라 다를 수 있다). 또한 여기에 pop3을 사용해 메일을 가져간 기록과 메일을 전송한 기록까지 저장되어야 한다.

 

 

 

정상적으로 전자 메일이 전송되는 경우 기록되는 메시지는 560Byte 정도이다.

 

 

 

그렇지만 전송시 에러가 나는 경우에는 그 에러 횟수에 따라 에러 메시지가 추가된다.

 

 

 

평균 하나의 전자 메일이 1KB 정도의 로그를 기록한다고 해 보자. 하루에 10만 개의 메일을 전송한다면 하루 동안 로그의 크기만 100M이고, 일주일이면 700MB이다.

 

 

 

여기에 메일 계정이 1,000명이고, 각 사용자가 5분마다 pop3으로 메일을 확인한다고 했을 경우를 추가해야 한다.

 

 

 

한 번에 약 0.2KB의 로그가 쌓이면 시간당 12(5분에 한 번씩 확인하는 경우), 하루 8시간 근무시 96번이고 96*0.2KB = 192kb이다.

 

 

 

1,000명이므로 192MB가 되고 일주일이면 일요일을 제외하더라도 1.15G 정도가 된다.

 

 

 

한 사람당 메일 용량을 10M씩 할당하면 전자 메일을 저장할 용량만으로 10G가 필요하고 로그를 위해 2G 이상이 필요하다.

 

 

 

여기서 그냥 2G로 끝나는 것이 아니라 rotate값이 4라면 8G가 된다.

 

 

 

이와 같은 상황이 되면 시스템에 굉장한 무리가 갈 수 있다.

 

 

 

여기서만 끝나는 것이 아니다.

 

 

 

syslogdmaillog를 열어놓고 계속 로그를 기록하는데 로그 파일이 1MB 이상 넘어가면 하나의 메시지를 처리하기 위해 시스템 자원을 10% 이상 사용한다고 하며, 10MB가 넘으면 40% 이상, 100MB가 넘으면 80% 이상의 시스템 자원을 사용한다고 한다(물론 이는 자신의 시스템 상황을 끊임없이 모니터링해서 자신에 맞추어야 할 것이다). 결국 서비스를 제공할 때 자원을 사용해야 하는 데 엄청나게 커진 로그 파일 때문에 시스템의 자원이 없어져서 나중에는 전자 메일 전송이 아니라 로그 기록에 모든 cpu 시간을 사용해야 한다.

 

 

 

하드 디스크를 빈번하게 사용하는 작업이 많으면 시스템의 성능은 급격하게 떨어진다.

 

 

 

 

 

이제 웹 서버 로그 기록을 살펴보자. 이용자가 접속할 때마다 기록되는 access_log는 한번 접속당 약 85Byte가 증가한다.

 

 

 

하루 10만 번 접속하면 8.5MB이다.

 

 

 

일주일이면 59.5MB이다.

 

 

 

한 달이면 255MB이다.

 

 

 

서비스하는 규모가 더 크다면 로그 파일을 액세스하고 갱신하는 데는 더 많은 시스템 자원을 사용할 것이다.

 

 

 

 

이런 경우에 로그 관리를 자동화하여 주는 것이 logrotate 이다.

 

 

 

 

 

 

 

 

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,043 명
  • 현재 강좌수 :  35,853 개
  • 현재 접속자 :  93 명