SlideShare une entreprise Scribd logo
1  sur  20
Sarc Summit Summer 2016
by sarc.io
June 11
삵
Trace End-User
Request
조동진
Sarc Summit Summer 2016
by sarc.io
Trace End-User Request삵
Sarc Summit Summer 2016
by sarc.io
Trace End-User Request삵
예기치 않은 오류가 발생하였습니다.
관리자에게 연락하시기 바랍니다.
E-mail : admin@sarc.com
Sarc Summit Summer 2016
by sarc.io
Trace End-User Request삵
단일 아키텍처의 경우
WASWEB
다중 아키텍처의 경우
WEB
WEB
WEB
WEB
WAS
WAS
WAS
WAS
WEB
WEB
WEB
WEB
WAS
WAS
WAS
WAS
proxy
proxy
proxy
proxy
1 + 1
M + N L + M + N
로그분석
Sarc Summit Summer 2016
by sarc.io
Trace End-User Request삵
효율적인 로그분석
방법
문제 발생 시점의 의미 있는 정보를 기초로 로그분석의 범위를 최소화해야 한다.
WEB
WEB
WEB
WEB
WAS
WAS
WAS
WAS
proxy
proxy
proxy
proxy
의미 있는 정보들
§ IP
§ User-Agent
§ User Id
§ Time
§ Cookie
§ HTTP Header
- Session Cookie
- Persistent Cookie
Sarc Summit Summer 2016
by sarc.io
Trace End-User Request삵
육하원칙 (5W1H)
WASWEB
1. Cookie 정보 전송 2. WEB 위치정보 추가 3. Cookie/WEB /WAS정보 기록
4. WAS 위치정보 추가5. WEB 위치정보 추가
6. Cookie/WEB/WAS 위치정보 기록
§ Who è Cookie
§ When è Header (Date)
§ Where è Header (임의로 생성)
§ What è Header (URI)
§ How è Header (request method, response code)
§ Why
적용방법
효율적인 로그분석
HTTP Header에 필요한 정보를 담아 server/client에 전송하고 로깅한다.
Sarc Summit Summer 2016
by sarc.io
Trace End-User Request삵
Access Log - apache
combined 로그 형식
LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-agent}i"" combined
§ %h : 클라이언트(원격 호스트)의 IP 주소
§ %l : 클라이언트의 RFC 1413 신원
§ %u : 문서를 요청한 사용자의 userid
§ %t : The time that the request was received.
§ "%r“ : 클라이언트의 요청줄
§ %>s : 서버가 클라이언트에게 보내는 상태코드
§ %b : 응답 헤더를 제외한 클라이언트에게 보내는 내용의 크기
§ "%{Referer}i“ : 클라이언트가 참조했다고 서버에게 알린 사이트
§ "%{User-agent}i“ : 클라이언트 브라우저가 자신에 대해 알리는 식별정보
Sarc Summit Summer 2016
by sarc.io
Trace End-User Request삵
Access Log - apache
127.0.0.1 - - [10/Oct/2000:13:55:36 +0900] "GET /apache_pb.gif
HTTP/1.1" 200 2326 "http://www.example.com/start.html" "Mozilla/4.08
[en] (Win98; I ;Nav)"
combined 로그 내용
who when how what
who
who
where
how
Sarc Summit Summer 2016
by sarc.io
Trace End-User Request삵
Who - cookie
Cookie 생성 – Servlet Filter
String sarc_id = null;
Cookie[] cookies = request.getCookies();
if (cookies != null) {
for (int i = 0; i < cookies.length; i++) {
if (cookies[i].getName().equals( "sarc_id" ) ) {
sarc_id = cookies[i].getValue();
break;
}
}
}
if ( sarc_id == null ) {
sarc_id = makeUniqueSarcId(); // make unique cookie value
Cookie c = new Cookie( "sarc_id", sarc_id );
c.setMaxAge( 365 * 24 * 3600 );
c.setPath( "/" );
response.addCookie(c);
}
Sarc Summit Summer 2016
by sarc.io
Trace End-User Request삵
Who - cookie
Cookie 생성 및 로깅
WASWEB
Set-cookie Set-cookie
cookie cookie
cookie cookie
Logging
Logging
Logging
Logging
Generate Cookie1
2
3
테스트 결과
Cookie:
JSESSIONID=3048957BA022C125E3780F75B
DBCDFD1
Set-Cookie:
sarc_id=1465276960295; Expires=Tue, 07-
Jun-2017 05:23:40 GMT; Path=/
Cookie:
JSESSIONID=3048957BA022C125E3780F75B
DBCDFD1; sarc_id=1465276960295
1
2
Request Header Response Header
Sarc Summit Summer 2016
by sarc.io
Trace End-User Request삵
Where – HTTP Header
HTTP Header
request header를 통해 사용자 요청 경로를 WAS(App.)에 전달할 수 있고, response
header를 통해 사용자 응답 경로를 client(Browser)에 전달할 수 있으며, 이 두 정보를
이용하여 사용자 요청/응답에 대한 경로 추적이 가능하다.
WEB1
WEB2
WEB3
WEB4
WAS1
WAS2
WAS3
WAS4
Proxy3
WEB2
WAS4
Req. Header
Proxy3
WEB2
WAS4
Res. Header
Sarc Summit Summer 2016
by sarc.io
Trace End-User Request삵
Where – HTTP Header
Apache
RequestHeader append web_loc WEB2
Header append web_loc WEB2
- RequestHeader 지시어와 Header 지시어를 이용하여 요청/응답의 경로를 HTTP
header에 포함시킬 수 있다.
- mod_headers
- 주서버설정(server config)과 가상호스트(virtual host)에 설정이 가능하다.
Sarc Summit Summer 2016
by sarc.io
Trace End-User Request삵
Where – HTTP Header
Tomcat & Application
-Dwas_loc=WAS4
- -D 옵션을 사용하여 WAS 인스턴스의 정보를 system properties에 지정할 수 있다.
String sarc_loc = System.getProperty( “was_loc" );
response.setHeader( “was_loc", was_loc );
- system properties값을 Response Header에 설정한다.
Sarc Summit Summer 2016
by sarc.io
Trace End-User Request삵
Logging - Apache
Apache Log Format
%...{Foobar}C : 서버가 수신한 요청에서 Foobar 쿠키의 내용
%...{Foobar}o : 응답에서 Foobar: 헤더의 내용
%...{Foobar}i : 서버가 수신한 요청에서 Foobar: 헤더의 내용
LogFormat "%h %{sarc_id}C %{web_loc}o %{was_loc}o %t "%r" %>s %b" sarc
Sarc Summit Summer 2016
by sarc.io
Trace End-User Request삵
Logging - Apache
Web Browser Header
Access Log
Sarc Summit Summer 2016
by sarc.io
Trace End-User Request삵
Logging - Application
Key Factor
§ Transaction Unique Key
§ Cookie or unique id
§ Time
§ WEB location info
§ WAS location info
§ Debugging logs
Sarc Summit Summer 2016
by sarc.io
Trace End-User Request삵
사용자 정보 얻기
확장자 .har 파일로 저장 가능
Sarc Summit Summer 2016
by sarc.io
Trace End-User Request삵
사용자 정보 보기
https://ericduran.github.io/chromeHAR/
Sarc Summit Summer 2016
by sarc.io
Trace End-User Request삵
사용자 정보 보기
Sarc Summit Summer 2016
by sarc.io
Trace End-User Request삵
Q&A

Contenu connexe

Tendances

[2018] NHN 모니터링의 현재와 미래 for 인프라 엔지니어
[2018] NHN 모니터링의 현재와 미래 for 인프라 엔지니어[2018] NHN 모니터링의 현재와 미래 for 인프라 엔지니어
[2018] NHN 모니터링의 현재와 미래 for 인프라 엔지니어NHN FORWARD
 
[Main Session] 카프카, 데이터 플랫폼의 최강자
[Main Session] 카프카, 데이터 플랫폼의 최강자[Main Session] 카프카, 데이터 플랫폼의 최강자
[Main Session] 카프카, 데이터 플랫폼의 최강자Oracle Korea
 
톰캣 #10-모니터링
톰캣 #10-모니터링톰캣 #10-모니터링
톰캣 #10-모니터링GyuSeok Lee
 
Spring boot 를 적용한 전사모니터링 시스템 backend 개발 사례
Spring boot 를 적용한 전사모니터링 시스템 backend 개발 사례Spring boot 를 적용한 전사모니터링 시스템 backend 개발 사례
Spring boot 를 적용한 전사모니터링 시스템 backend 개발 사례Jemin Huh
 
톰캣 #11-팁
톰캣 #11-팁톰캣 #11-팁
톰캣 #11-팁GyuSeok Lee
 
Jco14 오픈소스를 이용한 모니터링 방법
Jco14 오픈소스를 이용한 모니터링 방법Jco14 오픈소스를 이용한 모니터링 방법
Jco14 오픈소스를 이용한 모니터링 방법정수 한
 
컨텐츠 기반 A/B 테스트 구현 사례
컨텐츠 기반 A/B 테스트 구현 사례 컨텐츠 기반 A/B 테스트 구현 사례
컨텐츠 기반 A/B 테스트 구현 사례 Lee Ji Eun
 
톰캣 #01-소개
톰캣 #01-소개톰캣 #01-소개
톰캣 #01-소개GyuSeok Lee
 
톰캣 #08-웹서버 연동
톰캣 #08-웹서버 연동톰캣 #08-웹서버 연동
톰캣 #08-웹서버 연동GyuSeok Lee
 
톰캣 운영 노하우
톰캣 운영 노하우톰캣 운영 노하우
톰캣 운영 노하우jieunsys
 
JBoss RHQ와 Byteman을 이용한 오픈소스 자바 애플리케이션 모니터링
JBoss RHQ와 Byteman을 이용한 오픈소스 자바 애플리케이션 모니터링JBoss RHQ와 Byteman을 이용한 오픈소스 자바 애플리케이션 모니터링
JBoss RHQ와 Byteman을 이용한 오픈소스 자바 애플리케이션 모니터링Ted Won
 
톰캣 #03-설치
톰캣 #03-설치톰캣 #03-설치
톰캣 #03-설치GyuSeok Lee
 
WAS 마이그레이션 자동화 도구 RHAMT
WAS 마이그레이션 자동화 도구 RHAMTWAS 마이그레이션 자동화 도구 RHAMT
WAS 마이그레이션 자동화 도구 RHAMTOpennaru, inc.
 
카프카, 산전수전 노하우
카프카, 산전수전 노하우카프카, 산전수전 노하우
카프카, 산전수전 노하우if kakao
 
RHQ를 활용한 Legacy system 모니터링
RHQ를 활용한 Legacy system 모니터링RHQ를 활용한 Legacy system 모니터링
RHQ를 활용한 Legacy system 모니터링YUSOO KIM
 
Service mesh(istio) monitoring
Service mesh(istio) monitoringService mesh(istio) monitoring
Service mesh(istio) monitoringJeong-Ho Na
 
서비스 모니터링 구현 사례 공유 - Realtime log monitoring platform-PMon을 ...
서비스 모니터링 구현 사례 공유 - Realtime log monitoring platform-PMon을 ...서비스 모니터링 구현 사례 공유 - Realtime log monitoring platform-PMon을 ...
서비스 모니터링 구현 사례 공유 - Realtime log monitoring platform-PMon을 ...Jemin Huh
 
JVM과 톰캣 튜닝
JVM과 톰캣 튜닝JVM과 톰캣 튜닝
JVM과 톰캣 튜닝Mungyu Choi
 
[OpenInfra Days Korea 2018] (Track 4) - Grafana를 이용한 OpenStack 클라우드 성능 모니터링
[OpenInfra Days Korea 2018] (Track 4) - Grafana를 이용한 OpenStack 클라우드 성능 모니터링[OpenInfra Days Korea 2018] (Track 4) - Grafana를 이용한 OpenStack 클라우드 성능 모니터링
[OpenInfra Days Korea 2018] (Track 4) - Grafana를 이용한 OpenStack 클라우드 성능 모니터링OpenStack Korea Community
 
Backend server monitoring and alarm system (collectd, graphite, grafana, zabb...
Backend server monitoring and alarm system (collectd, graphite, grafana, zabb...Backend server monitoring and alarm system (collectd, graphite, grafana, zabb...
Backend server monitoring and alarm system (collectd, graphite, grafana, zabb...Jongwon Han
 

Tendances (20)

[2018] NHN 모니터링의 현재와 미래 for 인프라 엔지니어
[2018] NHN 모니터링의 현재와 미래 for 인프라 엔지니어[2018] NHN 모니터링의 현재와 미래 for 인프라 엔지니어
[2018] NHN 모니터링의 현재와 미래 for 인프라 엔지니어
 
[Main Session] 카프카, 데이터 플랫폼의 최강자
[Main Session] 카프카, 데이터 플랫폼의 최강자[Main Session] 카프카, 데이터 플랫폼의 최강자
[Main Session] 카프카, 데이터 플랫폼의 최강자
 
톰캣 #10-모니터링
톰캣 #10-모니터링톰캣 #10-모니터링
톰캣 #10-모니터링
 
Spring boot 를 적용한 전사모니터링 시스템 backend 개발 사례
Spring boot 를 적용한 전사모니터링 시스템 backend 개발 사례Spring boot 를 적용한 전사모니터링 시스템 backend 개발 사례
Spring boot 를 적용한 전사모니터링 시스템 backend 개발 사례
 
톰캣 #11-팁
톰캣 #11-팁톰캣 #11-팁
톰캣 #11-팁
 
Jco14 오픈소스를 이용한 모니터링 방법
Jco14 오픈소스를 이용한 모니터링 방법Jco14 오픈소스를 이용한 모니터링 방법
Jco14 오픈소스를 이용한 모니터링 방법
 
컨텐츠 기반 A/B 테스트 구현 사례
컨텐츠 기반 A/B 테스트 구현 사례 컨텐츠 기반 A/B 테스트 구현 사례
컨텐츠 기반 A/B 테스트 구현 사례
 
톰캣 #01-소개
톰캣 #01-소개톰캣 #01-소개
톰캣 #01-소개
 
톰캣 #08-웹서버 연동
톰캣 #08-웹서버 연동톰캣 #08-웹서버 연동
톰캣 #08-웹서버 연동
 
톰캣 운영 노하우
톰캣 운영 노하우톰캣 운영 노하우
톰캣 운영 노하우
 
JBoss RHQ와 Byteman을 이용한 오픈소스 자바 애플리케이션 모니터링
JBoss RHQ와 Byteman을 이용한 오픈소스 자바 애플리케이션 모니터링JBoss RHQ와 Byteman을 이용한 오픈소스 자바 애플리케이션 모니터링
JBoss RHQ와 Byteman을 이용한 오픈소스 자바 애플리케이션 모니터링
 
톰캣 #03-설치
톰캣 #03-설치톰캣 #03-설치
톰캣 #03-설치
 
WAS 마이그레이션 자동화 도구 RHAMT
WAS 마이그레이션 자동화 도구 RHAMTWAS 마이그레이션 자동화 도구 RHAMT
WAS 마이그레이션 자동화 도구 RHAMT
 
카프카, 산전수전 노하우
카프카, 산전수전 노하우카프카, 산전수전 노하우
카프카, 산전수전 노하우
 
RHQ를 활용한 Legacy system 모니터링
RHQ를 활용한 Legacy system 모니터링RHQ를 활용한 Legacy system 모니터링
RHQ를 활용한 Legacy system 모니터링
 
Service mesh(istio) monitoring
Service mesh(istio) monitoringService mesh(istio) monitoring
Service mesh(istio) monitoring
 
서비스 모니터링 구현 사례 공유 - Realtime log monitoring platform-PMon을 ...
서비스 모니터링 구현 사례 공유 - Realtime log monitoring platform-PMon을 ...서비스 모니터링 구현 사례 공유 - Realtime log monitoring platform-PMon을 ...
서비스 모니터링 구현 사례 공유 - Realtime log monitoring platform-PMon을 ...
 
JVM과 톰캣 튜닝
JVM과 톰캣 튜닝JVM과 톰캣 튜닝
JVM과 톰캣 튜닝
 
[OpenInfra Days Korea 2018] (Track 4) - Grafana를 이용한 OpenStack 클라우드 성능 모니터링
[OpenInfra Days Korea 2018] (Track 4) - Grafana를 이용한 OpenStack 클라우드 성능 모니터링[OpenInfra Days Korea 2018] (Track 4) - Grafana를 이용한 OpenStack 클라우드 성능 모니터링
[OpenInfra Days Korea 2018] (Track 4) - Grafana를 이용한 OpenStack 클라우드 성능 모니터링
 
Backend server monitoring and alarm system (collectd, graphite, grafana, zabb...
Backend server monitoring and alarm system (collectd, graphite, grafana, zabb...Backend server monitoring and alarm system (collectd, graphite, grafana, zabb...
Backend server monitoring and alarm system (collectd, graphite, grafana, zabb...
 

Similaire à Trace End-User Request (조동진)

Restful web service
Restful web serviceRestful web service
Restful web servicesunguen lee
 
웹소켓 (WebSocket)
웹소켓 (WebSocket)웹소켓 (WebSocket)
웹소켓 (WebSocket)jeongseokoh
 
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Spider - 멀티 클라우드 인프라 연동(Multi-Cloud Infrastruc...
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Spider - 멀티 클라우드 인프라 연동(Multi-Cloud Infrastruc...Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Spider - 멀티 클라우드 인프라 연동(Multi-Cloud Infrastruc...
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Spider - 멀티 클라우드 인프라 연동(Multi-Cloud Infrastruc...Cloud-Barista Community
 
파이썬 웹 프로그래밍 2탄
파이썬 웹 프로그래밍 2탄 파이썬 웹 프로그래밍 2탄
파이썬 웹 프로그래밍 2탄 SeongHyun Ahn
 
Progressive Web App(PWA) 테코톡 발표자료 - 마르코(장원석)
Progressive Web App(PWA) 테코톡 발표자료 - 마르코(장원석)Progressive Web App(PWA) 테코톡 발표자료 - 마르코(장원석)
Progressive Web App(PWA) 테코톡 발표자료 - 마르코(장원석)Wonseok Jang
 
마이크로서비스 아키텍처로 개발하기
마이크로서비스 아키텍처로 개발하기마이크로서비스 아키텍처로 개발하기
마이크로서비스 아키텍처로 개발하기Jaewoo Ahn
 
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석Tommy Lee
 
WebSocket 기반 쌍방향 메시징
WebSocket 기반 쌍방향 메시징WebSocket 기반 쌍방향 메시징
WebSocket 기반 쌍방향 메시징trustinlee
 
Play node conference
Play node conferencePlay node conference
Play node conferenceJohn Kim
 
Cloud life seminar open shift,이준영(배포용)
Cloud life seminar   open shift,이준영(배포용)Cloud life seminar   open shift,이준영(배포용)
Cloud life seminar open shift,이준영(배포용)Software in Life
 
Cloud-Barista 제7차 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)
Cloud-Barista 제7차 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)Cloud-Barista 제7차 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)
Cloud-Barista 제7차 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)Cloud-Barista Community
 
Cloud-Barista 제4차 오픈 컨퍼런스 : CB-Spider / CB-Tumblebug : 멀티클라우드 인프라 서비스 (Multi-...
Cloud-Barista 제4차 오픈 컨퍼런스 : CB-Spider / CB-Tumblebug : 멀티클라우드 인프라 서비스 (Multi-...Cloud-Barista 제4차 오픈 컨퍼런스 : CB-Spider / CB-Tumblebug : 멀티클라우드 인프라 서비스 (Multi-...
Cloud-Barista 제4차 오픈 컨퍼런스 : CB-Spider / CB-Tumblebug : 멀티클라우드 인프라 서비스 (Multi-...Cloud-Barista Community
 
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE  [제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE 흥래 김
 
멀티클라우드 Service Mesh
멀티클라우드 Service Mesh멀티클라우드 Service Mesh
멀티클라우드 Service MeshJeong-Ho Na
 
Cloud-Barista 제1차 오픈세미나 - CB-Spider : 멀티 클라우드 인프라 연동 프레임워크(1st Open Seminar, ...
Cloud-Barista 제1차 오픈세미나 - CB-Spider : 멀티 클라우드 인프라 연동 프레임워크(1st Open Seminar, ...Cloud-Barista 제1차 오픈세미나 - CB-Spider : 멀티 클라우드 인프라 연동 프레임워크(1st Open Seminar, ...
Cloud-Barista 제1차 오픈세미나 - CB-Spider : 멀티 클라우드 인프라 연동 프레임워크(1st Open Seminar, ...Cloud-Barista Community
 
Cloud-Barista 제5차 오픈 컨퍼런스 : 멀티클라우드 인프라 연동 (CB-Spider)
Cloud-Barista 제5차 오픈 컨퍼런스 : 멀티클라우드 인프라 연동 (CB-Spider)Cloud-Barista 제5차 오픈 컨퍼런스 : 멀티클라우드 인프라 연동 (CB-Spider)
Cloud-Barista 제5차 오픈 컨퍼런스 : 멀티클라우드 인프라 연동 (CB-Spider)Cloud-Barista Community
 
Cloud-Barista 제6차 오픈 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)
Cloud-Barista 제6차 오픈 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)Cloud-Barista 제6차 오픈 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)
Cloud-Barista 제6차 오픈 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)Cloud-Barista Community
 
AWS Meetup 프리젠테이션.pdf
AWS Meetup 프리젠테이션.pdfAWS Meetup 프리젠테이션.pdf
AWS Meetup 프리젠테이션.pdfAlexLee226686
 

Similaire à Trace End-User Request (조동진) (20)

Restful web service
Restful web serviceRestful web service
Restful web service
 
웹소켓 (WebSocket)
웹소켓 (WebSocket)웹소켓 (WebSocket)
웹소켓 (WebSocket)
 
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Spider - 멀티 클라우드 인프라 연동(Multi-Cloud Infrastruc...
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Spider - 멀티 클라우드 인프라 연동(Multi-Cloud Infrastruc...Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Spider - 멀티 클라우드 인프라 연동(Multi-Cloud Infrastruc...
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Spider - 멀티 클라우드 인프라 연동(Multi-Cloud Infrastruc...
 
파이썬 웹 프로그래밍 2탄
파이썬 웹 프로그래밍 2탄 파이썬 웹 프로그래밍 2탄
파이썬 웹 프로그래밍 2탄
 
Progressive Web App(PWA) 테코톡 발표자료 - 마르코(장원석)
Progressive Web App(PWA) 테코톡 발표자료 - 마르코(장원석)Progressive Web App(PWA) 테코톡 발표자료 - 마르코(장원석)
Progressive Web App(PWA) 테코톡 발표자료 - 마르코(장원석)
 
마이크로서비스 아키텍처로 개발하기
마이크로서비스 아키텍처로 개발하기마이크로서비스 아키텍처로 개발하기
마이크로서비스 아키텍처로 개발하기
 
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석
 
Node.js 첫걸음
Node.js 첫걸음Node.js 첫걸음
Node.js 첫걸음
 
WebSocket 기반 쌍방향 메시징
WebSocket 기반 쌍방향 메시징WebSocket 기반 쌍방향 메시징
WebSocket 기반 쌍방향 메시징
 
Play node conference
Play node conferencePlay node conference
Play node conference
 
OpenStack Swift Debugging
OpenStack Swift DebuggingOpenStack Swift Debugging
OpenStack Swift Debugging
 
Cloud life seminar open shift,이준영(배포용)
Cloud life seminar   open shift,이준영(배포용)Cloud life seminar   open shift,이준영(배포용)
Cloud life seminar open shift,이준영(배포용)
 
Cloud-Barista 제7차 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)
Cloud-Barista 제7차 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)Cloud-Barista 제7차 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)
Cloud-Barista 제7차 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)
 
Cloud-Barista 제4차 오픈 컨퍼런스 : CB-Spider / CB-Tumblebug : 멀티클라우드 인프라 서비스 (Multi-...
Cloud-Barista 제4차 오픈 컨퍼런스 : CB-Spider / CB-Tumblebug : 멀티클라우드 인프라 서비스 (Multi-...Cloud-Barista 제4차 오픈 컨퍼런스 : CB-Spider / CB-Tumblebug : 멀티클라우드 인프라 서비스 (Multi-...
Cloud-Barista 제4차 오픈 컨퍼런스 : CB-Spider / CB-Tumblebug : 멀티클라우드 인프라 서비스 (Multi-...
 
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE  [제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
 
멀티클라우드 Service Mesh
멀티클라우드 Service Mesh멀티클라우드 Service Mesh
멀티클라우드 Service Mesh
 
Cloud-Barista 제1차 오픈세미나 - CB-Spider : 멀티 클라우드 인프라 연동 프레임워크(1st Open Seminar, ...
Cloud-Barista 제1차 오픈세미나 - CB-Spider : 멀티 클라우드 인프라 연동 프레임워크(1st Open Seminar, ...Cloud-Barista 제1차 오픈세미나 - CB-Spider : 멀티 클라우드 인프라 연동 프레임워크(1st Open Seminar, ...
Cloud-Barista 제1차 오픈세미나 - CB-Spider : 멀티 클라우드 인프라 연동 프레임워크(1st Open Seminar, ...
 
Cloud-Barista 제5차 오픈 컨퍼런스 : 멀티클라우드 인프라 연동 (CB-Spider)
Cloud-Barista 제5차 오픈 컨퍼런스 : 멀티클라우드 인프라 연동 (CB-Spider)Cloud-Barista 제5차 오픈 컨퍼런스 : 멀티클라우드 인프라 연동 (CB-Spider)
Cloud-Barista 제5차 오픈 컨퍼런스 : 멀티클라우드 인프라 연동 (CB-Spider)
 
Cloud-Barista 제6차 오픈 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)
Cloud-Barista 제6차 오픈 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)Cloud-Barista 제6차 오픈 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)
Cloud-Barista 제6차 오픈 컨퍼런스 : 멀티클라우드 인프라 서비스 연동 (CB-Spider)
 
AWS Meetup 프리젠테이션.pdf
AWS Meetup 프리젠테이션.pdfAWS Meetup 프리젠테이션.pdf
AWS Meetup 프리젠테이션.pdf
 

Trace End-User Request (조동진)

  • 1. Sarc Summit Summer 2016 by sarc.io June 11 삵 Trace End-User Request 조동진
  • 2. Sarc Summit Summer 2016 by sarc.io Trace End-User Request삵
  • 3. Sarc Summit Summer 2016 by sarc.io Trace End-User Request삵 예기치 않은 오류가 발생하였습니다. 관리자에게 연락하시기 바랍니다. E-mail : admin@sarc.com
  • 4. Sarc Summit Summer 2016 by sarc.io Trace End-User Request삵 단일 아키텍처의 경우 WASWEB 다중 아키텍처의 경우 WEB WEB WEB WEB WAS WAS WAS WAS WEB WEB WEB WEB WAS WAS WAS WAS proxy proxy proxy proxy 1 + 1 M + N L + M + N 로그분석
  • 5. Sarc Summit Summer 2016 by sarc.io Trace End-User Request삵 효율적인 로그분석 방법 문제 발생 시점의 의미 있는 정보를 기초로 로그분석의 범위를 최소화해야 한다. WEB WEB WEB WEB WAS WAS WAS WAS proxy proxy proxy proxy 의미 있는 정보들 § IP § User-Agent § User Id § Time § Cookie § HTTP Header - Session Cookie - Persistent Cookie
  • 6. Sarc Summit Summer 2016 by sarc.io Trace End-User Request삵 육하원칙 (5W1H) WASWEB 1. Cookie 정보 전송 2. WEB 위치정보 추가 3. Cookie/WEB /WAS정보 기록 4. WAS 위치정보 추가5. WEB 위치정보 추가 6. Cookie/WEB/WAS 위치정보 기록 § Who è Cookie § When è Header (Date) § Where è Header (임의로 생성) § What è Header (URI) § How è Header (request method, response code) § Why 적용방법 효율적인 로그분석 HTTP Header에 필요한 정보를 담아 server/client에 전송하고 로깅한다.
  • 7. Sarc Summit Summer 2016 by sarc.io Trace End-User Request삵 Access Log - apache combined 로그 형식 LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-agent}i"" combined § %h : 클라이언트(원격 호스트)의 IP 주소 § %l : 클라이언트의 RFC 1413 신원 § %u : 문서를 요청한 사용자의 userid § %t : The time that the request was received. § "%r“ : 클라이언트의 요청줄 § %>s : 서버가 클라이언트에게 보내는 상태코드 § %b : 응답 헤더를 제외한 클라이언트에게 보내는 내용의 크기 § "%{Referer}i“ : 클라이언트가 참조했다고 서버에게 알린 사이트 § "%{User-agent}i“ : 클라이언트 브라우저가 자신에 대해 알리는 식별정보
  • 8. Sarc Summit Summer 2016 by sarc.io Trace End-User Request삵 Access Log - apache 127.0.0.1 - - [10/Oct/2000:13:55:36 +0900] "GET /apache_pb.gif HTTP/1.1" 200 2326 "http://www.example.com/start.html" "Mozilla/4.08 [en] (Win98; I ;Nav)" combined 로그 내용 who when how what who who where how
  • 9. Sarc Summit Summer 2016 by sarc.io Trace End-User Request삵 Who - cookie Cookie 생성 – Servlet Filter String sarc_id = null; Cookie[] cookies = request.getCookies(); if (cookies != null) { for (int i = 0; i < cookies.length; i++) { if (cookies[i].getName().equals( "sarc_id" ) ) { sarc_id = cookies[i].getValue(); break; } } } if ( sarc_id == null ) { sarc_id = makeUniqueSarcId(); // make unique cookie value Cookie c = new Cookie( "sarc_id", sarc_id ); c.setMaxAge( 365 * 24 * 3600 ); c.setPath( "/" ); response.addCookie(c); }
  • 10. Sarc Summit Summer 2016 by sarc.io Trace End-User Request삵 Who - cookie Cookie 생성 및 로깅 WASWEB Set-cookie Set-cookie cookie cookie cookie cookie Logging Logging Logging Logging Generate Cookie1 2 3 테스트 결과 Cookie: JSESSIONID=3048957BA022C125E3780F75B DBCDFD1 Set-Cookie: sarc_id=1465276960295; Expires=Tue, 07- Jun-2017 05:23:40 GMT; Path=/ Cookie: JSESSIONID=3048957BA022C125E3780F75B DBCDFD1; sarc_id=1465276960295 1 2 Request Header Response Header
  • 11. Sarc Summit Summer 2016 by sarc.io Trace End-User Request삵 Where – HTTP Header HTTP Header request header를 통해 사용자 요청 경로를 WAS(App.)에 전달할 수 있고, response header를 통해 사용자 응답 경로를 client(Browser)에 전달할 수 있으며, 이 두 정보를 이용하여 사용자 요청/응답에 대한 경로 추적이 가능하다. WEB1 WEB2 WEB3 WEB4 WAS1 WAS2 WAS3 WAS4 Proxy3 WEB2 WAS4 Req. Header Proxy3 WEB2 WAS4 Res. Header
  • 12. Sarc Summit Summer 2016 by sarc.io Trace End-User Request삵 Where – HTTP Header Apache RequestHeader append web_loc WEB2 Header append web_loc WEB2 - RequestHeader 지시어와 Header 지시어를 이용하여 요청/응답의 경로를 HTTP header에 포함시킬 수 있다. - mod_headers - 주서버설정(server config)과 가상호스트(virtual host)에 설정이 가능하다.
  • 13. Sarc Summit Summer 2016 by sarc.io Trace End-User Request삵 Where – HTTP Header Tomcat & Application -Dwas_loc=WAS4 - -D 옵션을 사용하여 WAS 인스턴스의 정보를 system properties에 지정할 수 있다. String sarc_loc = System.getProperty( “was_loc" ); response.setHeader( “was_loc", was_loc ); - system properties값을 Response Header에 설정한다.
  • 14. Sarc Summit Summer 2016 by sarc.io Trace End-User Request삵 Logging - Apache Apache Log Format %...{Foobar}C : 서버가 수신한 요청에서 Foobar 쿠키의 내용 %...{Foobar}o : 응답에서 Foobar: 헤더의 내용 %...{Foobar}i : 서버가 수신한 요청에서 Foobar: 헤더의 내용 LogFormat "%h %{sarc_id}C %{web_loc}o %{was_loc}o %t "%r" %>s %b" sarc
  • 15. Sarc Summit Summer 2016 by sarc.io Trace End-User Request삵 Logging - Apache Web Browser Header Access Log
  • 16. Sarc Summit Summer 2016 by sarc.io Trace End-User Request삵 Logging - Application Key Factor § Transaction Unique Key § Cookie or unique id § Time § WEB location info § WAS location info § Debugging logs
  • 17. Sarc Summit Summer 2016 by sarc.io Trace End-User Request삵 사용자 정보 얻기 확장자 .har 파일로 저장 가능
  • 18. Sarc Summit Summer 2016 by sarc.io Trace End-User Request삵 사용자 정보 보기 https://ericduran.github.io/chromeHAR/
  • 19. Sarc Summit Summer 2016 by sarc.io Trace End-User Request삵 사용자 정보 보기
  • 20. Sarc Summit Summer 2016 by sarc.io Trace End-User Request삵 Q&A