본문 바로가기

아키텍처

[조대협 대용량 아키텍처]OAM Layer의 로그 관리

로그란 시스템에서 발생하는 모든 행위에 대한 기록이다.

최근 빅데이터와 연관되면서 새로운 자산으로 인식되고 있는 만큼 로그에 대한 중요성이 높아지고 있다.

 

로그 관리
  • 어떤 수준의 로그를 수집할것인가에 대한 로그 분리 관점

  • 로그를 어떻게 모을 것인가의 수집 관점

  • 모인 로그를 어떻게 분석하고 사용할 것인가에 대한 분석 관점

  • 분석된 결과를 어떻게 볼 것인가에 대한 활용 관점

 

로그 분리 관점
  • 시스템 로그 : OS에서부터 RDBMS 등과 같은 미들웨어에서 올라오는 로그, 시스템의 문제가 발생 했을 때 장애의 원인 파악을 위해서 필요 

  • 애플리케이션 로그 : 개발자가 작성한 애플리케이션 로그, 애플리케이션의 장애 원인 파악이나 디버깅을 위해서 생성되는 로그

  • 비즈니스 로그 : 사용자의 서비스 사용 형태, 거래 기록을 이용한 감사 등을 이용해서 애플리케이션에서 인위적으로 찍어내고 수집하는 로그

 

수집 관점
  • 파일을 주기적으로 FTP로 끌어 오기

  • Log4J와 같은 Log Appender를 이용해서 직접 수집

  • 시스템에 연결하거나 DBMS 등에 쓴 로그를 주기적으로 긁어 오는 방법

  • 로그를 수집하기 위해서 여러가지 프레임워크가 제공되는 LogStash가 대표적

 

분석 관점
  • 저장된 로그를 ETL을 이용하여 OLAP에 넣고 분석 하는 방법

  • 하둡을 이용하여 데이터를 분석하는 배치 기반의 분석 방법

  • Storm/Spark 등을 이용하여 실시간으로 로그를 분석하는 방법

 

활용 관점
  •  분석된 로그를 OLAP DB에 넣고 Saiku나 BI 대시 보드 도구 등을 이용해서 시각화 가능

 

시스템 로그에 대한 래퍼런스 아키텍처
  • 비즈니스 로그는 통계 분석 용도로 사용된다.
  • 시스템 로그 및 애플리케이션 로그는 장애 해결을 위한 용도로 사용되기 때문에 접근 방식에 다소 차이가 있다.
  • 애플리케이션 로그의 경우에는 경고(Warning)에러 로그가 난것을 인지하고 그것을 감지해서 확인하고 해결해야 하는 형태의 로그
  • 같은 형태의 로그인 경우에는 중복 발생한 횟수를 분석해서 발생 비율 등을 판단할 필요
  • 오픈소스 중에 sentry가 사용
Sentry

시스템 별로 로그를 나누고 에러나 경고 메세지를 분류한 다음 동일한 에러나 경고는 묶어서 대시 보드에 나타내준다.

개발자가 시스템에서 어떤 종류의 에러가 발생하는지 쉽게 볼 수 있고 마치 각각이 하나의 이슈인것처럼 해결 할 수 있다.또한 Log4J 등과 연계하여 쉽게 구축할 수 있어서 중앙 집중화된 애플리케이션 로그 시스템을 구축할때 고려사항이다

 

시스템로그는 모아서 저장하고 나중에 검색하거나 전체 로그(사용자 유입량, CPU 사용량 등)의 추이를 모니터링 할 필요가 있다. 이러한 요구 사항을 잘 해결해주는 로그 시스템으로 Log Stash + Kibana + Elastic Search(ELK) 조합이다.

Elastic Search : DB , Log Stash : ETL , Kibana :view 라고 생각하면 될거 같다.

 

Configuration 관리

개발된 애플리케이션을 서버에 배포하는 모듈이다. 

자주 애플리케이션을 업그레이드해야 할 일이 생기고 더불어 클라우드 환경이 되면서 Auto Scale out을 지원하면서 Scale out된 새로운 인스턴스에 애플리케이션을 배포해야 하기 떄문에 배포에 대한 요구 사항이 높아졌다.

 

배포 뿐만 아니라 이를 지원할 하드웨어 인프라나 미들웨어까지 자동으로 배포하는 시나리오가 근래에 들어서 많이 사용된다. 이런 배포와 설정까지 자동화 해주는 자동화 도구(Automation Tool)라는 영역이 있고 대표적인 도구로는 Puppet,Chef 등이 있다.

Pupet, Chef는 AWS opswork와 같이 이용 할 수 있다.

 

이전 글 

OAM Latyer

 

OAM Latyer

OAM(Operation Administraion & Monitor) 또는 OSS(Operation Support System)라고 불린다. OAM 시스템은 서비스할 때 시스템의 운영자 입장에서 필요한 관리 및 모니터링 기능을 제공한다. 설정 관리를 위한 Conf..

alsyean.tistory.com

 

 


더보기

이 글은 조대협의 서버사이드 대용량 아키텍처와 성능 튜닝 책을 참고하여 작성되었습니다.

이 글은 코드 프레소 DevOps Roasting 코스를 수강하면서 작성한 글입니다.