250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- HTTP
- Kruskal
- 최소힙
- MSA
- 연결리스트
- 최대 힙
- 완전이진트리
- posix
- 이분탐색이란
- 강화학습
- 스케줄링
- 자료구조
- 백준 장학금
- python
- 운영체제
- SpringSecurity
- AVL트리
- jpa n+1 문제
- heapq
- 힙트리
- spring
- 연결리스트 종류
- 엔티티 그래프
- 멀티프로세서
- 알고리즘
- 백준장학금
- 점근적 표기법
- JPA
- 프로세스
- JVM
Archives
- Today
- Total
KKanging
[http 완벽 가이드] 21장 로깅과 사용 추적 본문

이 내용은 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. 개인 정보 보호에 대해
- 로깅을 하는 것은 서버 입장에선 사업적으로 유용한 정보이나 사용자는 모를 수 있다.
- 사용자의 개인정보를 위해 사용자에게 로깅하고 있다는 것을 알릴 필요가 있다.
'cs > http' 카테고리의 다른 글
[http 완벽 가이드] 20장 리다이렉션과 부하 균형 (0) | 2023.08.20 |
---|---|
[http 완벽 가이드] 18장 웹 호스팅 (0) | 2023.08.20 |
[http 완벽 가이드] 17장 내용 협상과 트랜스코딩 (1) | 2023.08.20 |
[http 완벽 가이드] 16장 국제화 (0) | 2023.08.20 |
[http 완벽 가이드] 15장 엔터티와 인코딩 (0) | 2023.08.20 |