메뉴 닫기

아파치의 httpd 로그파일 상세 분석

httpd 로그 상세 분석

로그툴 제작에 많은 도움이 되시기 바랍니다. 

도움이 되셨다면 제 홈페이지 많이 방문해 주세요. 도움되는글 많이 가져가세요. 
단, 꽁짜는 아닙니다.. 무섭죠? ^^* 

제가 영어 실력이 모자라서 잘못 해석된 부분도 있으니 연락주시면 
수정해서 다시 올리겠습니다. 
=========================================================================== 

로그분석 프로그램 개발에 활용도 가능합니다. ( 심심할때 만들자!!! ) 
=========================================== 
* 로그 파일은 아래의 정보로 얼마나 웹관리에 유용한 정보를 추출하느냐가 
로그툴의 좋은지 나쁜지를 평가하는 관건이고, 
결과물을 얼마나 보기쉽고, 사용하기 쉽게 출력하느냐 일것 같습니다. 

통계학적 지식 : 55 % 
프로그래밍지식 : 35 % 
기타(디자인및..) : 10 % 

* 시장성.. : 제 생각에는 서버 시장의 40 % 정도는 로그툴을 사용해야 될것 같습니다. 
신빙성 있는 자료 현재 없음. ( 찾아서 분석하면 +- 오차 10%정도 날듯 ) 

아파치 로그파일 기록되는 위치 

/var/log/httpd/acccess.log 

로그 기록 내용 

211.36.215.78 – manager [22/Jun/2000:23:09:09 +0900] “GET / HTTP/1.1” 200 5 
————- — —- ————————— — — ——– — – 
1 2 3 4 5 6 7 8 9 

1 : 접속한 클라이언트의 IP 주소, 혹은 도메인 
2 : REMOTE_IDENT (RFC 931 identification (아이데터퍼케이션:동일함 확인) 
– 서버가 RFC 931 을 지원하는 경우 이 환경 변수에 클라이언트 시스템에서 
CGI프로그램을 실행시킨 사용자 이름이 저장된다고 합니다. 몰겠습니다. 
아직 한번도 여기 뭔가가 찍힐것 확인못해서.. 
3 : 사용자이름( .htaccess .htpasswd 에 정의된 사용자 id ) 
4 : 클라이언트(사용자 브라우저)의 접속시간정보 ( httpd 접속시간 ) 
(구성 : [day/month/year:hour:minute:second zone]) 
5 : 클라이언트(사용자 브라우저) 요청종류 ( GET , POST ) 
6 : 클라이언트가 요청한 홈페이지 URL 주소 ( 요청한 자료 & 자료위치 ) 
7 : 프로토콜 버젼 
8 : 상태코드 ( 예. 200 정상처리 ) 
9 : 전송데이터 크기 
상태코드 일부 304 은 – (하이픈) 로 표시 
hits – 모든상태코드포함 
files – 상태코드 200번만 

통계 프로그램 Webalizer(웹알리저) 2.00 기준 입니다. 

응답 코드별 히트수 
—————— 
아래 코드는 상태 코드 입니다. 
클라이언트가 서버에게 요청했을때 결과에 대한 상태 코드죠.. 

여기서 설명한 상태 코드 외에도 더 있지만 차후 추가 하겠습니다. 

이 용어는 알아두셔야 될듯.. 

* entity body 
엔터티 본체는 요청/응답 메시지를 통해서 전달될 수 있는 
데이타 자체를 나타내는 바이트 스트림(byte stream:흐름)이다. 
? 말은 거창 한데.. 그냥 데이타 보내고 받는 부분입니다. 
===================================================== 
이 스트림은 엔터티 헤더에서 지정되는 데이타 타입과 인코딩 형식을 
============= ======================== 
갖게 된다. 

Code 200 – OK 오케바링~ 

사용자가 요청한 (get , post) 가 성공적으로 수행되었을때.. 
요청한 처리 결과를 클라이언트에게 전달되는 정보는 사용된 메소드(method:방법) 
에 따라서 다라진다.. 위에 get 이나 post 가 있습니다. –;.. 

Code 206 – Partial(퍄셜) Content(컨텐트) ( 일부 내용 ) 

서버가 요청을 처리 했지만 클라이언트에게 일부만 전달되었을때.. 
———————————————————— 

Code 301 – Moved Permanently(퍼머렌트리) ( 영구히,불변하게 이동했따 ) 

요청된 자원의 URL 값이 완전히 변경되었으므로 앞으로는 새로운 URL 값을 
——————————————————————— 
사용하여야 한다. 새로운 URL 값은 location(로케이션,위치) 헤더를 통해서 
—————- 
클라이언트에 전달된다. 또한, HEAD method 를 제외한 모든 경우에 요청 
메시지의 entity body를 통해서 새로운 URL의 하이퍼 링크를 포함하는 
짧은 메세지를 전달해 주어야 한다. 
웹 브라우저는 post method 를 사용한 요청의 결과로 301 상태코드를 전달받는 
경우에는 자동으로 새로운 URL에 접속을 해서는 안된다. 
반드시, 사용자의 확인을 거쳐야 한다. 
——————————————- 

Code 304 – Not Modified ( 수정 모했따 ) 

conditional(컨디셔널) 잠정적인(조건부의,가정적인) get method가 사용된 경우에 
전달된다. Request(리퀘스트 : 요구)를 처리한 결과 If-Modified-since 헤더에 
지정된 날짜/시간 이래로 지정된 문서가 변경된 사실이 없는 경우 서버는 
이 상태코드로 응답해야 한다. 이때, entity body(실제 본문) 는 전송되지 않는다. (?) 
————————————- 
웹브라우저 캐쉬사용 출력 속도 향상 

Code 400 – Bad Request ( 잘못 요청 ) 

Request(리퀘스트:요청) 메세지의 syntax(신택스:구문)가 잘못되어서 
서버가 request 를 처리할 수 없다. 재 접속을 하는 경우에 클라이언트는 
반드시 올바른 request메시지를 사용해야 한다. 

Code 401 – Unauthorized (언어더라이즈드 : 권한없는, 허가받지 않은 ) 

Request가 user authentication을 필요로 한다는 것을 클라이언트에게 
알려주기 위해서 사용된다. WWW-Authenticate 헤더를 통해서 
요청된 자원에 적용되는 challenge를 전달한다. 
401 response(리스판(폰)스:감응,응답) 를 받은 클라이언트는 적절한 
Authorization(어더리제이션:위임,권한부여) 
credentials(크리덴셜:신용즐명물)를 
포함하는 Authorization 헤더와 함께 다시 Request 메시지를 전송한다. 
Request 메시지에 그와 같은 Authorization credentials이 포함된 경우에 

401 상태코드가 전달되면 user authentication(어던트케잇:인증) 
———————————————————– 
이 실패한 것을 나타낸다. – 인증 실패 
———————— 

Code 404 – Not Found ( 못 찾았다 ) 

Request-URL(요청 URL)에 해당하는 자원을 찾을 수 없을 경우에 사용된다. 
그런 상태가 일시적인 것인지 아니면 언제나 그렇게 되는지를 나타내는 
어떤 정보도 전달되지 않는다. 
이런 상태를 클라이 언트에게 알리고 싶지 않을 경우에는 403 상태코드 
를 대신 사용해도 된다. 

* 403 코드 : Forbidden(퍼비든:출입금지구역) 

■ 일반적 의미 

● 페이지뷰(page view) 

웹사이트의 특정 웹페이지에 이용자가 접속하여 페이지의 내용이 브라우저에 나타날때, 그 1회의 접속을 1 페이지뷰라 정의한다. 
페이지뷰는 동일인이 중복 접속하여도 그 숫자가 계속 증가하게 설정이 가능하다. 

● 히트(Hit)수 

한명의 사용자가 웹서버의 한파일에 접속하는 것을 말한다. 히트수는 웹사이트의 인기를 측정하는 단위로 사용되고 있지만 
사실 잘못 알고 있는 것이다. 

어떤 사이트의 히트수가 `10’이라고 해서 10명의 이용자가 방문한 것은 아니다. 요컨대, 히트란 서버의 한 파일 접속수이기 때문에 
한 사이트에 이미지가 10개가 포함되어 있다면 히트수는 이미지 10개와 웹페이지 1개를 포함한 11이 되는 것이다. 

통계 프로그램 Webalizer(웹알리저) 2.00 기준 입니다. 

● Hits 

Any request made to the server which is logged, is considered a ‘hit’. 
The requests can be for anything… html pages, graphic images, audio 
files, cgi scripts, etc… Each valid line in the server log is 
counted as a hit. This number represents the total number of requests 
that were made to the server during the specified report period. 

설명이 좀이상한건지 .. 전 이거 해석해도 정확하게 이해가 안갑니다… 
돌머리라서 그런지.. 

※ 암튼 모든 서버 요청 기록을 말합니다. 
위에 일반적인 hit 수 개념으로 생각하시면 됩니다. 

● Files 

Some requests made to the server, require that the server then send 
something back to the requesting client, such as a html page or graphic 
image. When this happens, it is considered a ‘file’ and the files 
total is incremented. The relationship between ‘hits’ and ‘files’ can 
be thought of as ‘incoming requests’ and ‘outgoing responses’. 

설명이 좀이상한건지 .. 전 이거 해석해도 정확하게 이해가 안갑니다… 
돌머리라서 그런지.. 

※ 이거뚜 좀 이상해서 소스 뒤적여 봤거든요.. 

이건 위에 말하는 outgoing responses(나가는응답?) 중에서도.. 
정확하게 나간거.. 그러니까 제가 위에 상태코드 적어 놓은거중에서도.. 

200 번으로 끝나는 수치의 총계 입니다.. 
==================================== 

● Pages / pageviews 

This does not include the other stuff that goes into a document, 
such as graphic images, audio clips, etc… 

이미지, 오디오 클립, 기타제외 
초기값 ‘.htm’, ‘.html’, ‘.cgi’ 페이지 만인정 

A lot of sites will probably define other extensions, 
such as ‘.phtml’, ‘.php3’ and ‘.pl’ as pages as well. 

많은 사이트는 더우기 ‘.phtm의 같은 다른 확장자 , 
‘.php3’과 ‘.pl’ 만큼 페이지로 아마 규정할 것입니다. 

Some other programs (and people 🙂 refer to this as ‘Pageviews’. 

” 페이지 뷰 ” 라고도 한답니다. 

● Sites (사이트) 

/var/log/httpd/acccess.log 

로그 기록 내용 

211.36.215.78 – manager [22/Jun/2000:23:09:09 +0900] “GET / HTTP/1.1” 200 5 
————- — —- ————————— — — ——– — – 
1 2 3 4 5 6 7 8 9 

1 : 접속한 클라이언트의 IP 주소, 혹은 도메인 
============================================ 
2 : REMOTE_IDENT (RFC 931 identification (아이데터퍼케이션:동일함 확인) 
– 서버가 RFC 931 을 지원하는 경우 이 환경 변수에 클라이언트 시스템에서 
CGI프로그램을 실행시킨 사용자 이름이 저장된다고 합니다. 몰겠습니다. 
아직 한번도 여기 뭔가가 찍힐것 확인못해서.. 
3 : 사용자이름( .htaccess .htpasswd 에 정의된 사용자 id ) 
4 : 클라이언트(사용자 브라우저)의 접속시간정보 ( httpd 접속시간 ) 
(구성 : [day/month/year:hour:minute:second zone]) 
5 : 클라이언트(사용자 브라우저) 요청종류 ( GET , POST ) 
6 : 클라이언트가 요청한 홈페이지 URL 주소 ( 요청한 자료 & 자료위치 ) 
7 : 프로토콜 버젼 
8 : 상태코드 ( 예. 200 정상처리 ) 
9 : 전송데이터 크기 
상태코드 일부 304 은 – (하이픈) 로 표시 
hits – 모든상태코드포함 
files – 상태코드 200번만 

Each request made to the server comes from a unique ‘site’, which can 
be referenced by a name or ultimately, an IP address. The ‘sites’ 
number shows how many unique IP addresses made requests to the server 
during the reporting time period. This DOES NOT mean the number of 
unique individual users (real people) that visited, which is impossible 
to determine using just logs and the HTTP protocol (however, this 
number might be about as close as you will get). 

영문 설명에 좀 그래서.. 원문이 더 쉬우면 참고하시구요.. 

1번의 경우로 사이트 수를 검사할수밖에 없습니다, 이 수가 각각의 사용자 
즉 IP 1개가 1사용자를 의미하지는 않습니다. *^^ 

(실제 사용자)공정한 기록을 결정하기에는 어렵습니다. 

★ 왜일까요? 

인터넷 사용자 중에는 방화벽이나 IP 공유 기능을 이용해 인터넷 상에서 
사용되는 IP 가 아닌 내부 IP (192.168.0.1 ~ 또는 172.0.0.1 ~ etc..) 로 사용 
하는 경우가 있습니다. 그럴경우 인터넷 상의 IP 정의는 1개지만.. 
사용자는 수백명 또는 수천명이 될수도 있습니다. 

그래서 정확한 기록 결정을 내리기가 힘들다는 거죠.. *^^ 참고 되셨길.. 

● Visits (방문) 

The default timeout value is 30 minutes (can be changed), 
so if a user visits your site at 1:00 in the afternoon, 
and then returns at 3:00, two visits would be registered. 

디폴트 타임아웃 값은 30분(변경할수있다) 입니다, 
=============================================== 

그렇게 사용자가 오후에 1시00분에(서) 당신의 사이트를 방문한다면, 
3시00분에(서) 돌아옵니다, 2 의 방문이 기록되었습니다. 
========================== 
Note: Visits only occur on 
PageType requests, that is, for any request whose URL is one of the 
‘page’ types defined with the PageType option. Due to the limitation 
of the HTTP protocol, log rotations and other factors, this number 
should not be taken as absolutely accurate, rather, it should be 
considered a pretty close “guess”. 

페이지 형은 PageType 옵션을 가지고 정의를 내렸습니다. 

★ 현재 셋팅 상태 

PageType htm* 
PageType cgi 
PageType moum 
PageType phtml 
PageType php3 
PageType pl 

● KBytes 

/var/log/httpd/acccess.log 

로그 기록 내용 

211.36.215.78 – manager [22/Jun/2000:23:09:09 +0900] “GET / HTTP/1.1” 200 5 
————- — —- ————————— — — ——– — – 
1 2 3 4 5 6 7 8 9 

1 : 접속한 클라이언트의 IP 주소, 혹은 도메인 
============================================ 
2 : REMOTE_IDENT (RFC 931 identification (아이데터퍼케이션:동일함 확인) 
– 서버가 RFC 931 을 지원하는 경우 이 환경 변수에 클라이언트 시스템에서 
CGI프로그램을 실행시킨 사용자 이름이 저장된다고 합니다. 몰겠습니다. 
아직 한번도 여기 뭔가가 찍힐것 확인못해서.. 
3 : 사용자이름( .htaccess .htpasswd 에 정의된 사용자 id ) 
4 : 클라이언트(사용자 브라우저)의 접속시간정보 ( httpd 접속시간 ) 
(구성 : [day/month/year:hour:minute:second zone]) 
5 : 클라이언트(사용자 브라우저) 요청종류 ( GET , POST ) 
6 : 클라이언트가 요청한 홈페이지 URL 주소 ( 요청한 자료 & 자료위치 ) 
7 : 프로토콜 버젼 
8 : 상태코드 ( 예. 200 정상처리 ) 
9 : 전송데이터 크기 
==================== 
상태코드 일부 304 은 – (하이픈) 로 표시 
hits – 모든상태코드포함 
files – 상태코드 200번만 

전송데이터의 모두 합한 총계 입니다. 

Note: A kilobyte is 1024 bytes, not 1000 🙂 

킬로 바이트는 1024 바이트 입니다. 1000 바이트가 아닙니다. 

※ 하드 용량의 차이에 관해서 여기서 약간 언급을 해야 겠습니다. 

– 하드 용량을 보면 15G 를 짜리는 사면 제조회사마다 약간의 차이가 
있을거에요. 그런 의문 가지신적 없는지? 

바로 위와 같은 계산 방식 때문입니다. 1 Kbyte 를 1024로 하느냐.. 
1000 으로 하느냐.. 전산을 전공한 분이라면 1024가 맞지만 수치상으로 
보자면 1000 도 맞는 표현이죠.. 

교묘한 상술의 효과죠 ^^* xxx 한 넘들… 

하드는 대부분이 1000 을 기준으로 합니다.!!! 1024 기준이 아님!! 

● Top Entry and Exit Pages 

The Top Entry and Exit tables give a rough estimate of what URL’s 
are used to enter your site, and what the last pages viewed are. 
Because of limitations in the HTTP protocol, log rotations, etc… 
this number should be considered a good “rough guess” of the actual 
numbers, however will give a good indication of the overall trend in 
where users come into, and exit, your site.

 

 

[polldaddy rating=”7739789″]