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/