다음을 통해 공유


IIS 8.5에서 추적을 사용하여 실패한 요청 문제 해결

적용 대상: 인터넷 정보 서비스 8.5

소개

요청 기반 추적은 독립 실행형 IIS 서버와 WAWS(Microsoft Azure 웹 사이트)에서 모두 사용할 수 있습니다. 발생한 문제를 재현할 수 있는 경우 요청 기반 추적은 요청에 정확히 어떤 일이 일어나고 있는지, 왜 발생하는지를 확인하는 방법을 제공합니다. 일부 요청의 성능 저하, 다른 요청의 인증 관련 오류 또는 ASP 또는 ASP.NET 서버 500 오류와 같은 문제는 발생할 때 문제의 추적을 캡처하지 않는 한 종종 문제 해결이 어려울 수 있습니다. 이 문서에서는 IIS 서버에서 실패한 요청 추적에 대해 설명합니다. Microsoft Azure 웹 사이트에서 이 작업을 수행하는 방법에 대한 자세한 내용은 Visual Studio를 사용하여 Azure 앱 Service에서 앱 문제 해결을 참조하세요.

실패한 요청 추적은 요청에 대한 추적 이벤트를 버퍼링하고 요청이 실패하는 경우에만 디스크로 플러시하도록 설계되었으며, 여기서 오류정의를 제공합니다. 요청이 특정 HTTP 상태 코드(예: 401 또는 404)를 반환하는 이유를 알고 싶거나 요청이 처리하는 데 다소 걸리거나 응답하지 않는 경우 실패한 요청 추적을 사용할 수 있습니다.

이 문서에 설명된 작업은 다음과 같습니다.

  • 실패한 요청 추적 모듈을 사용하도록 설정합니다.
  • 실패한 요청 추적 로그 파일 의미 체계 구성
  • 오류 정의 및 추적할 영역을 포함하여 실패한 요청 추적을 유지할 URL을 정의합니다.
  • 오류 조건을 생성하고 결과 추적을 확인합니다.

필수 조건

IIS 설치

이 문서에 설명된 작업을 수행하기 전에 IIS 8.5를 설치합니다. http://localhost/ 인터넷 정보 서비스 시작 화면이 표시되는지 찾아서 확인합니다. IIS가 설치되지 않은 경우 설치 지침은 Windows Server 2012 R2에 IIS 8.5 설치를 참조하세요. IIS를 설치할 때 다음 기능도 설치해야 합니다.

  • ASP.NET 3.5(웹 서버(IIS)/에서 웹 서버/애플리케이션 개발 기능/ASP.NET 3.5)
  • ASP.NET 4.5(웹 서버(IIS)/ 웹 서버/애플리케이션 개발 기능/ASP.NET 4.5)
  • 추적(웹 서버(IIS)/에서 웹 서버/상태 및 진단 - 추적)

관리자 권한으로 로그인

로그인하는 데 사용하는 계정이 관리자 계정인지 또는 관리자 그룹에 있는지 확인합니다.

참고 항목

관리자 그룹에 있는 것은 기본적으로 전체 관리자 사용자 권한을 부여하지 않습니다. 애플리케이션 아이콘을 마우스 오른쪽 단추로 클릭하고 관리자 권한으로 실행을 선택하여 애플리케이션을 관리자 권한으로 실행해야 합니다.

백업 만들기

다음 작업을 수행하기 전에 구성 파일을 백업합니다.

  1. Windows 로고 키와 X 키를 동시에 선택하고 명령 프롬프트(관리자)를 선택한 다음, 예를 선택합니다.

    Windows 작업 표시줄의 명령 프롬프트 관리자 스크린샷

  2. 명령 프롬프트에서 다음 명령을 실행합니다.

    %windir%\system32\inetsrv\appcmd add backup cleanInstall
    

    이 명령은 %windir%\system32\inetsrv\backup에 백업 구성 파일이 포함된 cleanInstall 폴더를 만듭니다.

샘플 콘텐츠 만들기

  1. %systemdrive%\inetpub\wwwroot로 이동합니다.

  2. 기존 콘텐츠를 복원하려는 경우 콘텐츠를 안전한 위치로 이동하거나 삭제합니다.

  3. 빈 파일을 만들고 이름을 test.asp.

  4. 명령 프롬프트에서 \inetpub\wwwroottest.asp 파일로 이동합니다.

  5. test.asp 파일에 다음 콘텐츠를 붙여넣습니다.

    <h2>Failed Request Tracing Lab</h2><br>
    <br>Today's date is <% response.write(Date()) %>
    

ASP 사용 안 함

이 작업에 대해 ASP를 사용하지 않도록 설정해야 합니다. ASP는 예제와 이 문서의 작업 용도로만 사용할 수 없습니다.

ASP를 사용하지 않도록 설정하려면 다음 단계를 수행합니다.

  1. IIS 관리자를 열고 서버를 선택합니다.

  2. ISAPI 및 CGI 제한을 두 번 클릭합니다.

    선택한 I S AP I 및 CG I 제한을 표시하는 I S 관리자 창의 스크린샷

  3. ISAPI 및 CGI 제한 창에서 활성 서버 페이지를 선택합니다. 작업 창에서 거부를 선택하여 ASP를 사용하지 않도록 설정합니다. 활성 서버 페이지는 허용되지 않음으로 표시됩니다.

    선택한 활성 서버 페이지를 표시하는 I S AP I 및 CG I 제한 창의 스크린샷 [작업] 창에서 거부 옵션이 선택되어 있습니다.

실패한 요청 추적 사용

실패한 요청 추적을 사용하도록 설정한 후에는 로그 파일의 경로를 구성해야 합니다. 이 섹션에서는 기본 웹 사이트에 대해 실패한 요청 추적을 사용하도록 설정하고 로그 파일을 저장할 위치를 지정한 다음 실패 로그를 생성할 오류를 구성합니다.

1단계: 사이트에 대해 실패한 요청 추적을 사용하도록 설정하고 로그 파일 디렉터리 구성

  1. 관리자 사용자 권한이 있는 명령 프롬프트를 열고 %systemdrive%\windows\system32\inetsrv로 이동합니다.

  2. IIS 관리자를 열려면 실행 inetmgr 합니다.

  3. 연결 창에서 컴퓨터 이름을 확장하고 사이트를 확장한 다음 기본 웹 사이트를 선택합니다.

  4. 작업 창의 구성에서 실패한 요청 추적...을 선택합니다.

    구성 탭에서 실패한 요청 추적 옵션을 보여 주는 작업 창의 스크린샷이 강조 표시됩니다.

  5. 웹 사이트 실패한 요청 추적 설정 편집 대화 상자에서 다음을 구성합니다.

    • 사용 확인란을 선택합니다.
    • 다른 설정에 대한 기본값을 유지합니다.

    디렉터리 필드를 채우는 명령과 사용 확인란이 선택된 웹 사이트 실패한 요청 추적 설정 편집 대화 상자를 표시하는 스크린샷

  6. 확인을 선택합니다.

    이제 실패한 요청 추적 로깅이 기본 웹 사이트에 대해 사용하도록 설정되었습니다. %windir%\system32\inetsrv\config\applicationHost.config 파일을 확인하여 구성이 다음과 같이 표시되는지 확인합니다.

    <system.applicationHost>
       <!-- other system configuration --> 
       <sites> 
          <site name="Default Web Site" id="1"> 
             <!-- other site configuration --> 
             <traceFailedRequestsLogging  enabled="true" /> 
          </site> 
          <!-- site & app defaults --> 
          <!-- other sites configuration --> 
       </sites> 
       <!-- other system configuration --> 
    </system.applicationHost>
    

2단계: 오류 정의 구성

이 단계에서는 추적할 영역을 포함하여 URL에 대한 오류 정의를 구성합니다. 아직 사용하도록 설정되지 않은 확장에 대한 모든 요청에 대해 IIS에서 반환하는 404.2 상태 코드 문제를 해결합니다. 사용하도록 설정해야 하는 특정 확장을 결정하는 데 도움이 됩니다. 자세한 내용은 IIS의 HTTP 상태 코드를 참조 하세요.

  1. 관리자 사용자 권한이 있는 명령 프롬프트를 열고 %systemdrive%\windows\system32\inetsrv로 이동합니다.

  2. IIS 관리자를 열려면 실행 inetmgr 합니다.

  3. 연결 창에서 컴퓨터 이름을 확장하고 사이트를 확장한 다음 기본 웹 사이트를 선택합니다.

  4. 실패한 요청 추적 규칙을 두 번 클릭합니다.

    실패한 요청 추적 규칙 기능이 선택된 기본 웹 사이트 홈 창의 스크린샷

  5. 작업 창에서 추가...를 선택합니다.

  6. 실패한 요청 추적 규칙 추가 마법사의 추적에 콘텐츠 지정 페이지에서 모든 콘텐츠(*)를 선택한 다음, 다음을 선택합니다.

    스크린샷은 실패한 요청 추적 규칙 추가 마법사를 보여줍니다. 추적할 콘텐츠 지정 페이지에서 모든 콘텐츠 옵션이 선택됩니다.

  7. 추적 조건 정의 페이지에서 상태 코드 확인란을 선택하고 추적할 상태 코드로 404.2를 입력합니다.

    추적 조건 정의 페이지와 상태 코드로 입력된 404포인트 2를 보여 주는 실패한 요청 추적 규칙 추가 스크린샷

  8. 다음을 선택합니다.

  9. 추적 공급자 선택 페이지의 공급자 아래에서 WWW 서버 확인란을 선택하고 다른 모든 확인란의 선택을 취소합니다. 영역 아래에서 보안 확인란을 선택하고 다른 모든 확인란의 선택을 취소합니다.

    생성하는 문제로 인해 보안 오류 추적 이벤트가 throw됩니다. 일반적으로 인증 및 권한 부여(ISAPI 제한 목록 문제 포함) 문제는 추적을 위해 WWW Server - 보안 영역 구성을 사용하여 진단할 수 있습니다. 그러나 FREB.xsl 스타일 시트는 오류 및 경고를 강조 표시하는 데 도움이 되므로 기본 구성을 사용하여 모든 영역 및 공급자의 모든 이벤트를 기록할 수 있습니다.

  10. 자세한 정보 표시 아래에서 자세한 정보를 선택합니다.

    참고 항목

    추적 역할 서비스를 설치할 때 IIS는 기본적으로 WWW 서버, ASP 및 ISAPI 확장 추적 공급자를 설치합니다. ASP.NET 2.0 이상을 설치하는 경우 IIS는 ASPNET 추적 공급자를 자동으로 추가합니다. 추가 공급자는 URL 다시 쓰기 모듈, 웹 팜 관리 및 외부 캐시를 설치하는 ARR(애플리케이션 요청 라우팅) 설치 관리자 패키지에 의해 설치됩니다. 요소 내 <traceProviderDefinitions> 의 요소를 사용하여 추적 공급자를 <add> 더 추가할 수 있습니다.

    공급자 목록에서 선택한 WWW 서버와 영역 메뉴에서 선택된 보안을 보여 주는 실패한 요청 추적 규칙 추가 마법사의 스크린샷.

  11. 마침을 선택합니다.

  12. 기본 웹 사이트에 대한 다음 정의가 표시됩니다.

    연결된 공급자로 입력된 WWW 서버와 상태 코드로 404포인트 2를 보여 주는 실패한 요청 추적 규칙 페이지의 스크린샷.

    IIS 관리자는 태그를 사용하여 파일에 구성 %systemdrive%\inetpub\wwwroot\web.config<location> 씁니다. 구성은 다음을 다시 수행해야 합니다.

    <configuration> 
        <system.webServer> 
            <tracing> 
                <traceFailedRequests> 
                    <add path="*"> 
                        <traceAreas> 
                            <add provider="WWW Server" areas="Security" verbosity="Verbose" /> 
                        </traceAreas> 
                        <failureDefinitions statusCodes="404.2" /> 
                    </add> 
                </traceFailedRequests> 
            </tracing> 
        </system.webServer> 
    </configuration>
    

오류 요청 로그 파일 테스트 및 보기

이 섹션에서는 실패한 요청을 생성하고 결과 추적 로그를 볼 수 있습니다. HTTP 응답 코드 404.2로 실패한 요청에 대한 http://localhost/*.asp 추적 로그를 캡처하도록 IIS를 이미 구성했습니다. 이제 작동하는지 확인합니다.

1단계: 오류 및 오류 요청 로그 파일 생성

  1. 새 Internet Explorer 창을 엽니다.

  2. Enter 키를 http://localhost/test.asp 입력하고 누릅니 . "HTTP 오류 404.2 - 찾을 수 없음" 오류 메시지가 표시됩니다.

    H T T P 오류 404 점 2 대시 찾을 수 없음 메시지 페이지를 표시 하는 Internet Explorer 창의 스크린샷.

2단계: 실패 요청 로그 파일 보기

  1. 실패한 요청을 생성했으므로 Windows 탐색기를 열고 %systemdrive%\inetpub\logs\FailedReqLogFiles\W3SVC1로 이동합니다.

    실패한 Req Log Files 디렉터리의 W 3 S V C 1 폴더 스크린샷

    참고 항목

    IIS는 실패한 요청 로그 파일을 작성할 때 실패한 요청당 하나의 파일을 씁니다. freb.xsl 스타일시트도 디렉터리당 하나씩 작성됩니다. 이렇게 하면 결과 오류 요청 로그 파일(예: 이 샘플의 fr000001.xml )을 볼 때 도움이 됩니다.

  2. 404.2 오류에 대한 로그 파일을 마우스 오른쪽 단추로 클릭하고 -Internet Explorer 열기를> 선택합니다. 실패한 요청 추적 파일을 처음 여는 경우 Internet Explorer의 향상된 보안 구성이 기본적으로 사용하도록 설정되어 있으므로 신뢰할 수 있는 사이트 목록에 about:internet을 추가해야 합니다. 그렇다면 다음이 표시됩니다.

    웹 사이트 콘텐츠가 차단된 경우 계속하라는 메시지가 표시되는 Internet Explorer 대화 상자의 스크린샷.

  3. Internet Explorer 대화 상자에서 다음 단계에 따라 신뢰할 수 있는 사이트 목록에 about:internet을 추가합니다.

    1. 도구 메뉴를 선택한 다음 인터넷 옵션을 선택합니다.
    2. 보안 탭을 선택합니다.
    3. 신뢰할 수 있는 영역을 선택한 다음 사이트를 선택합니다.
    4. 이렇게 하면 XSL이 작동할 수 있습니다.
  4. 신뢰할 수 있는 사이트 목록에 about:internet을 추가한 후 요청 요약 페이지가 표시됩니다.

    심각도, 이벤트 및 모듈 이름에 대한 열을 표시하는 오류 및 경고 테이블이 있는 요청 요약 페이지의 스크린샷

    실패한 요청에 대한 요약이 맨 위에 기록되며 오류 및 경고 테이블은 WARNINGERRORCRITICAL ERROR 심각도에 있는 모든 이벤트를 식별합니다. 이 예제 WARNING 에서 심각도 수준은 ISAPI 제한 때문입니다. 로드 하려는 이미지가 %windir%\system32\inetsrv\asp.dll.

  5. 텍스트 편집기를 사용하여 원시 XML 파일을 직접 열고 이벤트의 내용을 확인합니다.

요약

IIS가 404.2 상태 코드를 사용하여 반환하는 모든 요청에 대한 추적을 캡처하도록 실패한 요청 추적을 구성하고 IIS가 요청에 대한 추적을 캡처했는지 확인하는 두 가지 작업을 완료했습니다. 또한 freb.xml 로그 파일에 404.2 반환 코드가 있는 요청 이외의 요청이 포함되어 있지 않은지 확인했습니다. 오류 로그 파일을 참조했을 때 오류의 원인은 해당 요청에 대한 확장이 비활성화된 것임을 확인했습니다. 다른 비 HTML 페이지(예: .gif 또는 .jpg 파일)를 사용해 볼 수 있으며 로그 파일은 이러한 추적을 추가하지 않습니다. 또한 이 이벤트를 404로 쉽게 변경하거나 failureDefinitions에서 timeTaken 필드를 설정하여 요청이 30초보다 오래 걸리는 경우 오류를 캡처할 수 있습니다.

백업 복원

이제 이 문서의 작업을 완료했으므로 구성의 백업을 복원할 수 있습니다. 관리자 사용자 권한으로 다음 명령을 실행합니다.

%windir%\system32\inetsrv\appcmd restore backup cleanInstall