이번 포스트에는 log데이터에 대해 전반적으로 알아보고 어떻게 수집되고 활용되는지 기업의 사례를 들어가며 정리해보겠습니다.
1. 로그 데이터(log data)란?
- IT인프라에서 발생하는 모든 상황의 데이터(서비스나 시스템 가동 시 발생되는 이벤트의 기록)
- 소프트웨어 및 하드웨어,인프라의 상태를 파악하는 시각적 정보의 역할
- 최근 사용자의 사용성 및 행동 패턴을 확인하거나 유저 클러스터링, 모델링 등 다양한 목적으로 사용되는 행동 기반 데이터
- 사용자의 행동 패턴을 분석하는데 근간이 되는 데이터의 역할
- 대체로 시간(TimeStamp)와 함께 출력 되기 때문에 시계열 데이터 개념에 포함되는 개념
2. 로그의 형태
- 정해진 규칙에 의거하여 Key-Value, JSON 형태로 표현
- Key 순서에 맞게 Value 값으로 표현하는 것이 일반적
- 타임스탬프, 호스트 이름, 프로세스 타입, 애플리케이션, 실행 내용, 이벤트값, 파라미터 등의 정보를 저장
이런 패턴을 통해 분석과 모니터링 정보를 제공
용도별 로그
- 시스템 로그 : OS에서부터 RDBMS 등과 같은 미들웨어에서 올라오는 로그 등, 시스템의 문제가 발생 했을 때 장애의 원인 파악을 위해서 필요
- 애플리케이션 로그 : 개발자가 작성한 애플리케이션 로그, 애플리케이션의 장애 원인 파악이나 디버깅을 위해서 생성되는 로그
- 비즈니스 로그 : 사용자의 서비스 사용 형태, 거래 기록을 이용한 감사 등을 이용해서 애플리케이션에서 인위적으로 찍어내고 수집하는 로그 (사용자 행동 로그)
3. 로그 시스템
컴포넌트 | 역할 | 솔루션 |
API 서버 | 로그를 클라이언트로 부터 수집하고 데이터를 정제 | 웹 서버 |
Log Storage | 로그 저장소 | Elastic Search, Hadoop(HDFS), 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, Zeppelin, Jupyter |
4. 로그 관리
로그 관리는 아래와 같은 순서로 이뤄지게 됩니다.
1. 수집(Collect)
시스템의 로그 수집기(Collector)를 설치하여 HTTPS 등의 방식으로 로그 관리 시스템에 전달
2. 중앙 처리와 인덱싱(Centralize & Indexing)
로그를 중앙 집중화하여 저장 후 누락된 데이터가 없도록 일원화
로그 데이터에 필요한 인덱스 값을 추가하여 필요한 로그 정보를 빠르게 찾을 수 있도록 함
3. 검색과 분석(Search & Analyze)
인덱싱이 완료된 데이터에 대한 검색과 분석을 진행하며 데이터의 공통 패턴이 존재한다면 찾아냄
4. 모니터링과 경고(Monitor & Alert)
슬랙(slack)과 같은 협업 도구, Notification/Alert 시스템과 로그 관리 시스템을 연동하여 필요시 담당자에게 Alert 전달
5. 리포트와 대시보드(Report & Dashboard)
전반적인 시스템 상태의 인사이트 확보를 위해 비주얼 한 리포트와 대시보드를 생성하고 RBAC를 적용하여 권한을 가진 팀원들과 공유
5. 로그 데이터 수집
로그 데이터를 수집하는 방법에는 다양한 방법이 있습니다.
- 파일을 주기적으로 FTP로 끌어 오기
- Log4J와 같은 Log Appender를 이용해서 직접 수집
- 시스템에 연결하거나 DBMS 등에 쓴 로그를 주기적으로 긁어 오는 방법
- 로그를 수집하기 위해서 여러가지 프레임워크가 제공되는 LogStash가 대표적
Log4j vs logstash
log4j는 애플리케이션 로그를 캡처 및 저장하기 위해 사용되는 로깅 유틸리티
logstash는 중앙화된 로깅 및 분석을 위한 도구
많이 사용 되는 로그 수집 프레임 워크
1. ELK Stack(ElasticSearch, Logstash, Kibana)
Netflix, LinkedIn, Uber, Airbnb, Cisco, IBM에서 사용 중
https://www.elastic.co/guide/kr/logstash/current/introduction.html
Logstash는 실시간 파이프라인 기능을 가진 오픈소스 데이터 수집 엔진입니다. Logstash는 서로 다른 소스의 데이터를 탄력적으로 통합하고 사용자가 선택한 목적지로 데이터를 정규화할 수 있습니다. 다양한 고급 다운스트림 분석 및 시각화 활용 사례를 위해 모든 데이터를 정리하고 대중화(democratization)합니다.
Logstash는 근본적으로 로그 수집의 혁신을 주도해 왔으며 그 기능은 이러한 활용 사례 이외의 영역으로 확장되고 있습니다. 어떤 유형의 이벤트도 다양한 입력, 필터, 출력 플러그인을 통해 강화하고 전환할 수 있으며 기본 제공되는 여러 코덱으로 수집(ingestion) 프로세스를 한층 더 간소화할 수 있습니다. Logstash로 더 방대하고 다양한 데이터를 활용함으로써 더 신속하게 인사이트를 개발할 수 있습니다.
2. Fluentd
Nintendo, Red Hat, LINE, Mercari에서 사용 중
https://www.fluentd.org/architecture
Fluentd is an open source data collector, which lets you unify the data collection and consumption for a better use and understanding of data
3. Graylog
IBM, HP, Microsoft에서 사용 중
Graylog provides answers to your team’s security, application, and IT infrastructure questions by enabling you to combine, enrich, correlate, query, and visualize all your log data in one place.
4. Splunk
Coca-Cola, Cisco, Domino's Pizza에서 사용 중
로그를 수집하고 사용자가 원하는 결과를 추출하는 대용량 로그 수집/분석 시스템
5. Apache Flume
Twitter, Airbnb, Cisco에서 사용 중
Flume is a distributed, reliable, and available service for efficiently collecting, aggregating, and moving large amounts of log data. It has a simple and flexible architecture based on streaming data flows. It is robust and fault tolerant with tunable reliability mechanisms and many failover and recovery mechanisms. It uses a simple extensible data model that allows for online analytic application.
6. 로그 데이터 분석
분석 방법
- 저장된 로그를 ETL을 이용하여 OLAP에 넣고 분석 하는 방법
- 하둡을 이용하여 데이터를 분석하는 배치 기반의 분석 방법
- Storm/Spark 등을 이용하여 실시간으로 로그를 분석하는 방법
분석 프레임 설정
목적을 명확히 설정하고 적절한 질문을 사전에 작성해두면, 데이터 분석 및 인사이트 도출 과정에 유용하게 사용 될 수 있음
[프레임 설정 예시]
목적
전체 유저 세분화 및 행동 패턴 차이 확인(그룹별 다른 전략 적용)
질문
- 지역별 유저 행동 패턴 차이
- 주간 방문수
- 주문 경험 유무
- 오랜만에 들어온 유저와 단골의 차이
- 주문 카테고리별 구분
7. 로그 데이터 활용
- 개발 영역
- 버그 혹은 크래시율 수집 및 상시 트래킹
- 이슈 발생 후 롤백 및 대응 등에 대한 의사결정 판단의 근거로 활용
- 특정 기능에 대한 사용성 진단
- 마케팅 영역
- 마케팅 채널별 ROI 진단 및 비용 최적화
- 배너/프로모션/이벤트 효과 측정
- 유저 Segmentation, Targeting
- 기획/디자인 영역
- 시나리오/기능/디자인에 대한 성과 측정 및 개선 (A/B 테스트)
- 유저 Journey 경로 분석 및 이탈 구간 개선 (UX/UI 최적화)
- 유저 Persona 구축 (with 리서치) 및 신규 기능 Ideation
- 기타 영역
- 영업 및 CS 관련 대응
- 사업 및 투자 성과 진단
참조:
'DataBase > Data & SQL' 카테고리의 다른 글
[Data] 데이터의 종류, 서비스 데이터와 행동 데이터(로그성 데이터) (0) | 2023.04.05 |
---|---|
[Data] 데이터 관리, 마스터 데이터와 MDM(Master Data Management) (0) | 2023.02.12 |
[SQL] SQL 성능확인, Query Plan 보는 법 (Oracle, MySQL) (0) | 2023.01.31 |
[MySQL] 바이너리 로그(binlog)란? (0) | 2023.01.19 |
[MySQL] MySQL version 확인 방법 (0) | 2023.01.11 |
댓글