61
네이버 서비스플랫폼개발센터 이승진 StormElasticsearch활용한 로깅 플랫폼의 실시간 알람 시스템 구현

[241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

Embed Size (px)

Citation preview

Page 1: [241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

네이버 서비스플랫폼개발센터 이승진

Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

Page 2: [241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

Contents

1. Intro

2. 기존 알람 시스템의 문제점

3. Storm과 Elasticsearch Percolator 소개 및 활용

4. 새로 구현된 알람 시스템

Page 3: [241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

발표자 소개

운동을 즐기고

여행을 사랑하며

프로그래밍은 격하게!

Page 4: [241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

발표자 소개

• 네이버����������� ������������������  서비스����������� ������������������  플랫폼����������� ������������������  개발센터����������� ������������������  소속����������� ������������������  

• 전사����������� ������������������  로깅����������� ������������������  플랫폼����������� ������������������  개발����������� ������������������  

• 오픈소스����������� ������������������  컨트리뷰션����������� ������������������  

• Storm-elasticsearch����������� ������������������  드라이버����������� ������������������  등

Page 5: [241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

1. Intro

Page 6: [241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

로깅 플랫폼이란

개발����������� ������������������  1팀

로깅����������� ������������������  플랫폼����������� ������������������  구축해야...

로깅����������� ������������������  플랫폼����������� ������������������  개발

개발����������� ������������������  2팀

로깅����������� ������������������  플랫폼����������� ������������������  개발

개발����������� ������������������  3팀

로깅����������� ������������������  플랫폼����������� ������������������  개발

중복되는����������� ������������������  삽질

Page 7: [241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

로깅 플랫폼이란

개발����������� ������������������  1팀 개발����������� ������������������  2팀 개발����������� ������������������  3팀

공용����������� ������������������  로깅����������� ������������������  플랫폼 효율적인����������� ������������������  운영

Page 8: [241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

알람의 필요성

A����������� ������������������  서비스

A����������� ������������������  서비스����������� ������������������  개발자����������� ������������������  B군

Page 9: [241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

알람의 필요성

A����������� ������������������  서비스

A����������� ������������������  서비스����������� ������������������  개발자����������� ������������������  B군

Page 10: [241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

A����������� ������������������  서비스

A����������� ������������������  서비스����������� ������������������  개발자����������� ������������������  B군

알람의 필요성

Page 11: [241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

A����������� ������������������  서비스

A����������� ������������������  서비스����������� ������������������  개발자����������� ������������������  B군

알람의 필요성

Page 12: [241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

A����������� ������������������  서비스

A����������� ������������������  서비스����������� ������������������  개발자����������� ������������������  B군

알람의 필요성

Page 13: [241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

1. 기존 알람 모듈의 문제점

Page 14: [241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

네이버 사내 로깅 플랫폼

• NELO2����������� ������������������  

• Elasticsearch����������� ������������������  기반����������� ������������������  

• 검색,����������� ������������������  대시보드,����������� ������������������  크래시����������� ������������������  분석,����������� ������������������  알람����������� ������������������  등의����������� ������������������  기능

Page 15: [241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

수집����������� ������������������  서버����������� ������������������  

����������� ������������������  ����������� ������������������  -����������� ������������������  룰����������� ������������������  매칭����������� ������������������  ����������� ������������������  ����������� ������������������  -����������� ������������������  5분����������� ������������������  주기����������� ������������������  규칙����������� ������������������  동기화

기존 알람 모듈의 문제점구조적인 문제점

알람����������� ������������������  서버����������� ������������������  Node.js����������� ������������������  기반����������� ������������������  

����������� ������������������  ����������� ������������������  -����������� ������������������  알람����������� ������������������  집계����������� ������������������  ����������� ������������������  ����������� ������������������  -����������� ������������������  1분����������� ������������������  주기����������� ������������������  알람����������� ������������������  발송

유입����������� ������������������  로그

• 기존����������� ������������������  알람����������� ������������������  모듈����������� ������������������  아키텍쳐

확장성����������� ������������������  제약

주기적인����������� ������������������  동작����������� ������������������  방식

이원화����������� ������������������  된����������� ������������������  알람����������� ������������������  처리

Page 16: [241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

기존 알람 모듈의 문제점구조적인 문제점

주기적인����������� ������������������  동작����������� ������������������  방식

• 알람����������� ������������������  발송의����������� ������������������  실시간성이����������� ������������������  보장되지����������� ������������������  않음����������� ������������������  

• 사용자의����������� ������������������  갱신행위����������� ������������������  반영시점도����������� ������������������  명확하지����������� ������������������  않음

Page 17: [241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

기존 알람 모듈의 문제점구조적인 문제점

확장성����������� ������������������  제약

• 수집서버����������� ������������������  -����������� ������������������  알람서버가����������� ������������������  직접����������� ������������������  메세지를����������� ������������������  주고����������� ������������������  받음����������� ������������������  

• 알람서버����������� ������������������  노드����������� ������������������  추가시����������� ������������������  수집서버도����������� ������������������  재시작����������� ������������������  되어야����������� ������������������  하는����������� ������������������  문제����������� ������������������  

Page 18: [241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

기존 알람 모듈의 문제점구조적인 문제점

이원화����������� ������������������  된����������� ������������������  알람����������� ������������������  처리

• 하나의����������� ������������������  알람����������� ������������������  관련����������� ������������������  기능을����������� ������������������  두����������� ������������������  컴포넌트에서����������� ������������������  나눠서����������� ������������������  처리����������� ������������������  

• 버그����������� ������������������  리포트����������� ������������������  시����������� ������������������  문제원인����������� ������������������  파악의����������� ������������������  어려움

Page 19: [241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

기존 알람 모듈의 문제점UX측면에서의 문제점

검색 알람����������� ������������������  등록이상����������� ������������������  로그����������� ������������������  확인

Elasticsearch����������� ������������������  쿼리

자체����������� ������������������  정의����������� ������������������  쿼리����������� ������������������  규칙

• 사용자의����������� ������������������  알람����������� ������������������  기능����������� ������������������  활용����������� ������������������  패턴

검색����������� ������������������  /����������� ������������������  알람����������� ������������������  문법����������� ������������������  불일치

Page 20: [241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

확장성����������� ������������������  제약

주기적인����������� ������������������  동작����������� ������������������  방식

기존 알람 모듈의 문제점

검색����������� ������������������  /����������� ������������������  알람����������� ������������������  문법����������� ������������������  불일치

이원화����������� ������������������  된����������� ������������������  알람����������� ������������������  처리

Page 21: [241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

2. Storm과 Elasticsearch Percolator 소개 및 활용

Page 22: [241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

StormIntro

• 분산����������� ������������������  스트리밍����������� ������������������  처리����������� ������������������  프레임워크����������� ������������������  

• Java����������� ������������������  /����������� ������������������  Clojure����������� ������������������  

• 메세지����������� ������������������  전송����������� ������������������  보장����������� ������������������  

• at����������� ������������������  least����������� ������������������  /����������� ������������������  at����������� ������������������  most����������� ������������������  /����������� ������������������  exactly����������� ������������������  once

Page 23: [241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

Storm아키텍쳐

Supervisor

Nimbus Zookeeper

Worker

Supervisor

Supervisor

Supervisor

Worker

Executor

Task Task

Worker

마스터노드클러스터����������� ������������������  관리

워커����������� ������������������  ����������� ������������������  구동����������� ������������������  /����������� ������������������  관리

프로세스����������� ������������������  수행

Page 24: [241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

StormCluster

• nimbus(마스터)와����������� ������������������  supervisor(슬레이브)로����������� ������������������  구성����������� ������������������  

• supervisor는����������� ������������������  worker����������� ������������������  프로세스를����������� ������������������  관리����������� ������������������  

• worker는����������� ������������������  실제����������� ������������������  topology를����������� ������������������  구동����������� ������������������  

• 주키퍼를����������� ������������������  통한����������� ������������������  코디네이션

Page 25: [241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

• 데이터����������� ������������������  처리����������� ������������������  흐름을����������� ������������������  나타나내는����������� ������������������  DAG����������� ������������������  

• Spout����������� ������������������  :����������� ������������������  데이터����������� ������������������  소스����������� ������������������  

• Bolt����������� ������������������  :����������� ������������������  개별����������� ������������������  데이터����������� ������������������  처리����������� ������������������  로직����������� ������������������  

• Tuple����������� ������������������  :����������� ������������������  단위����������� ������������������  데이터����������� ������������������  

• 워커����������� ������������������  프로세스����������� ������������������  들에����������� ������������������  의해����������� ������������������  분산����������� ������������������  구동����������� ������������������  

• Sub-second����������� ������������������  latency

StormTopology

Spout

Bolt

Bolt

Bolt

Spout Bolt

tuple

Page 26: [241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

StormRebalancing : executor parallelism control

Bolt����������� ������������������  A Bolt����������� ������������������  B Bolt����������� ������������������  C

Spout

Spout

Storm����������� ������������������  Topology

Input

Page 27: [241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

StormRebalancing : executor parallelism control

Bolt����������� ������������������  A Bolt����������� ������������������  B Bolt����������� ������������������  C

Spout

Spout

Storm����������� ������������������  Topology

Input

storm����������� ������������������  rebalance����������� ������������������  myTopology����������� ������������������  -e����������� ������������������  BoltB=4����������� ������������������  

Page 28: [241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

Storm

Bolt����������� ������������������  A Bolt����������� ������������������  B Bolt����������� ������������������  C

Spout

Spout

Storm����������� ������������������  Topology

Input

Rebalancing : intra worker parallelism control

Page 29: [241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

Storm

Input Spout

Spout

Bolt����������� ������������������  C Bolt����������� ������������������  C Bolt����������� ������������������  C

Topology

Rebalancing : worker parallelism control

storm����������� ������������������  rebalance����������� ������������������  myTopology����������� ������������������  -n����������� ������������������  3

Page 30: [241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

Storm

Spout

Spout

Bolt����������� ������������������  C Bolt����������� ������������������  C Bolt����������� ������������������  C

Topology

Spout

Spout

Bolt����������� ������������������  C Bolt����������� ������������������  C Bolt����������� ������������������  C

Topology

Spout

Spout

Bolt����������� ������������������  C Bolt����������� ������������������  C Bolt����������� ������������������  C

Topology

Input

Rebalancing : worker parallelism control

Page 31: [241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

StormHigh availability

• Nimbus����������� ������������������  데몬이����������� ������������������  죽는����������� ������������������  경우����������� ������������������  

• Worker����������� ������������������  프로세스����������� ������������������  자체에는����������� ������������������  영향이����������� ������������������  없음,����������� ������������������  

• 이후����������� ������������������  리밸런싱은����������� ������������������  일어나지����������� ������������������  않음����������� ������������������  

• 적절한����������� ������������������  관리����������� ������������������  프로세스가����������� ������������������  필요����������� ������������������  

• SPOF(Single����������� ������������������  Point����������� ������������������  Of����������� ������������������  Failure)����������� ������������������  

• Nimbus����������� ������������������  이중화����������� ������������������  논의/PR����������� ������������������  진행����������� ������������������  중

Page 32: [241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

StormHigh availability

• Supervisor����������� ������������������  데몬이����������� ������������������  죽는����������� ������������������  경우����������� ������������������  

• Worker����������� ������������������  프로세스����������� ������������������  자체에는����������� ������������������  영향����������� ������������������  없음����������� ������������������  

• 이후����������� ������������������  해당����������� ������������������  노드에서����������� ������������������  리밸런싱은����������� ������������������  일어나지����������� ������������������  않음����������� ������������������  

• 적절한����������� ������������������  관리����������� ������������������  프로세스가����������� ������������������  필요

Page 33: [241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

StormHigh availability

• Worker����������� ������������������  프로세스가����������� ������������������  죽는����������� ������������������  경우����������� ������������������  

• 수차례����������� ������������������  해당����������� ������������������  노드에서����������� ������������������  재시작����������� ������������������  시도����������� ������������������  

• 실패할����������� ������������������  경우����������� ������������������  다른����������� ������������������  노드로����������� ������������������  리밸런싱

Page 34: [241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

• Storm����������� ������������������  UI����������� ������������������  /����������� ������������������  Storm����������� ������������������  rest����������� ������������������  API����������� ������������������  

• 토폴로지����������� ������������������  메트릭����������� ������������������  조회(throughput,����������� ������������������  latency����������� ������������������  등)����������� ������������������  

• Custom����������� ������������������  metric����������� ������������������  

• IMetricsConsumer����������� ������������������  인터페이스����������� ������������������  상속하여����������� ������������������  커스텀����������� ������������������  구현����������� ������������������  

• Graphite를����������� ������������������  통한����������� ������������������  시계열����������� ������������������  메트릭����������� ������������������  시각화����������� ������������������  

• Central����������� ������������������  logging����������� ������������������  platform

Stormmonitoring

Page 35: [241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

• 5����������� ������������������  Elasticsearch����������� ������������������  nodes,����������� ������������������  2����������� ������������������  Storm����������� ������������������  worker����������� ������������������  nodes����������� ������������������  

• 2����������� ������������������  cpu����������� ������������������  cores,����������� ������������������  4gb����������� ������������������  mem����������� ������������������  

• 평균����������� ������������������  1kb����������� ������������������  로그����������� ������������������  사이즈����������� ������������������  

• 초당����������� ������������������  평균����������� ������������������  처리량����������� ������������������  30k,����������� ������������������  latency����������� ������������������  150ms����������� ������������������  이내

Storm성능테스트

Page 36: [241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

Storm기존 알람의 문제점 해결

주기적인����������� ������������������  동작����������� ������������������  방식

확장성����������� ������������������  제약

검색����������� ������������������  /����������� ������������������  알람����������� ������������������  문법����������� ������������������  불일치

이원화된����������� ������������������  알람����������� ������������������  처리

유연한����������� ������������������  확장성

실시간����������� ������������������  메세지����������� ������������������  처리

Page 37: [241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

ElasticsearchIntro

• Lucene����������� ������������������  기반����������� ������������������  분산����������� ������������������  검색����������� ������������������  엔진����������� ������������������  

• JSON����������� ������������������  형태로����������� ������������������  문서를����������� ������������������  저장����������� ������������������  :����������� ������������������  schema����������� ������������������  free����������� ������������������  

• 기능����������� ������������������  

• Search����������� ������������������  

• Aggregation����������� ������������������  

• Percolator����������� ������������������  

• ����������� ������������������  etc..

Page 38: [241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

Elasticsearch

Elasticsearch RDBMS

Index database

Type table

Mapping schema

Document row

Field column

Glossary

Page 39: [241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

ElasticsearchGlossary

• Shard����������� ������������������  

• 인덱스����������� ������������������  데이터의����������� ������������������  횡적����������� ������������������  분할����������� ������������������  

• Primary����������� ������������������  /����������� ������������������  Replica로����������� ������������������  구분

Page 40: [241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

ElasticsearchPercolator API

검색 역검색vs

Page 41: [241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

• 검색

ElasticsearchPercolator

"message" : "나는 신청 못함 ㅠ"

"message" : "커피가 부족해요"

"message" : "데뷰 세션들 최고"

Step����������� ������������������  1.����������� ������������������  문서를����������� ������������������  저장

데뷰 AND 최고 "message" : "데뷰 세션들 최고"

Step����������� ������������������  2.����������� ������������������  질의어로����������� ������������������  문서를����������� ������������������  탐색

Page 42: [241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

ElasticsearchPercolator

• Percolator����������� ������������������  API

"id"����������� ������������������  :����������� ������������������  1����������� ������������������  "query"����������� ������������������  :����������� ������������������  데뷰����������� ������������������  AND����������� ������������������  최고

"id"����������� ������������������  :2����������� ������������������  "query"����������� ������������������  :����������� ������������������  커피

Step����������� ������������������  1.����������� ������������������  질의어를����������� ������������������  저장

"message"����������� ������������������  :����������� ������������������  "커피����������� ������������������  부족해요"

"message"����������� ������������������  :����������� ������������������  "데뷰����������� ������������������  세션들����������� ������������������  최고"

"message"����������� ������������������  :����������� ������������������  "나는����������� ������������������  신청����������� ������������������  못함����������� ������������������  ㅠ"

[{"id"����������� ������������������  :����������� ������������������  1����������� ������������������  }]

[{"id"����������� ������������������  :����������� ������������������  2����������� ������������������  }]

[]

Step����������� ������������������  2.����������� ������������������  문서와����������� ������������������  매치되는����������� ������������������  질의어를����������� ������������������  탐색

Page 43: [241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

ElasticsearchPercolator 적용 아이디어

로그유입

Percolator����������� ������������������  +����������� ������������������  

Stream����������� ������������������  processing

실시간����������� ������������������  알람

Page 44: [241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

• Routing

ElasticsearchPercolator 성능 최적화

Shard 1 Shard 2 Shard 2 Shard 3 Shard 3 Shard 1

percolate����������� ������������������  req

Page 45: [241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

• Routing

ElasticsearchPercolator 성능 최적화

Shard 1 Shard 2 Shard 2 Shard 3 Shard 3 Shard 1

percolate����������� ������������������  req

"routing"����������� ������������������  :����������� ������������������  "s2"

응답시간����������� ������������������  단축

리소스����������� ������������������  사용����������� ������������������  감소

Page 46: [241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

• Load����������� ������������������  balancing

ElasticsearchPercolator 성능 최적화

Shard 1 Shard 2 Shard 2 Shard 3 Shard 3 Shard 1

percolate����������� ������������������  req����������� ������������������  1����������� ������������������  

"routing"����������� ������������������  :����������� ������������������  "s2"

percolate����������� ������������������  req����������� ������������������  2����������� ������������������  

"routing"����������� ������������������  :����������� ������������������  "s2" 부하����������� ������������������  분산

Page 47: [241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

• Filtering

ElasticsearchPercolator 성능 최적화

Shard 1 Shard 2

percolate����������� ������������������  req����������� ������������������  

project query

deview2015 데뷰����������� ������������������  AND����������� ������������������  커피

deview2014 롯데����������� ������������������  호텔����������� ������������������  오는����������� ������������������  길

deview2014 데뷰����������� ������������������  날짜

deview2015 암표����������� ������������������  팔아요

Page 48: [241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

• Filtering

ElasticsearchPercolator 성능 최적화

Shard 1 Shard 2

percolate����������� ������������������  req����������� ������������������  

filter����������� ������������������  :����������� ������������������  {����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  "project"����������� ������������������  :����������� ������������������  "deview2015"����������� ������������������  }

project query

deview2015 데뷰����������� ������������������  AND����������� ������������������  커피

deview2014 롯데����������� ������������������  호텔����������� ������������������  오는����������� ������������������  길

deview2014 데뷰����������� ������������������  날짜

deview2015 암표����������� ������������������  팔아요

타겟����������� ������������������  질의어����������� ������������������  범위����������� ������������������  축소

Page 49: [241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

ElasticsearchPercolator 도입에 따른 이점

• Elasticsearch����������� ������������������  쿼리를����������� ������������������  알람����������� ������������������  질의어로����������� ������������������  사용����������� ������������������  

• projectName:"deview"����������� ������������������  AND����������� ������������������  (body:/.*securityfailexception|.*sessionfailexception/)����������� ������������������  

• (project:"deview-2014"����������� ������������������  OR����������� ������������������  project:"deview-2015")����������� ������������������  AND����������� ������������������  body:"exception"����������� ������������������  NOT����������� ������������������  source:"session-request"

검색����������� ������������������  /����������� ������������������  알람����������� ������������������  문법����������� ������������������  일치

다양한����������� ������������������  알람����������� ������������������  질의어����������� ������������������  지원

Page 50: [241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

Elasticsearch기존 알람의 문제점 해결

주기적인����������� ������������������  동작����������� ������������������  방식

확장성����������� ������������������  제약 유연한����������� ������������������  확장성

실시간����������� ������������������  메세지����������� ������������������  처리

검색����������� ������������������  /����������� ������������������  알람����������� ������������������  문법����������� ������������������  불일치

이원화된����������� ������������������  알람����������� ������������������  처리

검색����������� ������������������  /����������� ������������������  알람����������� ������������������  문법����������� ������������������  일치

Page 51: [241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

4. 새로 구현된 알람 시스템

Page 52: [241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

새로 구현된 알람 시스템

• 하나의����������� ������������������  Storm����������� ������������������  topology����������� ������������������  

• 한����������� ������������������  모듈에서����������� ������������������  알람����������� ������������������  관련����������� ������������������  모든����������� ������������������  기능을����������� ������������������  처리����������� ������������������  

• 실시간����������� ������������������  알람����������� ������������������  발송����������� ������������������  및����������� ������������������  캐시����������� ������������������  동기화

Page 53: [241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

새로 구현된 알람 시스템실시간 알람 발송 순서도

해당����������� ������������������  로그와����������� ������������������  매치되는����������� ������������������  알람����������� ������������������  규칙이����������� ������������������  있는가?

알람����������� ������������������  발생����������� ������������������  조건����������� ������������������  (임계값+시간간격)이����������� ������������������  충족되는가?

Percolate����������� ������������������  Request

알람����������� ������������������  규칙����������� ������������������  집계

각각의����������� ������������������  유입����������� ������������������  로그에����������� ������������������  대하여

실시간����������� ������������������  알람����������� ������������������  발송

LogSpout

PercolationBolt

AggregationBolt

NotificationBolt

True

True

Page 54: [241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

새로 구현된 알람 시스템실시간 캐시 동기화

• 사용자����������� ������������������  정보����������� ������������������  및����������� ������������������  알람����������� ������������������  규칙����������� ������������������  갱신����������� ������������������  시����������� ������������������  Kafka에����������� ������������������  메세지����������� ������������������  전송����������� ������������������  

• 알람����������� ������������������  서버는����������� ������������������  이를����������� ������������������  읽어����������� ������������������  관련된����������� ������������������  캐시를����������� ������������������  즉시����������� ������������������  동기화

Page 55: [241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

새로 구현된 알람 시스템

로그유입����������� ������������������  :����������� ������������������  4건 알람����������� ������������������  미발송

10:15:00.000

10:30:00.000

10:30:00.000

10:30:00.000

실시간 알람 롤링 윈도우 집계

title "이상한����������� ������������������  일이다!!"

threshold 5

interval 10분

query 데뷰����������� ������������������  AND����������� ������������������  최고

rule:87 alert:87

Page 56: [241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

로그유입����������� ������������������  :����������� ������������������  5건����������� ������������������  시간간격����������� ������������������  :����������� ������������������  16분

알람����������� ������������������  미발송

10:15:00.000

10:31:00.000

10:30:00.000

10:30:00.000

10:30:00.000

rule:87 alert:87

title "이상한����������� ������������������  일이다!!"

threshold 5

interval 10분

query 데뷰����������� ������������������  AND����������� ������������������  최고

실시간 알람 롤링 윈도우 집계

새로 구현된 알람 시스템

Page 57: [241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

10:30:00.000

10:31:00.000

10:32:00.000

로그유입����������� ������������������  :����������� ������������������  5건����������� ������������������  시간간격����������� ������������������  :����������� ������������������  2분 알람����������� ������������������  발송

10:30:00.000

10:30:00.000

rule:87 alert:87

title "이상한����������� ������������������  일이다!!"

threshold 5

interval 10분

query 데뷰����������� ������������������  AND����������� ������������������  최고

실시간 알람 롤링 윈도우 집계

새로 구현된 알람 시스템

Page 58: [241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

새로 구현된 알람 모듈변화된 아키텍처

Elasticsearch

Redis

수집 서버 API 서버

Kafka

Log����������� ������������������  topic Update����������� ������������������  topic

LogSpout Update Spout

CacheUpdateBolt

PercolationBolt

AggregationBolt

NotificationBolt

외부����������� ������������������  컴포넌트

메세징����������� ������������������  큐

Storm����������� ������������������  Topology

실시간����������� ������������������  알람����������� ������������������  발송����������� ������������������  및����������� ������������������  동기화

Page 59: [241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

새로 구현된 알람 모듈기존 알람의 문제점 해결

주기적인����������� ������������������  동작����������� ������������������  방식

확장성����������� ������������������  제약 유연한����������� ������������������  확장성

실시간����������� ������������������  메세지����������� ������������������  처리

검색����������� ������������������  /����������� ������������������  알람����������� ������������������  문법����������� ������������������  불일치

이원화된����������� ������������������  알람����������� ������������������  처리

검색����������� ������������������  /����������� ������������������  알람����������� ������������������  문법����������� ������������������  일치

알람����������� ������������������  처리의����������� ������������������  일원화

Page 60: [241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

마치며오늘 다룬 내용들

• 기존����������� ������������������  알람시스템의����������� ������������������  문제점����������� ������������������  

• Storm을����������� ������������������  통한����������� ������������������  유연한����������� ������������������  확장성����������� ������������������  및����������� ������������������  실시간����������� ������������������  메세지����������� ������������������  처리����������� ������������������  

• Elasticsearch����������� ������������������  Percolator를����������� ������������������  알람의����������� ������������������  룰����������� ������������������  매칭����������� ������������������  기능으로����������� ������������������  활용����������� ������������������  

• 새로����������� ������������������  구현된����������� ������������������  알람시스템의����������� ������������������  동작����������� ������������������  방식,����������� ������������������  아키텍쳐����������� ������������������  소개����������� ������������������  

• 실시간����������� ������������������  알람����������� ������������������  발송����������� ������������������  및����������� ������������������  캐시����������� ������������������  동기화����������� ������������������  전략

Page 61: [241] Storm과 Elasticsearch를 활용한 로깅 플랫폼의 실시간 알람 시스템 구현

감사합니다.