gunlee01@gmail.com
SCOUTER 커미터
이건희
Open Source APM
SCOUTER로 모니터링
잘~ 하기
SCOUTER ?
SCOUTER ?
APM
- Application performance
management
SCOUTER ?
화면은 이런 모양이다.
SCOUTER ?
뙇!
SCOUTER ?
아키텍처는? Agent, Collector, Client
WAS
Java Agent
WEB
application
Host Agent
Scouter
Collector
Server
성능 정보 전송
성증정보 수집
Scouter
Client성능정보
요청
SCOUTER ?
Why APM?
SCOUTER ?
Why APM?
왜 어플리케이션 모니터링이
필요한가?
SCOUTER ?
Why APM?
왜 어플리케이션 모니터링을
잘 하는게 필요한가?
SCOUTER ?
대부분의 문제 원인은
Application !
SCOUTER ?
문제의 식별 - 어플리케이션 모니터링
문제의 해결 - 어플리케이션 튜닝
SCOUTER ?
아는 만큼 보이고
보이는 만큼 개선할 수 있다.
- By 유명인 -
SCOUTER ?
아는 만큼 보이고
보이는 만큼 개선할 수 있다.
- By 유명인 -
SCOUTER ?
몰라도 보이고 ~
보이는 만큼 개선할 수 있다.
- By Scouter -
SCOUTER ?
Application 자원 모니터링
Process CPU
Heap memory
GC
Datasource Pool
SCOUTER ?
Active Service
SCOUTER ?
Active Service
SCOUTER ?
분포도 차트
(XLog)
pinwheal
windmill
SCOUTER ?
서비스
수행 메소드
수행 쿼리
상세 Profile
SCOUTER ?
조금 더 들어가 보겠습니다.
SCOUTER for service architecture
서비스 아키텍처
- SOA
- MSA
SCOUTER for service architecture
SCOUTER for service architecture
관계의 복잡성으로 인한 문제.
SCOUTER for service architecture
관계의 복잡성으로 인한 문제.
대표적으로 Cascading failure
SCOUTER for service architecture
Cascading failure
Ref. https://github.com/Netflix/Hystrix/wiki
SCOUTER for service architecture
Cascading failure
Ref. https://github.com/Netflix/Hystrix/wiki
SCOUTER for service architecture
Cascading failure
Ref. https://github.com/Netflix/Hystrix/wiki
SCOUTER for service architecture
내꺼 인듯
내꺼 아닌
내꺼 같은 장애…
SCOUTER for service architecture
필요한 것은?
SCOUTER for service architecture
필요한 것은
개발에선 Anti-fragile patterns
모니터링에선 Cross Service Tracing
SCOUTER for service architecture
Cross service tracing
SCOUTER advanced
Scouter plugin
Simple Scripting Plugin !
SCOUTER advanced
1) Agent Plugin
2) Collector server Plugin
SCOUTER advanced
사용자 요청을 받는 Front Service에서
테넌트ID를 추출하여 프로파일 하고
Backend Service로 호출시 전달하고 싶다.
Backend Service들 에서도 전달된 테넌트 ID를
프로파일 하고 지속적으로 전달하고 싶다.
그리고 특정 프로파일 정보는 자체 집계 시스템으로 모으고 싶다.
SCOUTER advanced
Agent Plugin
Http Service plugin
Http Call Plugin
Capture(parameter, return value)
…
SCOUTER advanced
Collector server Plugin
수집 데이터 전처리
SCOUTER advanced
Agent Plugin을 통한
사용자ID 프로파일
해보자!
Java 문법을 통한 scripting
SCOUTER advanced
Java Agent ­ Http service plugin
1. 세션에서 user id 획득
String userId =
$req.getSessionAttribute(“userId”);
SCOUTER advanced
Java Agent ­ Http service plugin
2. XLog 항목에 id로 추가
$ctx.login(userId);
SCOUTER advanced
Java Agent ­ Http service plugin
3. Profile에 사용자 정의 문장 기입
$ctx.profile(“Login ID = ” + userId);
SCOUTER advanced
$ctx.login(userId);
$ctx.profile(“### It’s user defined …” + userId);
SCOUTER advanced
사용자 요청을 받는 Front Service에서
1) 테넌트ID를 추출하여 프로파일 하고
Backend 2) Service로 호출시 테넌트ID를 전달하고 싶다.
Backend Service들 에서도
3) 전달된 테넌트 ID를 프로파일 하고 지속적으로 전달하고 싶다.
그리고 특정 프로파일 정보는 4) 자체 집계 시스템으로 모으고 싶다.
Plugin
Service
(Back)
Scouter
Agent
Service
(Back)
Scouter
Agent
SCOUTER advanced
Service
(Front)
Scouter
Agent
Service
(Back)
Scouter
Agent
<Http Service Plugin>
1) Req.에서 테넌트ID 식별
-- 프로파일링
<Http Call Plugin>
2) Http Call 헤더에
테넌트 ID 추가
<Http Service Plugin>
3) Http 헤더에서
테넌트 ID 식별
-- 프로파일에 반영
Scouter
Collector
성능정보수집
Apache
Kafka
Legacy
분석계
<Collector Plugin>
4) 테넌트 ID를 포함한
프로파일을 Kafka로 전달
S
t
O
r
m InfluxDB
RDB
Hbase
Legacy
Dashboard
SCOUTER
Application 모니터링,
Application Tuning
(보이는 만큼 개선할 수 있다.)
그리고…
정리해 보자!
SCOUTER
그리고..
Simple scripting Plugin을 활용하여
Centralized logging / monitoring
물론 Application의 수정 없이…
SCOUTER가 하고 싶은 것
오픈 소스 중심의 모니터링
SCOUTER가 하고 싶은 것
오픈 소스 중심의 통합 모니터링
node.js(w/ express.js)
Apache HTTPD
Redis / memcached
NoSQL(Mongo DB…)
Opensource RDB (Maria, Cubrid…)
Client side monitoring(script error, dom rendering)
…
SCOUTER에 기여하기
Github
https://github.com/scouter-project/scouter
Facebook 사용자 모임
https://www.facebook.com/groups/scouterapm
감사합니다
Q&A or Later
gunlee01@gmail.com

Open source APM Scouter로 모니터링 잘 하기