KKanging

[http 완벽 가이드] 21장 로깅과 사용 추적 본문

cs/http

[http 완벽 가이드] 21장 로깅과 사용 추적

천방지축 개발자 2023. 8. 20. 21:49

 

이 내용은 http 완변 가이드란 책을 읽고 정리한 내용입니다.

 

더 자세한 내용이 궁금하시면 책을 직접 읽어보시는 걸 추천합니다.

 

21장 로깅과 사용 추적

  • 거의 모든 서버와 프락시는 처리했던 HTTP 트랜잭션을 요약해서 기록해 놓는다.
    • 기록해놓는 행위== 로깅

1. 로그란 무엇인가

  • 대개 로깅을 하는 이유는 두 가지다.
    • 서버나 프락시의문제를 찾거나
    • 웹 사이트 접근 통계를 내려고 로깅을 한다.
  • 로깅을 하는 것은 유용하지만 하루에 트랜잭션을 수백만개나 처리하는 서버나 프락시에서 모든 데이터를 그대로 로깅하면 감당하기 힘들어진다.
    • 별 연관성이 없고 다시 볼일도 없는 데이터만 로깅하는 것이다.
  • 보통은 트랜잭션의 기본적인 항목들만 로깅한다.
  • 일반적으로 로깅하는 필드는 다음과 같다
    • HTTP 메서드
    • 클라이언트와 서버의 HTTP 버전
    • 요청받은 리소스의 URL
    • 응답의 HTTP 상태코드
    • 요청과 응답 메시지의 크기
    • 트랜잭션이 일어난 시간
    • Referer 와 User-Agent 헤더 값

2. 로그 포맷

  • 로그 포맷에는 여러 표준이 있다.

2.1 일반 로그 포맷

  • 요즘 사용하는 가장 일반적인 포맷 중 하나는, 그 이름도 적절한 일반 로그 포맷이다.

필드 설명

remotehost 요청한 컴퓨터의 호스트명 혹은 IP 주소
username ident 검색을 수행했다면, 인증된 요청자의 사용자 이름이 있음
auth-username 인증을 수행했다면, 인증된 요청자의 이름이 있음
timestamp 요청 날짜와 시간
request-line HTTP 요청의 행을 그대로 기술. 예를 들어 "GET /index.html HTTP/1.1
response-code 응답으로 보내는 HTTP 상태코드
response-size 응답엔터티의 Content-Length

2.2 혼합 로그 포멧

  • 많이 사용하는 또 다른 로그 포맷은 혼합 로그 포맷이다.
  • 이 포맷은 아파치 같은 서버들이 지원한다.

필드 설명

Referer Referer HTTP 헤더의 값
User-Agent User-Agent Referer HTTP 헤더의 값

2.3 넷스케이프 확장 로그 포멧

  • 넷스케이프가 상용 HTTP 애플리케이션이 되면서 , 다른 HTTP 애플리케이션 개발자들이 사용하는 서버의 여러 로그 포맷을 도입했다.

필드 설명

proxy-response-code 트랜잭션이 프락시를 거칠 경우, 서버에서 프락시로의 http 응답코드
proxy-response-size 트랜잭션이 프락시를 거칠 경우, 서버가 프락시에 전달하는 응답 엔터티의 Content-Length
client-request-size 클라이언트가 프락시로 보내는 요청의 본문이나 엔터티의 content-length
proxy-request-size 트랜잭션이 프락시를 거칠경우. 프락시가 서버에게 보내는 요청의 본문이나 엔터티의 Content-Length
client-request-hdr-size 클라이언트 요청 헤더의 바이트 길이
proxy-response-hdr-size 트랜잭션이 프락시를 거칠 경우, 프락시가 요청자에게 전송하는 요청 헤더의 바이트 길이
proxy-request-hdr-size 트랜잭션이 프락시를 거칠 경우, 프락시가 서버로 전송하는 요청헤더의 바이트 길이
server-response-hdr-size 서버 응답헤더의 바이트 길이
proxy-timestamp 트랜잭션이 프락시를 거칠 경우, 요청과 응답이 프락시를 통해 오가는 총 시간 (초단위)

3. 적중 계량하기

  • 원 서버는 결산을 하기 위해 상세 로그를 저장한다.
  • 하지만 서버로 가기 전에 캐시가 있어서 서버까지 요청이 오지 않음 그래서 기록이 남지 않는다.
  • 그래서 서버는 리소스에 대한 접근을 로깅할 수 있다.

3.1 개요

적중 계량 규약은 캐시와 서버가 접근 정보를 공유하고, 사용할 수 있는 캐시 리소스의 양을 제어할 수 있는 몇 가지 기초적은 기능에 관한HTTP 확장을 정의한다

3.2 Meter 헤더

  • 적중 계량 확장은 Meter 라는 새로운 헤더를 추가했다.
  • Cache-Control 헤더에 다양한 캐시 지시자를 기술할 수 있듯이, 캐시나 서버는 Meter 헤더에 사용량이나 보고에 관한 지시자가 기술 할 수 있다.

4. 개인 정보 보호에 대해

  • 로깅을 하는 것은 서버 입장에선 사업적으로 유용한 정보이나 사용자는 모를 수 있다.
  • 사용자의 개인정보를 위해 사용자에게 로깅하고 있다는 것을 알릴 필요가 있다.