ASP.NET 상태 모니터링 개요

업데이트: 2007년 11월

ASP.NET 상태 모니터링을 사용하면 시스템 관리자가 배포된 웹 응용 프로그램의 상태를 모니터링할 수 있습니다.

참고:

상태 모니터링 이벤트를 발생시키려면 보통 이상의 신뢰 수준이 필요합니다.

이 항목의 내용은 다음과 같습니다.

  • 시나리오

  • ASP.NET 상태 모니터링 기능

  • 배경

  • 코드 예제

  • 클래스 참조

시나리오

ASP.NET 상태 모니터링을 사용하면 다음 작업을 수행할 수 있습니다.

  • 응용 프로그램의 성능을 모니터링하여 상태가 정상인지 확인합니다.

  • 오류가 발생한 응용 프로그램 또는 시스템을 신속하게 진단합니다.

  • 응용 프로그램의 수명 주기 동안 중요한 이벤트를 평가합니다.

  • 라이브 ASP.NET 응용 프로그램을 개별적으로 또는 웹 팜 전체에서 모니터링합니다.

  • ASP.NET 응용 프로그램의 오류와 관련되지 않을 수도 있는 이벤트를 기록합니다.

맨 위로 이동

기능

ASP.NET 상태 모니터링 시스템에는 다음이 포함됩니다.

  • 응용 프로그램 상태 정보를 패키지하는 이벤트 형식

  • 이벤트 정보를 처리하는 공급자 형식

  • 상태 이벤트를 관리하는 데 도움이 되는 추가 형식

맨 위로 이동

배경

ASP.NET 상태 모니터링은 ASP.NET 응용 프로그램의 상태를 모니터링하고 ASP.NET 리소스에 대한 자세한 런타임 정보를 가져와서 응용 프로그램을 계측할 수 있는 간단한 방법을 제공합니다. 상태 모니터링에는 그대로 사용 가능한 웹 상태 모니터링 이벤트 클래스(웹 이벤트)와 상태 모니터링 공급자(수신기)가 포함되어 있습니다. 웹 이벤트는 상태 이벤트 정보를 패키지합니다.

공급자는 이벤트를 수신하고, 일반적으로 정보를 로깅하거나 관리자에게 알려 이벤트 정보를 사용합니다. 응용 프로그램 구성 파일의 설정을 통해 웹 이벤트를 공급자에 연결합니다(이벤트 설정이라고도 함).

ASP.NET 상태 모니터링 시스템은 System.Web.Management 네임스페이스의 클래스를 사용하여 구현됩니다.

ASP.NET 상태 모니터링 구성

기본 제공 또는 사용자 지정 모니터링 공급자를 사용하도록 응용 프로그램을 구성하여 상태 모니터링 정보를 처리하고 계측된 응용 프로그램의 상태 및 성능 특성을 보고하게 할 수 있습니다.

구성 파일의 healthMonitoring 섹션을 구성하여 웹 이벤트와 공급자를 응용 프로그램에 추가합니다. 그런 다음 기본 제공 또는 사용자 지정 클래스를 사용하여 이벤트 데이터를 수신하고 처리합니다.

구성 파일에 대한 자세한 내용은 ASP.NET 구성 파일을 참조하십시오.

웹 이벤트 클래스 계층 구조

웹 이벤트가 발생하면 관련된 이벤트 클래스의 인스턴스가 만들어집니다. 이 개체의 속성에 이벤트 데이터가 수집됩니다. 이벤트 공급자가 이 데이터를 처리합니다.

웹 이벤트에는 작업자 프로세스, 응용 프로그램 도메인, 요청 데이터, 응답 데이터, 응용 프로그램 오류, 구성 오류 및 감사 이벤트에 대한 정보가 포함될 수 있습니다. 부모 이벤트 클래스에 포함된 상태 정보는 모든 자식 이벤트 클래스에 상속됩니다.

다음 그림은 웹 이벤트 클래스 사이의 관계를 보여 줍니다.

웹 이벤트 클래스 계층 구조

웹 이벤트 클래스의 계층 구조에서 이벤트가 아래쪽에 있을수록 해당 데이터가 ASP.NET 응용 프로그램과 보다 구체적으로 관련됩니다. 예를 들어 파생된 클래스는 스택 추적, 클라이언트 IP, 스레드 및 프로세스 정보와 같은 정보를 노출할 수 있습니다.

웹 이벤트 정보

다음 표에는 사용하거나 상속할 웹 이벤트 클래스를 결정하는 데 도움이 되는 정보가 나와 있습니다. 행은 웹 이벤트 클래스를 나타냅니다. 열은 일반적으로 웹 이벤트 클래스의 속성으로 사용할 수 있는 정보 클래스를 나타냅니다.

응용 프로그램이 완전 신뢰로 실행되고 있지 않은 경우에는 WebBaseEvent 클래스만 상속할 수 있습니다. 따라서 이 표에 나열된 정보 클래스를 통해 중요한 정보가 노출되는 것을 막을 수 있습니다.

웹 이벤트 클래스

WebApplicationInformation

WebProcessInformation

WebProcessStatistics

WebRequestInformation

WebThreadInformation

WebBaseEvent

이 클래스에서 생성된 데이터

사용할 수 없습니다.

사용할 수 없습니다.

사용할 수 없습니다.

사용할 수 없습니다.

WebManagementEvent

부모 클래스가 생성한 데이터

이 클래스에서 생성된 데이터

사용할 수 없습니다.

사용할 수 없습니다.

사용할 수 없습니다.

WebHeartbeatEvent

부모 클래스가 생성한 데이터

부모 클래스가 생성한 데이터

이 클래스에서 생성된 데이터

사용할 수 없습니다.

사용할 수 없습니다.

WebRequestEvent

부모 클래스가 생성한 데이터

부모 클래스가 생성한 데이터

사용할 수 없습니다.

이 클래스에서 생성된 데이터

사용할 수 없습니다.

WebApplicationLifetimeEvent

부모 클래스가 생성한 데이터

부모 클래스가 생성한 데이터

사용할 수 없습니다.

사용할 수 없습니다.

사용할 수 없습니다.

WebBaseErrorEvent

부모 클래스가 생성한 데이터

부모 클래스가 생성한 데이터

사용할 수 없습니다.

사용할 수 없습니다.

사용할 수 없습니다.

WebErrorEvent

부모 클래스가 생성한 데이터

부모 클래스가 생성한 데이터

사용할 수 없습니다.

이 클래스에서 생성된 데이터

이 클래스에서 생성된 데이터

WebRequestErrorEvent

부모 클래스가 생성한 데이터

부모 클래스가 생성한 데이터

사용할 수 없습니다.

부모 클래스가 생성한 데이터

부모 클래스가 생성한 데이터

WebAuditEvent

부모 클래스가 생성한 데이터

부모 클래스가 생성한 데이터

사용할 수 없습니다.

이 클래스에서 생성된 데이터

사용할 수 없습니다.

WebSuccessAuditEvent

부모 클래스가 생성한 데이터

부모 클래스가 생성한 데이터

사용할 수 없습니다.

부모 클래스가 생성한 데이터

사용할 수 없습니다.

WebAuthenticationSuccessAuditEvent

부모 클래스가 생성한 데이터

부모 클래스가 생성한 데이터

사용할 수 없습니다.

부모 클래스가 생성한 데이터

사용할 수 없습니다.

WebFailureAuditEvent

부모 클래스가 생성한 데이터

부모 클래스가 생성한 데이터

사용할 수 없습니다.

부모 클래스가 생성한 데이터

사용할 수 없습니다.

WebAuthenticationFailureAuditEvent

부모 클래스가 생성한 데이터

부모 클래스가 생성한 데이터

사용할 수 없습니다.

부모 클래스가 생성한 데이터

사용할 수 없습니다.

WebViewStateFailureAuditEvent

부모 클래스가 생성한 데이터

부모 클래스가 생성한 데이터

사용할 수 없습니다.

부모 클래스가 생성한 데이터

사용할 수 없습니다.

공급자 클래스 계층 구조

ASP.NET에는 웹 이벤트를 처리하는 데 사용할 수 있는 기본 제공 공급자가 포함되어 있습니다. 기본 제공 클래스에서 상속하여 사용자 지정 공급자를 만들 수도 있으며, 이 경우 다음과 같은 상속 제한이 적용됩니다.

  • WebEventProvider 클래스는 모든 신뢰 수준으로 실행되는 응용 프로그램에서 상속할 수 있습니다.

  • BufferedWebEventProvider 클래스는 모든 신뢰 수준으로 실행되는 응용 프로그램에서 상속할 수 있습니다.

  • SqlWebEventProvider 클래스는 완전 신뢰로 실행되는 응용 프로그램에서만 상속할 수 있습니다.

다른 클래스는 신뢰 수준에 상관없이 응용 프로그램에서 상속할 수 없습니다. 자세한 내용은 개별 공급자 클래스에 대한 클래스 개요를 참조하십시오.

다음 그림에서는 System.Web.Management 네임스페이스에 있는 웹 공급자 클래스 사이의 관계를 보여 줍니다.

웹 공급자 클래스 계층 구조

ASP.NET 상태 모니터링 이벤트 사용

다음과 같은 방법으로 ASP.NET 상태 모니터링 이벤트를 사용할 수 있습니다.

  • 기본 제공 웹 이벤트 및 공급자 클래스를 사용합니다. 일반적으로 ASP.NET 웹 이벤트 클래스에 대한 사용자 지정 구현을 제공할 필요가 없습니다. 응용 프로그램에서는 이러한 이벤트를 발생시키지 않고 .NET Framework에서 이를 발생시킵니다. 그러나 이 항목의 뒷부분에서 설명하는 대로 이러한 이벤트를 구성해야 합니다. 자세한 내용은 방법: 상태 모니터링 알림을 위한 전자 메일 보내기를 참조하십시오.

  • 웹 이벤트나 공급자에 대해 사용자 지정 클래스를 만듭니다. 일반적으로 기본 제공 웹 이벤트에서 이미 제공하는 정보에 사용자 지정 정보를 추가해야 하는 경우에 사용자 지정 웹 이벤트를 만듭니다. 그리고 기본 제공 공급자에서 사용할 수 있는 메커니즘 외의 메커니즘을 통해 이벤트 데이터를 전달하려는 경우 사용자 지정 공급자를 만듭니다. 자세한 내용은 ASP.NET 상태 모니터링 이벤트 확장을 참조하십시오.

기본 제공 웹 이벤트 및 공급자 사용

기본 제공 웹 이벤트와 공급자를 상태 모니터링에 사용하는 방법이 가장 일반적인 전략입니다. 이 경우 응용 프로그램에서 필요한 이벤트와 공급자를 사용하도록 구성하기만 하면 됩니다. 다음을 수행해야 합니다.

  • 필요한 기본 제공 ASP.NET 웹 이벤트 클래스를 응용 프로그램 구성 파일에 있는 healthMonitoring 섹션의 eventMappings 요소에 추가합니다.

  • 이벤트를 사용하는 공급자를 healthMonitoring 섹션의 providers 요소에 추가합니다.

  • 이벤트와 공급자 간의 연결을 정의하는 rules 요소에 항목을 추가합니다.

기본적으로 기본 제공 ASP.NET 상태 모니터링 클래스는 루트 Web.config 파일의 healthMonitoring 섹션에서 구성됩니다. healthMonitoring 섹션에서는 다음과 같은 기본 구성을 설정합니다.

  • WebBaseEvent에서 파생되는 모든 웹 이벤트 클래스를 eventMappings 요소에서 지정합니다. 이 섹션은 이벤트 클래스 그룹에 이름을 할당하는 데 사용됩니다.

  • WebBaseEvent에서 파생되는 모든 이벤트 클래스는 eventMappings 요소에 정의된 하나 이상의 그룹에 포함됩니다.

EventLogWebEventProvider, WmiWebEventProviderSqlWebEventProvider 이벤트 공급자를 providers 요소에서 지정합니다. providers 요소에서는 SimpleMailWebEventProvider, TemplatedMailWebEventProvider 또는 TraceWebEventProvider 클래스와 같은 다른 기본 제공 공급자를 지정할 수도 있습니다.

웹 오류 및 감사 실패 이벤트를 EventLogWebEventProvider 클래스에 연결하는 규칙을 rules 요소에서 지정합니다. 다른 rules 요소를 추가하여 다른 웹 이벤트와 공급자를 활성화할 수도 있습니다. rules 요소에서 이벤트 공급자에 매핑된 이벤트는 활성화된 것으로 간주됩니다. 이벤트에 대해 eventMappingsproviders 요소를 구성해야 하지만 rules 요소에서 이러한 두 요소가 연결되어 있지 않으면 이벤트를 사용할 수 없습니다.

구성된 항목의 매개 변수 값을 지정할 수 있습니다. 예를 들어 발생할 수 있는 이벤트 수를 제한하는 매개 변수, 이벤트 사이의 간격을 지정하는 매개 변수, SQL 및 메일 공급자의 이벤트 버퍼링 옵션을 지정하는 매개 변수 등을 지정합니다.

사용자 지정 공급자 구성

웹 이벤트 정보에 대한 사용자 지정 처리가 필요한 경우 사용자 지정 상태 이벤트 공급자를 빌드할 수 있습니다. 공급자는 WebEventProvider 또는 BufferedWebEventProvider 클래스에서 상속되는 클래스입니다. 예제를 보려면 방법: 상태 모니터링 사용자 지정 공급자 예제 구현을 참조하십시오. 사용자 지정 공급자를 만드는 것이 가장 일반적인 상태 모니터링 사용자 지정 방법입니다. 이 경우 다음과 같이 구성 파일을 수정해야 합니다.

  • 이벤트를 처리하는 사용자 지정 공급자를 구성 파일에서 healthMonitoring 섹션의 providers 요소에 추가합니다.

  • 이벤트와 공급자 간의 연결을 정의하는 rules 요소에 항목을 추가합니다.

  • 사용자 지정 공급자 구현이 포함된 어셈블리를 응용 프로그램의 Bin 하위 디렉터리에 넣습니다. 공급자 소스 코드 파일은 App_Code 하위 디렉터리에 넣을 수 없습니다. App_Code 하위 디렉터리의 코드 파일을 컴파일하기 전에 상태 모니터링 시스템을 구성하고 만들기 때문입니다.

providers 요소의 type 특성에 적어도 클래스 이름을 지정해야 합니다. 어셈블리가 응용 프로그램의 Bin 디렉터리에 있지 않으면 어셈블리는 강력한 이름이 지정되고 전역 어셈블리 캐시에 설치되어 있어야 합니다. 이 경우 providers 요소의 type 특성에는 다음 예제와 같이 완전한 강력한 이름이 필요합니다. 여기서 Version 및 PublicKeyToken 값은 어셈블리와 일치합니다.

type="Microsoft.Samples.Web.Management.SampleCustomEventProvider, Sample.SampleCustomEventProvider,Version=n.n.n.n,Culture=neutral, PublicKeyToken=xxxx"

다음 예제에서는 SampleCustomEventProvider 공급자를 WebHeartbeatEvent 이벤트에 연결하는 방법을 보여 줍니다. Heartbeats 이벤트는 루트 Web.config 파일에 이미 구성되어 있습니다.

<healthMonitoring 
  heartBeatInterval="1" 
  enabled="true">
  <rules>
    <add 
      name="Heartbeat Events" 
      eventName="Heartbeats" 
      provider="Sample Custom Event Provider"
      profile="Default" 
      minInstances="1" 
      maxLimit="Infinite" 
      minInterval="00:01:00"
      custom="" 
    />
  </rules>
  <providers>
    <add 
      name="Sample Custom Event Provider" 
      type="Microsoft.Samples.Web.Management.SampleCustomEventProvider, Sample.SampleCustomEventProvider,Version=1.0.0.0,Culture=neutral, PublicKeyToken=xxxxxxxxxxxx" 
    />
  </providers>
</healthMonitoring>

사용자 지정 이벤트 구성

사용자 지정 상태 이벤트 정보가 필요한 경우에는 사용자 지정 상태 이벤트를 빌드할 수 있습니다. 예제를 보려면 방법: 사용자 지정 ASP.NET 상태 모니터링 이벤트 구현 및 발생을 참조하십시오. 사용자 지정 웹 이벤트를 만드는 경우는 사용자 지정 공급자를 만드는 경우보다 덜 일반적입니다. 이 경우 구성 파일을 수정해야 합니다. 또한 적절한 시기에 사용자 지정 이벤트를 명시적으로 발생시켜야 합니다.

이 이벤트를 구성하려면 다음을 수행해야 합니다.

  • 사용자 지정 상태 이벤트 클래스를 healthMonitoring 섹션의 eventMappings 요소에 추가합니다.

  • 이벤트와 공급자 간의 연결을 정의하는 rules 요소를 추가합니다.

  • 사용자 지정 웹 이벤트 구현을 포함하는 어셈블리를 ASP.NET 응용 프로그램의 Bin 하위 디렉터리에 추가합니다. 또는 이벤트 소스 코드 파일을 App_Code 하위 디렉터리에 추가할 수도 있습니다.

어셈블리를 사용하는 경우, eventMappings 요소의 type 특성에 다음 코드 예제와 같이 적어도 클래스 이름과 어셈블리 파일 이름은 지정해야 합니다.

type="System.Web.Management.SampleCustomWebEvent, Sample.SampleCustomWebEvent"

소스 코드 파일을 사용하는 경우에는 클래스 이름만 지정하면 됩니다.

다음 예제에서는 EventLogWebEventProvider 이벤트 공급자를 SampleCustomWebEvent라는 사용자 지정 이벤트에 연결하는 방법을 보여 줍니다. EventLogProvider 이벤트는 루트 Web.config 파일에 이미 구성되어 있습니다.

<healthMonitoring 
  heartBeatInterval="0" 
  enabled="true">
  <rules>
    <add 
      name="Sample Custom Events" 
      eventName="SampleCustomWebEvent" 
      provider="EventLogProvider"
      profile="Default" 
      minInstances="1" 
      maxLimit="Infinite" 
      minInterval="00:01:00"
      custom="" 
    />
  </rules>
  <eventMappings>
    <add 
      name="SampleCustomWebEvent" 
      type="System.Web.Management.SampleCustomWebEvent, Sample.SampleCustomWebEvent,Version=1.0.0.0,Culture=neutral, PublicKeyToken=xxxxxxxxxxxx" "
      startEventCode="0" 
      endEventCode="2147483647" 
    />
  </eventMappings>
</healthMonitoring>

ASP.NET 상태 모니터링 보안

상태 모니터링은 ASP.NET 응용 프로그램에서 기본적으로 사용됩니다. healthMonitoring 요소의 enabled 특성을 false로 설정하면 이 기능을 해제할 수 있습니다. 기본 구성 설정은 사용할 수 있는 가장 안전한 값으로 설정됩니다. 상태 모니터링 구성 설정에 대한 자세한 내용은 healthMonitoring을 참조하십시오. location 요소를 사용하여 상태 모니터링 구성 설정을 잠그는 것이 좋습니다.

참고:

사용자 지정 이벤트 소비자나 사용자 지정 이벤트 공급자를 구현하는 경우에는 이벤트 콘텐츠를 인코딩하거나 검사하여 사이트 간 스크립팅 문제를 방지해야 합니다.

구성 값 보안

응용 프로그램 구성 파일에 중요한 정보를 저장할 때는 보호되는 구성을 사용하여 중요한 값을 암호화해야 합니다. 이 중에서도 특히 중요한 정보에는 machineKey 구성 요소에 저장되는 암호화 키와 connectionStrings 구성 요소에 저장되는 데이터 소스 연결 문자열이 포함됩니다. 자세한 내용은 보호되는 구성을 사용하여 구성 정보 암호화를 참조하십시오.

healthMonitoring 구성 섹션은 보통 신뢰 이상을 사용하는 코드에서만 액세스할 수 있습니다. 따라서 낮은 신뢰 응용 프로그램에서는 사용자 지정 형식을 등록할 수 없습니다.

상태 모니터링 확장에 대한 보안

System.Web.Management 네임스페이스의 상태 모니터링 형식에는 다음과 같은 특성이 있습니다.

  • 기본 클래스 생성자는 protectedinternal로 표시됩니다. 따라서 기본 클래스 이벤트 형식의 인스턴스는 사용자 코드로 직접 만들 수 없습니다.

  • 웹 이벤트 인스턴스에 대한 액세스는 구성에서 지정한 공급자, 필터 및 템플릿 페이지로 제한됩니다.

  • 보호되는 콘텐츠가 있는 이벤트에 대한 상속 링크 요청에서는 완전히 신뢰된 사용자 지정 이벤트만 파생될 수 있습니다.

  • 보호된 이벤트 속성의 중요한 데이터를 노출하는 신뢰할 수 있는 사용자 지정 이벤트에서는 자체적으로 코드 액세스 보안을 적용하여 악의적인 공격을 방지해야 합니다. 코드 액세스 보안에 대한 자세한 내용은 ASP.NET 코드 액세스 보안 또는 코드 액세스 보안 기본 사항을 참조하십시오.

  • 웹 이벤트를 보는 데 사용하는 WMI(Windows Management Instrumentation) 형식은 모든 사용자가 이벤트 데이터에 액세스할 수 없도록 잠깁니다.

    참고:

    사용자 지정 이벤트 소비자나 사용자 지정 이벤트 공급자를 구현하는 경우에는 이벤트 콘텐츠를 인코딩하거나 검사하여 사이트 간 스크립팅 문제를 방지해야 합니다.

데이터 소스 연결 보안

사용자 지정 상태 모니터링 이벤트 공급자를 만들어 이벤트 데이터를 데이터베이스에 기록할 수 있습니다. ASP.NET에는 SQL 공급자가 포함되어 있습니다. 이벤트 데이터를 기록하는 방법에 대한 자세한 내용은 데이터 액세스 보안을 참조하십시오.

데이터베이스 서버에 대한 연결을 안전하게 유지하려면 보호되는 구성을 사용하여 구성 파일의 연결 문자열 정보를 암호화해야 합니다. 자세한 내용은 보호되는 구성을 사용하여 구성 정보 암호화를 참조하십시오.

SQL 공급자를 사용할 경우에는 인증을 사용하여 데이터베이스를 적절히 보호해야 합니다. Microsoft SQL Server Express Edition 파일은 ACL(액세스 제어 목록)과 SQL 인증을 사용하여 보호해야 합니다.

참고:

이벤트를 데이터베이스에 기록할 때 SQL Server Express Edition을 권한 없는 계정으로 실행하면 안 됩니다.

서비스 거부 공격으로부터 보호

웹 이벤트는 예외나 이벤트를 생성하는 응용 프로그램 코드나 HTTP 요청에 의해 트리거될 수 있습니다. 용량이 큰 이벤트나 대형 이벤트에 의해 이벤트 공급자 용량이 초과될 수 있습니다. 이 경우 ASP.NET 응용 프로그램이나 서버가 지나치게 사용되어 메모리 사용, 디스크 공간 및 네트워크 트래픽에 영향을 줄 수 있습니다.

응용 프로그램이 서비스 거부 공격에 노출되는 위험을 줄이기 위해 기본적으로 ASP.NET에서는 다음과 같은 디자인을 사용합니다.

  • ASP.NET에서는 분당 하나의 이벤트 인스턴스를 측정합니다. 이러한 제한 빈도는 profiles 요소에서 구성되며, rules 요소에서 이벤트 및 공급자와 연결됩니다.

  • 버퍼 공간을 놓고 경쟁을 하지 못하도록 이벤트 버퍼링은 공급자 형식별로 격리됩니다. 버퍼 설정은 bufferModes 요소에서 구성됩니다. 공급자에 적절한 설정이 포함된 bufferModes 요소를 지정하여 특정 버퍼 설정 집합을 사용하도록 공급자를 구성할 수 있습니다.

  • 사용자 지정 이벤트를 발생시키려면 보통 이상의 신뢰가 필요합니다.

시스템 관리자인 경우 제한 및 버퍼링 설정을 구성함으로써 특히 HTTP 요청에 의해 발생할 수 있는 이벤트에 대한 오버플로를 방지할 수 있습니다. 또는 별도의 버퍼 모드를 설정하여 중요하거나 중요하지 않는 이벤트를 처리할 수 있습니다.

오류 메시지 및 이벤트에 대한 보안

중요한 정보가 원치 않는 소스로 노출되지 않게 하려면 응용 프로그램에서 자세한 오류 메시지를 표시하지 않도록 구성합니다. 또한 클라이언트가 웹 서버 자체인 경우에만 응용 프로그램에서 자세한 오류 메시지를 표시하도록 구성할 수 있습니다. 자세한 내용은 customErrors를 참조하십시오.

기본적으로 ASP.NET에서는 용량이 크고 예외적인 요청별 웹 이벤트를 성능 모니터링 시스템에 기록합니다. 즉, 기본 구성에서 로그인 시도가 실패할 경우 응용 프로그램 이벤트 로그에 사용자 이름과 기타 진단 정보가 기록됩니다. 이 데이터는 Windows 이벤트 뷰어에서 볼 수 있습니다. 서버가 Microsoft Windows Server 제품 중 하나를 실행하고 있는 경우 이벤트 로그를 보호하여 응용 프로그램의 보안을 향상할 수 있습니다. 또한 이벤트 로그의 크기, 보존 기간 및 기타 특성을 지정하는 매개 변수를 설정하여 간접적인 서비스 거부 공격을 방지할 수도 있습니다.

ASP.NET 상태 모니터링 구성 잠금

응용 프로그램 호스팅 시나리오에서 사이트의 일부 설정을 수정할 수 없도록 잠가야 하는 경우가 많습니다. 예를 들어, 웹 응용 프로그램의 구성을 실수로 잘못 수정하지 않도록 호스팅된 응용 프로그램의 상태 모니터링 설정을 잠글 수 있습니다.

allowOverride="false" 특성을 <location> 태그에 추가하여 구성 설정을 잠글 수 있습니다. 그러면 하위 계층에 있는 구성 파일을 통해 location 요소에 정의된 구성 섹션을 재정의하려 할 때 구성 시스템에서 오류가 throw됩니다.

다음 예제 구성 파일에서는 application1이라는 ASP.NET 응용 프로그램의 healthMonitoring 섹션을 잠그는 방법을 보여 줍니다. 이 설정은 서버 수준(machine.config 파일)이나 사이트 수준에 저장될 수 있습니다.

<configuration>
  <location path="application1" allowOverride="false">
    <system.web>
      <healthMonitoring
        enabled="true"
        heartBeatInterval="60">
        <bufferModes>
          <add name="Logging"
            maxBufferSize="1000"
            maxFlushSize="200"
            urgentFlushThreshold="800"
            regularFlushInterval="00:30:00"
            urgentFlushInterval="00:05:00"
            maxBufferThreads="1"
          />
        </bufferModes>
        <providers>
           <add name="EventLogProvider"
            type="System.Web.Management.EventLogWebEventProvider, System.Web, Version=%ASSEMBLY_VERSION%, Culture=neutral, PublicKeyToken=%MICROSOFT_PUBLICKEY%"
            buffer="true"
            bufferMode="Logging"
          />
        </providers>
        <eventMappings>
          <add name="All Errors"
            type="System.Web.Management.WebBaseErrorEvent, System.Web, Version=%ASSEMBLY_VERSION%, Culture=neutral, PublicKeyToken=%MICROSOFT_PUBLICKEY%" 
          />
        </eventMappings>
        <profiles>
          <add name="Default"
            minInstances="1"
            maxLimit="Infinite"
            minInterval="00:10:00"
          />
        </profiles>
        <rules>
          <add name="All Errors Default"
            eventName="All Errors"
            provider="EventLogProvider"
            profile="Default"
            minInterval="00:01:00" 
          />
        </rules>
      </healthMonitoring>
    </system.web>
  </location>
</configuration>

lockItem, lockAttributes, lockElements 등의 추가 특성을 사용하여 요소 잠금을 더 세밀하게 지정할 수 있습니다. 자세한 내용은 section 요소에서 상속된 일반 특성을 참조하십시오.

맨 위로 이동

코드 예제

방법: 사용자 지정 ASP.NET 상태 모니터링 이벤트 구현 및 발생

방법: 상태 모니터링 사용자 지정 공급자 예제 구현

방법: 상태 모니터링 알림을 위한 전자 메일 보내기

연습: ASP.NET 상태 모니터링에서 WMI 이벤트 수신

맨 위로 이동

클래스 참조

  • System.Web.Management
    웹 응용 프로그램의 상태를 관리 및 모니터링하는 데 사용되는 형식을 포함하는 네임스페이스입니다.

  • System.Management
    WMI(Windows Management Instrumentation) 인프라에 연결하는 데 사용되는 형식을 포함하는 네임스페이스입니다.

  • System.Management.Instrumentation
    WMI 잠재 소비자를 위해 응용 프로그램을 계측하는 형식을 포함하는 네임스페이스입니다.

  • HealthMonitoringSection
    프로그래밍 방식으로 healthMonitoring 구성 특성을 가져오거나 설정하는 형식입니다.

맨 위로 이동

참고 항목

작업

방법: ASP.NET 구성 설정 잠금

개념

ASP.NET 상태 모니터링 이벤트 확장

ASP.NET 구성 개요

참조

healthMonitoring에 대한 bufferModes 요소(ASP.NET 설정 스키마)

healthMonitoring에 대한 providers 요소(ASP.NET 설정 스키마)