Page 1
[email protected] �커미터
이건희
Open�Source�APMSCOUTER로 모니터링
잘~ 하기
Page 3
SCOUTER ?
APM
- Application�performancemanagement
Page 4
SCOUTER ?
화면은 이런 모양이다.
Page 6
SCOUTER ?
아키텍처는? Agent,�Collector,�ClientWAS
Java Agent
WEBapplication
Host�Agent
ScouterCollectorServer
성능 정보 전송
성증정보 수집
ScouterClient성능정보
요청
Page 7
SCOUTER ?
Why�APM?
Page 8
SCOUTER ?
Why�APM?
왜 어플리케이션 모니터링이필요한가?
Page 9
SCOUTER ?
Why�APM?
왜 어플리케이션 모니터링을잘 하는게 필요한가?
Page 10
SCOUTER ?
대부분의 문제 원인은Application�!
Page 11
SCOUTER ?
문제의 식별 - 어플리케이션 모니터링문제의 해결 - 어플리케이션 튜닝
Page 12
SCOUTER ?
아는 만큼 보이고보이는 만큼 개선할 수 있다.
- By�유명인 -
Page 13
SCOUTER ?
아는 만큼 보이고보이는 만큼 개선할 수 있다.
- By�유명인 -
Page 14
SCOUTER ?
몰라도 보이고 ~보이는 만큼 개선할 수 있다.
- By�Scouter -
Page 15
SCOUTER ?
Application�자원 모니터링
Process�CPUHeap�memoryGCDatasource Pool
Page 16
SCOUTER ?
Active�Service
Page 17
SCOUTER ?
Active�Service
Page 18
SCOUTER ?
분포도 차트(XLog)pinwhealwindmill
Page 19
SCOUTER ?
서비스수행 메소드수행 쿼리
상세 Profile
Page 22
SCOUTER for�service�architecture
서비스 아키텍처- SOA- MSA
Page 23
SCOUTER for�service�architecture
Page 24
SCOUTER for�service�architecture
관계의 복잡성으로 인한 문제.
Page 25
SCOUTER for�service�architecture
관계의 복잡성으로 인한 문제.
대표적으로 Cascading�failure
Page 26
SCOUTER for�service�architectureCascading�failure
Ref.� https://github.com/Netflix/Hystrix/wiki
Page 27
SCOUTER for�service�architectureCascading�failure
Ref.� https://github.com/Netflix/Hystrix/wiki
Page 28
SCOUTER for�service�architectureCascading�failure
Ref.� https://github.com/Netflix/Hystrix/wiki
Page 29
SCOUTER for�service�architecture
내꺼 인듯내꺼 아닌내꺼 같은 장애…
Page 30
SCOUTER for�service�architecture
필요한 것은?
Page 31
SCOUTER for�service�architecture
필요한 것은
개발에선 Anti-fragile�patterns모니터링에선 Cross�Service�Tracing
Page 32
SCOUTER for�service�architectureCross�service�tracing
Page 33
SCOUTER advanced
Scouter�pluginSimple�Scripting�Plugin�!
Page 34
SCOUTER advanced
1) Agent�Plugin2) Collector�server�Plugin
Page 35
SCOUTER advanced
사용자 요청을 받는 Front�Service에서테넌트ID를 추출하여 프로파일 하고Backend�Service로 호출시 전달하고 싶다.Backend�Service들 에서도 전달된 테넌트 ID를프로파일 하고 지속적으로 전달하고 싶다.그리고 특정 프로파일 정보는 자체 집계 시스템으로 모으고 싶다.
Page 36
SCOUTER advanced
Agent�PluginHttp�Service�pluginHttp�Call�PluginCapture(parameter,�return�value)…
Page 37
SCOUTER advanced
Collector�server�Plugin수집 데이터 전처리
Page 38
SCOUTER advanced
Agent�Plugin을 통한사용자ID�프로파일
해보자!Java 문법을 통한 scripting
Page 39
SCOUTER advanced
Java�Agent� Http�service�plugin
1.�세션에서 user�id�획득String�userId =
$req.getSessionAttribute(“userId”);
Page 40
SCOUTER advanced
Java�Agent� Http�service�plugin
2.�XLog 항목에 id로 추가$ctx.login(userId);
Page 41
SCOUTER advanced
Java�Agent� Http�service�plugin
3.�Profile에 사용자 정의 문장 기입$ctx.profile(“Login�ID�=�”�+�userId);
Page 42
SCOUTER advanced
$ctx.login(userId);
$ctx.profile(“###�It’s�user�defined�…”�+�userId);
Page 43
SCOUTER advanced
사용자 요청을 받는 Front�Service에서1)�테넌트ID를 추출하여 프로파일 하고Backend�2)�Service로 호출시 테넌트ID를 전달하고 싶다.Backend�Service들 에서도3)�전달된 테넌트 ID를 프로파일 하고 지속적으로 전달하고 싶다.그리고 특정 프로파일 정보는 4)�자체 집계 시스템으로 모으고 싶다.
Page 44
Plugin
Service(Back)ScouterAgent
Service(Back)ScouterAgent
SCOUTER advancedService(Front)ScouterAgent
Service(Back)ScouterAgent
<Http�Service�Plugin>1) Req.에서 테넌트ID�식별-- 프로파일링
<Http�Call�Plugin>2) Http�Call�헤더에테넌트 ID�추가
<Http�Service�Plugin>3) Http�헤더에서테넌트 ID�식별-- 프로파일에 반영
ScouterCollector성능정보수집
ApacheKafka
Legacy분석계
<Collector�Plugin>4) 테넌트 ID를 포함한프로파일을 Kafka로 전달
StOrm InfluxDB
RDB
Hbase
LegacyDashboard
Page 45
SCOUTER
Application�모니터링,Application�Tuning(보이는 만큼 개선할 수 있다.)
그리고…
정리해 보자!
Page 46
SCOUTER
그리고..Simple�scripting�Plugin을 활용하여Centralized�logging�/�monitoring
물론 Application의 수정 없이…
Page 47
SCOUTER가 하고 싶은 것
오픈 소스 중심의 모니터링
Page 48
SCOUTER가 하고 싶은 것
오픈 소스 중심의 통합 모니터링node.js(w/�express.js)Apache�HTTPDRedis /�memcachedNoSQL(Mongo�DB…)Opensource RDB�(Maria,�Cubrid…)Client�side�monitoring(script�error,�dom rendering)…
Page 49
SCOUTER에 기여하기
Githubhttps://github.com/scouter-project/scouter
Facebook�사용자 모임https://www.facebook.com/groups/scouterapm
Page 50
감사합니다Q&A�or�Later
[email protected]