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

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

실패한 요청 추적은 요청에 대한 추적 이벤트를 버퍼링하고 요청이 "실패"한 경우에만 디스크에 플러시하도록 설계되었으며, 여기서 "실패"의 정의를 제공합니다. 404.2 오류 메시지가 발생하거나 요청 중단을 시작하는 이유를 알고 싶다면 실패한 요청 추적을 사용합니다.

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

  • 실패한 요청 추적 모듈 사용
  • 실패한 요청 추적 로그 파일 의미 체계 구성
  • 실패한 요청 추적을 유지할 URL 정의(오류 정의 및 추적할 영역 포함)
  • 오류 조건 생성 및 결과 추적 보기

필수 구성 요소

IIS 설치

이 문서의 작업을 수행하려면 먼저 IIS 7 이상을 설치해야 합니다. http://localhost/ IIS가 설치되어 있는지 확인합니다. IIS가 설치되지 않은 경우 설치 지침은 Windows Server 2008에 IIS 설치를 참조하세요. IIS를 설치할 때 다음도 설치해야 합니다.

  • ASP.NET(World Wide Web Services - 애플리케이션 개발 기능 - ASP.NET)
  • 추적(World Wide Web Services에서 - 상태 및 진단 - 추적)

관리자 권한으로 로그인

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

참고

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

백업 만들기

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

구성의 백업을 만들려면

  1. 시작>모든 프로그램>보조프로그램을 클릭합니다.

  2. 명령 프롬프트를 마우스 오른쪽 단추로 클릭하고 관리자 권한으로 실행을 클릭합니다.

    관리자 권한으로 실행이 선택된 명령 프롬프트의 상황에 맞는 메뉴를 보여 주는 스크린샷

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

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

샘플 콘텐츠 만들기

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

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

  3. 빈 파일을 만들고 이름을 test.asp로 지정합니다.

  4. 명령 프롬프트에서 \inetpub\wwwroot의 test.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 I S 관리자를 보여 주는 스크린샷.

  3. 활성 서버 페이지를 선택합니다. 작업 창에서 거부를 클릭하여 ASP를 사용하지 않도록 설정합니다.

    I S AP I 및 CG I 제한 사항 및 작업 창이 열려 있음을 보여 주는 스크린샷

Failed-Request 추적 사용

실패한 요청 추적을 사용하도록 설정한 후에는 로그 파일이 상주할 위치를 구성해야 합니다. 이 작업에서는 기본 웹 사이트에 대해 실패한 요청 추적을 사용하도록 설정하고 로그 파일을 배치할 위치를 지정합니다. 그런 다음 실패 로그를 생성할 오류를 구성합니다.

1단계: 사이트에 Failed-Request 추적을 사용하도록 설정하고 로그 파일 디렉터리 구성

  1. 관리자 사용자 권한이 있는 명령 프롬프트를 엽니다.

  2. inetmgr을 시작합니다.

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

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

    구성에서 실패한 요청 추적을 보여 주는 스크린샷

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

    • 사용 확인란을 선택합니다.

    • 다른 설정에 대한 기본값을 유지합니다.

      [사용]이 선택된 웹 사이트 실패한 요청 추적 설정 편집 대화 상자를 보여 주는 스크린샷

  6. 확인을 클릭합니다.

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

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

2단계: 오류 정의 구성

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

  1. 관리자 사용자 권한이 있는 명령 프롬프트를 엽니다.

  2. inetmgr을 시작합니다.

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

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

    기본 웹 사이트 홈 창을 보여 주는 스크린샷 및 실패한 요청 추적 규칙이 선택되어 있습니다.

  5. Finish를 클릭합니다.

  6. 작업 창에서 추가를 클릭합니다.

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

    모든 콘텐츠가 선택된 실패한 요청 추적 규칙 추가 마법사를 보여 주는 스크린샷

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

    추적 조건 정의 페이지를 보여 주는 스크린샷 상태 코드 필드에 404 점 2로 상태 코드가 선택됩니다.

  9. 다음을 클릭합니다.

  10. 추적 공급자 선택 페이지의 공급자 아래에서 WWW 서버 확인란을 선택합니다. 영역 아래에서 보안 확인란을 선택하고 다른 모든 확인란의 선택을 취소합니다. 생성하는 문제로 인해 보안 오류 추적 이벤트가 throw됩니다. 일반적으로 인증 및 권한 부여(ISAPI 제한 목록 문제 포함) 문제는 추적을 위해 WWW Server – 보안 영역 구성을 사용하여 진단할 수 있습니다. 그러나 FREB.xsl 스타일시트를 사용하면 오류 및 경고를 강조 표시할 수 있으므로 기본 구성을 사용하여 모든 영역 및 공급자의 모든 이벤트를 기록할 수 있습니다. 자세한 정보 표시 아래에서 자세한 정보를 선택합니다.

    추적 공급자 선택 페이지를 보여 주는 스크린샷 W W W 서버는 공급자에서 선택되고 자세한 정보 표시 아래에 보안이 선택됩니다.

  11. Finish를 클릭합니다. 기본 웹 사이트에 대한 다음 정의가 표시됩니다.

    실패한 요청 추적 규칙 창을 보여 주는 스크린샷 W W W 서버는 연결된 공급자 아래에 나열됩니다.

IIS 관리자는 태그를 사용하여 <location> 구성을 %windir%\system32\inetsrv\config\applicationHost.config 파일에 씁니다. 구성은 다음과 같이 표시됩니다.

<location path="Default Web Site"> 
    <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> 
</location>

실패 요청 로그 파일 테스트 및 보기

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

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

  1. 새 Internet Explorer 창을 엽니다.

  2. 다음 주소를 http://localhost/test.asp입력합니다.

  3. 다음이 표시되어야 합니다.

    애플리케이션 기본 웹 사이트의 서버 오류라는 웹 페이지를 보여 주는 스크린샷 오류 요약에서 H T T P 오류 404 점 2를 찾을 수 없음이 표시됩니다.

2단계: 오류 요청 로그 파일 보기

  1. 실패한 요청을 생성했으므로 관리자 사용자 권한이 있는 명령 프롬프트를 열고 다음으로 이동합니다 %systemdrive%\inetpub\logs\FailedReqLogFiles\W3SVC1.

  2. 시작을 실행하여 디렉터리에서 Internet Explorer 창을 시작합니다.

    W 3 S V C 1 경로로 이동하는 Internet Explorer를 보여 주는 스크린샷 두 개의 파일, freb 및 f r 0 0 0 0 1이 나열됩니다.

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

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

    Internet Explorer 보안 강화 구성 대화 상자를 보여 주는 스크린샷 콜론 인터넷 정보 차단됩니다.

  5. Internet Explorer 대화 상자에서 추가...를 클릭하여 about:internet을 신뢰할 수 있는 사이트 목록에 추가합니다. 이렇게 하면 XSL이 작동할 수 있습니다. 신뢰할 수 있는 사이트 목록에 about:internet 을 추가한 후 다음이 표시됩니다.

    Internet Explorer를 보여 주는 스크린샷 요청 요약 탭이 선택되고 두 개의 경고가 나열됩니다.

    오류 경고 테이블이 심각도에서 경고, 오류 또는 위험 오류인 이벤트를 식별하는 오류 경고 테이블과 함께 & 실패한 요청의 요약이 맨 위에 기록됩니다. 이 예제에서 경고 심각도 수준은 ISAPI 제한으로 인한 것입니다. 로드하려고 했던 이미지는 .입니다 %windir%\system32\inetsrv\asp.dll.

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

요약

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

백업 복원

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

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