HTTP 완벽가이드 21장

21장 로깅과 사용 추적

로깅을 알아보고, 어떤 HTTP 트랜잭션 정보를 기록하고, 로그 포맷에는 어떤것들이 있는지 알아본다.

1. 로그란 무엇인가?

  • 대체적으로 로깅을 하는 이유?
    • 서버나 프락시의 문제를 찾기 위해서
    • 웹 사이트 접근 통계를 내기위해서
  • 별 연관성이 없고 다시 볼 일도 없는 데이터만 로깅한다.
  • 보통은 트랜잭션의 기본적인 항목들만 로깅한다.
    • HTTP 메서드
    • 클라이언트와 서버의 HTTP 버전
    • 요청받은 리소스의 URL
    • 응답의 HTTP 상태 코드
    • 요청과 응답 메시지의 크기
    • 트랜잭션이 일어난 시간
    • Referer와 User-Agent 헤더 값

2. 로그 포맷

  • 상용 혹은 오픈 소스 HTTP 애플리케이션은 대부분, 표준 로그 포맷을 한 개 이상 지원한다.
  • 애플리케이션이 더 많은 표준 포맷을 지원하고 관리자가 사용할 수록 얻을 수 있는 이점이 많다.

2.1 일반 로그 포맷(Common Log Format)

  • 가장 일반적인 포맷이며, 많은 서버들이 기본으로 사용한다.
필드 설명
remotehost 요청한 컴퓨터의 호스트 명 혹은 IP주소
username ident 검색을 수행했다면, 인증된 요청자의 사용자 이름
auth-username 인증을 수행했다면, 인증된 요청자의 이름
teimstamp 요청 날짜와 시간
request-line HTTP 요청의 행을 그대로 기술
response-code 응답으로 보내는 HTTP 상태 코드
response-size 응답 엔터티의 Content-Length, 아무런 엔터티를 반환하지 않으면 값이 0이 된다.

일반 로그 포맷 엔트리의 몇가지 예

209.1.32.44 - - [03/Feb/2020:14:15:00 -0400] "GET / HTTP/1.0" 200 1024
bebiangel.github.io - dg [03/Feb/2020:14:15:00 -0400] "GET / HTTP/1.0" 200 477
bebiangel.github.io - dg [03/Feb/2020:14:15:00 -0400] "GET /foo HTTP/1.0" 404 0
필드 엔트리1 엔트리2 엔트리3
remotehost 209.1.32.44 bebiangel.github.io bebiangel.github.io
username 없음 없음 없음
auth-username 없음 dg dg
teimstamp 03/Feb/2020:14:15:00 -0400 03/Feb/2020:14:15:00 -0400 03/Feb/2020:14:15:00 -0400
request-line GET / HTTP/1.0 GET / HTTP/1.0 GET /foo HTTP/1.0
response-code 200 200 404
response-size 1024 477 0

3. 적중 계량하기

  • 캐시는 수많은 HTTP요청을 처리하므로, 요청이 원 서버 까지 오지 않더라도 정상적으로 처리될 수 있어서, 클라이언트가 콘텐츠에 접근했다는 기록이 남지 않아 로그 파일에 누락이 발생하게 된다.
  • 캐시를 파기 시킨다면, 문제 없이 로깅을 하지만, 요청에 대한 응답속도가 느려지고 원서버와 네트워크의 부하가 가중되는 문제를 야기한다.
  • 적중 계량 규약은 HTTP의 확장으로, 캐시가 정기적으로 캐시 접근 통계를 원 서버에 보고하도록 한다.
  • 완벽하진 않지만, 서버가 원하는 통계 정보를 받아볼 수 있는 방법을 제공한다.

댓글

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×