티스토리 뷰

Server Side/Infra

웹서버 로그관리

DevES 2016. 10. 8. 00:49

로그는 집약과 수집을 구별해서 다룸

이렇게 구별하는 이유는 각각의 목적과 정밀도가 다르기 때문

  • 집약: 서버가 출력하는 로그를 항상 전송해서 한곳에 모으는

  • 수집: 서버상에 출력된 로그를 정기적으로 모아서 저장하는  


로그를 집약하는 목적: 순간순간의 상황을 파악하기 위함 (무슨 , 어디서 일어나고 있는지)


장애 발생시 어떤 머신에서 문제가 일어나고 있는지를 확인

사이트의 액세스 상황(순간 페이지뷰, 사용자 수등을 집계)

 

로그를 수집하는 목적: 집계, 분석, 그리고 보존을 위함

  • 서비스 운영시 웹서버나 AP서버의 로그 집계, 분석을 기본

  • 로그 분석에는 일별, 주별, 월별등 다양한 단위의 로그가 필요한데, 이를 위해 로그가 여러군데 분산되어 있으면 불편하다. 

로그 집약, 수집에는 다양한 방법이 있다. 파일이 아니라 DB 쓰는 것도 하나의 방법이다. DB 로그를 등록한다면 검색성은 높아지지만 그와 동시에 관리비용도 증가하기에, 보통 이렇게까지는 필요가 없는 경우가 많다.

 

로그 집약

syslog

syslog 사용하면 쉬움. syslog 역할은 유닉스 계열 OS에서의 로그 집약의 허브.

  • 아파치와 같은 웹서버의 로그를 syslog 이용해서 집약가능하다.

  • syslog 모인 로그는 Facility Priority 설정된다.

  • syslog 이를 통해 로그를 식별하며 필요한 로그를 파일에 쓰거나 다른 머신상의 syslog 전송할 있다.

  • syslog 가끔 로그를 누락하는 경우도 있고, 동일한 로그가 연속해서 출력되면 하나의 로그로 정리한다. 이때문에 집계같은 엄밀함이 요구되는 용도에는 적합하지 않지만, 대량의 로그가 출력되더라도 디스크 부하를 억제할 있다. syslog 집약한 로그는 어디까지나 문제가 발생 했을 어떤 머신에서 발생했는지에 대한 단서를 잡거나 혹은 현재 사이트의 트렌드를 관찰하기 위해 사용한다.

syslog-ng

로그를 전송할 때는 하나의 기능성과 우선순위를 사용하고, 로그를 사용하는 단계에서 서로 다른 정보를 사용해서 구별하고 ,사이트마다 다른 파일에 로그를 출력할 있다면 이상적이다.

 

이를 구현한 것이 syslog-ng


syslog-ng 기능

  1. 로그의 필터링

  2. 로그의 회전

  3. 로그를 출력할 디렉토리 생성

  4. etc. 

로그 수집

로그를 수집하는 목적은 로그의 보존과 분석을 위함

보통 로그분석은 하루에 한번 수행; 로그 수집도 하루에 한번, 서버 부하가 낮은 아침 시간대에 머신에 있는 전날의 로그를 수집한다.

또한, 수집과 동시에 머신상에 잇는 오래된 로그를 삭제.

또한, 로그서버상에 있는 오래된 로그를 압축하기도 (압축시간이 오래걸리더라도 가능한 크기가 작아지도록 압축. ex. bzip2)

(로그는 텍스트 데이터이고, 출력된 문자열의 패턴도 정해져 있어서 높은 압축률을 기대할 있음)

 

로그를 수집하기 위해서는 서버가 출력하는 로그가 일별로 나누어져 잇으면 편리하다. (Nginx 로그를 회전하는 기능이 있을까? 아파치는 없다고 한다)

 

로그 회전이 없는 아파치에서 로그를 일별로 회전하기위해 두가지 방법이있다.

  1. cron 통해 로그파일을 rename하고 아파치를 재시작하는방법

    1. 아파치는 동작하고 있는 동안에 로그파일을 열고 있기에도중에 로그파일을 rename하는 것만으로는 회전을   없다아파치를 재시작하면 로그파일을 일단 닫기에리네임  즉시 아파치를 재시작하면 로그를 회전 시킬  있다.

  2. 아파치에 부가적으로 포함되어있는 rotatelogs 프로그램을 사용

로그 서버

로그 서버의 역할은 로그의 집약, 수집, 그리고 수집한 로그의 보존이다. 그외에도 로그 집계나 분석을 위해 사용하기도 한다.

이런 로그 수집, 압축, 집계/분석은 중요한 처리이기에 서비스를 제공하는 서버가 동시에 로그 서버 역할을 담당하는 것은 적절치 않다. (로그 보존용도로 용량이 디스크도 필요함)

 

백업용 로그서버를 따로 준비할 없는 경우에는 로그파일만이라도 다른 머신에 전송해서 보존하도록 하는 편이 좋다.

 

 

로그에 대한 요구는 그때그때의 상황에 따라 내용이나 처리 방법이 크게 바뀔 있다.

 

 

'Server Side > Infra' 카테고리의 다른 글

Consistent Hashing  (0) 2016.10.03
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함