웹 로그 수집 방법

효과적인 추천 시스템 구축을 위해서 웹로그 분석은 매우 중요한 역할을 한다.

현재 진행 중인 추천 시스템 구축 프로젝트에서도 상용 웹로그 수집/분석 솔루션을 이용하여 로그를 수집하고, 고객을 이용 패턴을 분석하기 위해 웹로그를 사용한다.

기업에서 웹로그 수집 솔루션을 사용하고 있으면 해당 솔루션에서 발생하는 데이터를 전달 받아 사용하면 되지만 만약 그런 솔루션이 없다면 웹로그 수집이 선행되어야 한다.(물론 웹 로그가 없다고 추천 시스템을 구축하지 못하는 것은 아니다.)

그럼 웹로그가 추천시스템 개발 시 어떤 용도로 사용되는지와 웹로그를 수집할 수 있는 방법에 대해 간단하게 정리 해보려고 한다.

추천 시스템에서 웹 로그가 필요한 이유

웹로그가 필요한 이유는 다양하게 있겠지만 생각나는데로 적어본다.(온라인 쇼핑몰이라고 가정하겠다.)

  1. 고객의 방문 성향 분석
    고객이 얼마의 주기로 방문을 하는지, 얼마의 시간동안 쇼핑을 하는지, 주로 접속하는 시간이 언제인지, 주로 접속하는 요일이 언제인지 등을 알 수 있다.
  2. 고객의 관심 상품 분석
    고객이 접속해서 어떤 상품을 조회하는지 확인 할 수 있다. 고객이 상품의 특정 카테고리를 클릭하거나, 특정 상품의 상세 페이지를 클릭한다면, 해당 상품에 관심이 있다고 가정할 수 있다.
  3. 접속 세션별 관심 상품 분석
    동일한 고객이라도 세션별로는 다른 목적을 가지고 쇼핑몰에 접속했다고 볼 수 있다. 고객이 어제 접속 시에는 의류와 관련된 쇼핑을 주로 했지만, 오늘 접속시에는 모자를 주로 봤다면, 같은 고객이지만, 두 개의 세션은 다른 목적을 가지고 있다고 볼 수 있다. 이 경우 한 명의 고객이지만 두 명의 고객으로 분류하여 데이터를 학습한다면, 향후 다른 고객이 모자에 관심 있는 고객이 접속 시 모자에 관심있던 세션에 대한 학습 데이터 기반으로 추천 하는 것이 구매 확률을 높일 수 있다.
  4. A/B 테스트 결과 검증
    추천 시스템을 개발할 때는 한 개의 모델을 만드는 것이 아니다. 다양한 추천 모델을 만들어 검증을 하고, 해당 도메인의 전문가에게 추천 결과에 대한 피드백을 받고, 문제가 없다면 그 다음에 고객 대상으로 A/B 테스트를 한다. 이 때 A 모델과 B 모델을 고객에게 노출 시 어떤 추천 모델을 더 선호하는지 확인하기 위해서도 웹 로그가 필요하다.
  5. 추천 모델 적용 실적 분석
    최종적으로 선택된 모델을 적용 후 추천 결과에 대한 실적을 평가해야 한다. 이 때는 노출 대비 얼마나 클릭했는지, 화면의 어느 영역에 추천 상품을 노출시 효과가 있는지 분석하는데 활용된다.

다음 글에서는 웹 로그를 수집하는 방법에 대해서 정리해보고자 한다. 원래는 이 것을 적기 위해서 글을 시작했는데, 생각나는 내용들을 적다보니 다음으로 넘어가게 되었다.

다음 글에서는 웹로그를 수집하기 위한 상용 솔루션, 무료 솔루션, 오픈 소스들에 대해서 정리해 볼 것이다. 오픈 소스는 플럼(Flume), 스크라이브(Scribe), Fluentd, logstash에 대해서 이야기 해보려고 한다.

개요

모든 어플리케이션은 클라이언트로부터 로그를 남겨야 할 필요가 있을 것이다.(그러지 않은 경우는...?) 단순히 파일로 로그를 찍어서 남길 수 있겠지만, 서비스가 커질 수록 쉽지가 않다. 그래서 로그 관리를 위한 아키텍처를 조사해보았다.

로그 관리

  • 어떤 수준의 로그를 수집할것인가에 대한 로그 분리 관점
  • 로그를 어떻게 모을 것인가의 수집 관점
  • 모인 로그를 어떻게 분석하고 사용할 것인가에 대한 분석 관점
  • 분석된 결과를 어떻게 볼 것인가에 대한 활용 관점

로그 분리 관점

  • 시스템 로그 : OS에서부터 RDBMS 등과 같은 미들웨어에서 올라오는 로그 등, 시스템의 문제가 발생 했을 때 장애의 원인 파악을 위해서 필요
  • 애플리케이션 로그 : 개발자가 작성한 애플리케이션 로그, 애플리케이션의 장애 원인 파악이나 디버깅을 위해서 생성되는 로그
  • 비즈니스 로그 : 사용자의 서비스 사용 형태, 거래 기록을 이용한 감사 등을 이용해서 애플리케이션에서 인위적으로 찍어내고 수집하는 로그

수집 관점

  • 파일을 주기적으로 FTP로 끌어 오기
  • Log4J와 같은 Log Appender를 이용해서 직접 수집
  • 시스템에 연결하거나 DBMS 등에 쓴 로그를 주기적으로 긁어 오는 방법
  • 로그를 수집하기 위해서 여러가지 프레임워크가 제공되는 LogStash가 대표적

분석 관점

  • 저장된 로그를 ETL을 이용하여 OLAP에 넣고 분석 하는 방법
  • 하둡을 이용하여 데이터를 분석하는 배치 기반의 분석 방법
  • Storm/Spark 등을 이용하여 실시간으로 로그를 분석하는 방법

활용 관점

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

로그 시스템 종류

일반적인 구조

컴포넌트역할솔루션
API 서버 로그를 클라이언트로 부터 수집하고 데이터를 정제 웹 서버
Log Storage 로그 저장소 Elastic Search Hadoop, HBase (하둡) Drill, Druid (SQL 기반 빅데이터 플랫폼)
Message Consumer MQ 로 부터 로그를 Message Consumer 가 순차적으로 읽어서 Log Storage에 저장 Multi Thread(or Process) + Timer 를 조합하여 메시지를 폴링 방식으로 읽어오는 어플리케이션
Message Q 로그 저장소가 순간적으로 많은 트래픽을 감당할 수 없는 경우가 많기 때문에, 중간에 MQ 를 넣어서 들어오는 로그를 저장하며 완충 Kafka (대량 큐) AWS SQS or 구글Pub/Sub (클라우드 큐) Rabbit MQ (일반적인 큐)
Reporting 저장된 로그는 Reporting 툴을 이용하여 시각화 Kibana Zeppeline, Jupyter

😮 각 필요한 솔루션을 모두 배우고, 설치하고 운영하는데 많은 비용과 시간이 필요한 작업

Google Cloud Logging

스택드라이버와 빅쿼리를 이용한 로그 수집 시스템 구현

컴포넌트역할
API 서버 API 서버를 이용하여 클라이언트로 부터 로그 수집.
API 서버는 스택 드라이버 로깅 서비스로 로그 전송
Stack Driver Logging Export 기능을 이용하여 수집된 로그를 실시간으로 빅쿼리로 전송
GCS (Google Cloud Storage) 로 주기적으로 파일로 로그 데이터를 보내거나 Pub/Sub이나 BigQuery 로 실시간으로 데이터를 보낼 수 있음
Message Queue/Consumer 구현 불필요, 로그를 직접 빅쿼리에 저장
BigQuery 방대한 양의 데이터에서 거의 실시간으로 SQL 쿼리를 실행하는 데 사용할 수 있는 페타바이트 규모의 분석 데이터웨어하우스
Reporting 저장된 로그는 구글 데이타 스튜디오, 제플리, 주피터와 같은 리포팅 도구에 의하여 시각화

AWS

컴포넌트역할
Amazon ES (Elasticsearch Service) AWS 클라우드에서 Elasticsearch 클러스터의 배포, 운영 및 확장을 단순화하는 관리 서비스
Kibana AWS ES 와 통합 된 분석 및 시각화 플랫폼을 제공
AWS Lambda Amazon CloudWatch 에서 Amazon ES 도메인으로 로그 데이터를 로드하기 위해 사용
서버를 프로비저닝하거나 관리하지 않고도 코드 실행 및 소비한 계산 시간에 대해서만 비용 지불
Amazon CloudWatch 애플리케이션 및 시스템 전반의 성능 변화에 대응하고, 리소스 사용률을 최적화하고, 운영 상태에 대한 통일 된 시각을 얻을 수있는 데이터 및 실행 가능한 통찰력을 제공
Amazon Cognito Kibana 대쉬보드 사용자 인증 제공 웹과 모바일 앱에 빠르고 손쉽게 사용자 가입, 로그인 및 엑세스 제어 기능을 추가 할 수 있습니다.

ELK stack

컴포넌트역할
Elasticsearch 대규모의 데이터를 손쉽게 저장, 검색, 분석
Kibana 다양한 데이터 소스를 위해 미리 구성된 대시보드를 이용해 KPI를 강조 표시하는 라이브 프리젠테이션을 만들고 단일 UI에서 배포 관리
Logstash 확장형 플러그인 에코시스템으로 구성된 동적 데이터 수집 파이프라인
Filebeat 단말장치의 데이터를 전송하는 경량 데이터 수집기 플랫폼

출처 및 참고

  • 로그수집서버 아키텍처 알아보기
  • 한시간에 만드는 대용량 로그수집 분석 시스템
  • [조대협 대용량 아키텍처]OAM Layer의 로그 관리

Toplist

최신 우편물

태그