Apache의 액세스 로그 이해


134

내 액세스 로그에서이 줄의 각 항목은 무엇을 의미합니까?

127.0.0.1--[05 / Feb / 2012 : 17 : 11 : 55 +0000] "GET / HTTP / 1.1"200140 "-" "Mozilla / 5.0 (Windows NT 6.1; WOW64) AppleWebKit / 535.19 (KHTML 등) 게코) Chrome / 18.0.1025.5 Safari / 535.19 "

답변:


237

결합 된 로그 형식을 사용하고있는 것 같습니다 .

LogFormat "% h % l % u % t \"% r \ "%> s % b \"% {Referer} i \ "\"% {User-agent} i \ ""결합

  • % h는 원격 호스트 (예 : 클라이언트 IP)
  • % 1은 identd에 의해 결정된 사용자의 신원입니다 (신뢰할 수 없기 때문에 일반적으로 사용되지 않음)
  • % u는 HTTP 인증에 의해 결정된 사용자 이름입니다
  • % t는 요청을받은 시간입니다.
  • % r은 클라이언트의 요청 라인입니다. ( "GET / HTTP / 1.0")
  • %> s는 서버에서 클라이언트로 전송 된 상태 코드입니다 (200, 404 등).
  • % b는 클라이언트에 대한 응답의 크기 (바이트)입니다
  • Referer는 존재하는 경우 HTTP 요청 (이 요청이 시작된 페이지의 URL 포함 )의 Referer 헤더 입니다 "-".
  • User-agent는 브라우저 식별 문자열입니다.

포맷터의 전체 (?) 목록은 여기 에서 찾을 수 있습니다 . 문서의 동일한 섹션에는 다른 일반적인 로그 형식도 나열되어 있습니다. 로그가 이처럼 보이지 않는 독자는 Apache 구성에서 사용중인 패턴을 찾을 수 있습니다.


사용자 에이전트 이후 마지막에 숫자 그림 (19)이 무엇인지 궁금합니다.
ivanceras

2
@ivanceras 535.19는 사용 된 웹킷 버전이므로 사용자 에이전트 문자열의 일부입니다 (또한 사용자 에이전트를 포함하는 따옴표 안에
포함됨

4
다음과 같이 사용자 에이전트 뒤에 4 개의 추가 필드가 있습니다. ... "Mozilla / 5.0 (Windows NT 5.1; rv : 16.0) Gecko / 20100101 Firefox / 16.0"369 74500-567 무엇을 나타 냅니까?
내 account_ram

9

또한 로그의 200140 섹션 이후 "-"의 의미를 이해하지 못합니다.

이 값은 Joachim이 설명한 참조 자에 해당합니다. 그래도 대시가 표시되면 시작할 참조 값이 없다는 의미입니다 (예 : 사용자가 브라우저에 URL을 입력 한 것처럼 특정 목적지로 바로 이동 함)


7

그리고 " Mozilla / 5.0 (Windows NT 6.1; WOW64) AppleWebKit / 535.19 (Kcko, Gecko) Chrome / 18.0.1025.5 Safari / 535.19 "는 무엇을 의미합니까?

이는 브라우저 식별 문자열 인 User-Agent의 값입니다.

이러한 이유로 대부분의 웹 브라우저는 다음과 같이 User-Agent 문자열 값을 사용합니다.

Mozilla / [버전] ([시스템 및 브라우저 정보]) [플랫폼] ([플랫폼 세부 사항]) [확장자]. 예를 들어, iPad의 Safari는 다음을 사용했습니다.

Mozilla / 5.0 (iPad; U; Mac OS X와 ​​같은 CPU OS 3_2_1; en-us) AppleWebKit / 531.21.10 (Gcko와 같은 KHTML) Mobile / 7B405이 문자열의 구성 요소는 다음과 같습니다.

Mozilla / 5.0 : 이전에 Mozilla 렌더링 엔진과의 호환성을 나타내는 데 사용되었습니다. (iPad; U; Mac OS X와 ​​같은 CPU OS 3_2_1; en-us) : 브라우저가 실행중인 시스템의 세부 사항. AppleWebKit / 531.21.10 : 브라우저가 사용하는 플랫폼. (Gcko와 같은 KHTML) : 브라우저 플랫폼 세부 사항. Mobile / 7B405 : 브라우저에서 직접 또는 타사를 통해 사용할 수있는 특정 개선 사항을 나타 내기 위해 브라우저에서 사용합니다. 그 예로는 Live Meeting 서비스가 소프트웨어가 이미 설치되어 있는지 알 수 있도록 내선 번호를 등록하는 Microsoft Live Meeting이 있습니다. 즉, 회의 참가에 능률적 인 경험을 제공 할 수 있습니다.

이 값은 최종 사용자가 사용중인 브라우저를 식별하는 데 사용됩니다.

보내다


내로드 밸런싱 환경에서 Apache로드 밸런서 서버 뒤에 4 개의 서빙 노드가 숨겨져 있습니다. 최근에 사용할 수없는 문제가 발생했습니다. 디버깅하는 동안로드 밸런서에서 504 상태의 액세스 로그를 찾았습니다. 이것처럼 보입니다. {Ip 주소}--[날짜] "POST url http / 1.1"504 247 "-" "-"이제 내 4 개의 응용 프로그램 서버 노드 중 하나가 다른 것보다 시간을 더 자주 초과한다고 생각합니다. 그러나이 로그는 요청이 전달되어 시간 초과 된 서버에 대한 실마리를 제공하지 않습니다. 요청이 전달되는 노드의 IP를 어떻게 기록 할 수 있습니까?
교수

다음 옵션을 제안합니다. a)로드 밸런서 로그를 활성화하고 확인합니다. b) 각 vm의 메모리 사용률, CPU, IO를 확인하고 모두 동일한 지 확인합니다. c) 특정 날짜의 각 VM에 대한 요청 수를 계산합니다. 그들은 같은 주위에 있어야합니다. 그렇지 않으면 Load Balancer가 서버가 핑에 응답하지 않는 것을 발견 할 수 있으므로 요청을 보내지 않습니다.
vsingh
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.