50
[email protected] SCOUTER 커미터 이건희 Open Source APM SCOUTER로 모니터링 잘~ 하기

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

Embed Size (px)

Citation preview

[email protected]�커미터

이건희

Open�Source�APMSCOUTER로 모니터링

잘~ 하기

SCOUTER ?

SCOUTER ?

APM

- Application�performancemanagement

SCOUTER ?

화면은 이런 모양이다.

SCOUTER ?

뙇!

SCOUTER ?

아키텍처는? Agent,�Collector,�ClientWAS

Java Agent

WEBapplication

Host�Agent

ScouterCollectorServer

성능 정보 전송

성증정보 수집

ScouterClient성능정보

요청

SCOUTER ?

Why�APM?

SCOUTER ?

Why�APM?

왜 어플리케이션 모니터링이필요한가?

SCOUTER ?

Why�APM?

왜 어플리케이션 모니터링을잘 하는게 필요한가?

SCOUTER ?

대부분의 문제 원인은Application�!

SCOUTER ?

문제의 식별 - 어플리케이션 모니터링문제의 해결 - 어플리케이션 튜닝

SCOUTER ?

아는 만큼 보이고보이는 만큼 개선할 수 있다.

- By�유명인 -

SCOUTER ?

아는 만큼 보이고보이는 만큼 개선할 수 있다.

- By�유명인 -

SCOUTER ?

몰라도 보이고 ~보이는 만큼 개선할 수 있다.

- By�Scouter -

SCOUTER ?

Application�자원 모니터링

Process�CPUHeap�memoryGCDatasource Pool

SCOUTER ?

Active�Service

SCOUTER ?

Active�Service

SCOUTER ?

분포도 차트(XLog)pinwhealwindmill

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�architectureCascading�failure

Ref.� https://github.com/Netflix/Hystrix/wiki

SCOUTER for�service�architectureCascading�failure

Ref.� https://github.com/Netflix/Hystrix/wiki

SCOUTER for�service�architectureCascading�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�architectureCross�service�tracing

SCOUTER advanced

Scouter�pluginSimple�Scripting�Plugin�!

SCOUTER advanced

1) Agent�Plugin2) Collector�server�Plugin

SCOUTER advanced

사용자 요청을 받는 Front�Service에서테넌트ID를 추출하여 프로파일 하고Backend�Service로 호출시 전달하고 싶다.Backend�Service들 에서도 전달된 테넌트 ID를프로파일 하고 지속적으로 전달하고 싶다.그리고 특정 프로파일 정보는 자체 집계 시스템으로 모으고 싶다.

SCOUTER advanced

Agent�PluginHttp�Service�pluginHttp�Call�PluginCapture(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)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

SCOUTER

Application�모니터링,Application�Tuning(보이는 만큼 개선할 수 있다.)

그리고…

정리해 보자!

SCOUTER

그리고..Simple�scripting�Plugin을 활용하여Centralized�logging�/�monitoring

물론 Application의 수정 없이…

SCOUTER가 하고 싶은 것

오픈 소스 중심의 모니터링

SCOUTER가 하고 싶은 것

오픈 소스 중심의 통합 모니터링node.js(w/�express.js)Apache�HTTPDRedis /�memcachedNoSQL(Mongo�DB…)Opensource RDB�(Maria,�Cubrid…)Client�side�monitoring(script�error,�dom rendering)…

SCOUTER에 기여하기

Githubhttps://github.com/scouter-project/scouter

Facebook�사용자 모임https://www.facebook.com/groups/scouterapm

감사합니다Q&A�or�Later

[email protected]