Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

Trace End-User Request (조동진)

255 vues

Publié le

Sarc Summit Summer 2016 by sarc.io
발표자 : 조동진

Publié dans : Internet
  • Soyez le premier à commenter

Trace End-User Request (조동진)

  1. 1. Sarc Summit Summer 2016 by sarc.io June 11 삵 Trace End-User Request 조동진
  2. 2. Sarc Summit Summer 2016 by sarc.io Trace End-User Request삵
  3. 3. Sarc Summit Summer 2016 by sarc.io Trace End-User Request삵 예기치 않은 오류가 발생하였습니다. 관리자에게 연락하시기 바랍니다. E-mail : admin@sarc.com
  4. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 15. Sarc Summit Summer 2016 by sarc.io Trace End-User Request삵 Logging - Apache Web Browser Header Access Log
  16. 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. 17. Sarc Summit Summer 2016 by sarc.io Trace End-User Request삵 사용자 정보 얻기 확장자 .har 파일로 저장 가능
  18. 18. Sarc Summit Summer 2016 by sarc.io Trace End-User Request삵 사용자 정보 보기 https://ericduran.github.io/chromeHAR/
  19. 19. Sarc Summit Summer 2016 by sarc.io Trace End-User Request삵 사용자 정보 보기
  20. 20. Sarc Summit Summer 2016 by sarc.io Trace End-User Request삵 Q&A

×