고가용성 및 사이트 복구 모니터링

 

적용 대상: Exchange Server 2010 SP2, Exchange Server 2010 SP3

마지막으로 수정된 항목: 2015-03-09

서버가 안정적으로 작동 중인지, 데이터베이스 복사본이 정상적인 상태인지 확인하는 것은 일일 메시징 작업의 주요 목표입니다. Microsoft Exchange Server 2010 조직의 가용성과 안정성을 보장하는 데 도움을 주기 위해 하드웨어, Windows 운영 체제 및 Exchange 2010 서비스를 사전에 모니터링해야 합니다. 예방적 유지 관리와 결합된 사전 모니터링은 심각한 문제가 Exchange 조직의 작업을 방해하기 전에 잠재적인 오류를 식별하는 데 도움이 됩니다.

Exchange 조직 모니터링 작업에는 서비스 또는 데이터에 문제가 있는지 정기적으로 확인하는 작업이 포함됩니다. 모니터링에는 또한 일반적으로 문제가 발생할 때 경고를 보내는 알림 시스템이 포함됩니다. Windows Server 2008 및 Exchange 2010에는 Exchange 조직이 원활하게 실행될 수 있도록 하는 데 도움이 되는 몇 가지 도구 및 서비스가 포함됩니다. 일일 모니터링의 주요 이점은 다음과 같습니다.

  • SLA(서비스 수준 계약)의 요구 사항 충족

  • 특정 관리 작업(예: 일일 백업 작업)의 성공적 완료 보장

  • 문제 탐지 및 해결(예: 메시징 서비스 또는 데이터 가용성에 영향을 줄 수 있는 문제)

Exchange 2010 조직 내에서 작업에 관련된 절차, 역할 및 책임을 체계화해야 합니다. 적절한 작동 사례 및 절차와 정상적인 인프라 간의 관계를 이해하는 것이 중요합니다. 잘 문서화된 철저한 운영 프로세스 및 절차는 Exchange가 의존하는 조직의 환경에 포함된 모든 구성 요소가 효율적이고 효과적으로 관리되도록 도와줍니다.

Exchange 2010에는 Exchange가 고가용성 또는 사이트 복구를 사용할 수 있도록 구성된 경우 정기적인 사전 모니터링 과정에서 사용할 수 있는 몇 가지 기본 제공 도구, 스크립트 및 기능이 포함되어 있습니다. 고가용성 및 사이트 복구를 위한 기본 모니터링 cmdlet은 Get-MailboxDatabaseCopyStatusTest-ReplicationHealth입니다. 모니터링 기능을 수행하고 상태를 보고할 수 있는 cmdlet을 제공하는 것 외에도 Exchange 2010에는 또한 Windows Server의 크림슨 채널 기능을 활용하는 새로운 이벤트 로그 스트림과 이러한 이벤트 채널에서 데이터를 수집하고 분석할 수 있는 기본 제공 스크립트가 제공됩니다.

이 항목의 내용을 사용하여 DAG(데이터베이스 가용성 그룹)에 대한 사서함 데이터베이스 복사본의 상태 모니터링을 수행할 수 있습니다.

목차

Get-MailboxDatabaseCopyStatus Cmdlet

Test-ReplicationHealth Cmdlet

크림슨 채널 이벤트 로깅

CollectOverMetrics.ps1 스크립트

CollectReplicationMetrics.ps1 스크립트

CheckDatabaseRedundancy.ps1 스크립트

Get-MailboxDatabaseCopyStatus Cmdlet

Get-MailboxDatabaseCopyStatus cmdlet을 사용하여 사서함 데이터베이스 복사본에 대한 상태 정보를 볼 수 있습니다. 이 cmdlet을 사용하면 특정 데이터베이스의 모든 복사본에 대한 정보, 특정 서버에 있는 데이터베이스의 특정 복사본에 대한 정보 또는 서버의 모든 데이터베이스 복사본에 대한 정보를 볼 수 있습니다. 다음 표에는 사서함 데이터베이스 복사본의 복사본 상태에 대해 가능한 값이 나와 있습니다.

데이터베이스 복사본 상태

데이터베이스 복사본 상태 설명

Failed

사서함 데이터베이스 복사본이 일시 중단되지 않았고 로그 파일을 복사하거나 재생할 수 없기 때문에 Failed 상태입니다. Failed 상태이고 일시 중단되지 않은 경우 시스템은 복사본 상태를 Failed로 변경하게 한 문제가 해결되었는지 여부를 정기적으로 확인하게 됩니다. 시스템에서 문제가 해결되었고 다른 문제가 없음을 확인하고 나면 복사본 상태가 정상 상태로 자동 변경됩니다.

Seeding

사서함 데이터베이스 복사본을 시드 중이거나, 사서함 데이터베이스 복사본의 콘텐츠 인덱스를 시드 중이거나 둘 다 시드 중입니다. 시드가 성공적으로 완료되면 복사본 상태가 Initializing으로 변경됩니다.

SeedingSource

사서함 데이터베이스 복사본은 데이터베이스 복사본 시드 작업을 위한 원본으로 사용됩니다.

Suspended

관리자가 Suspend-MailboxDatabaseCopy cmdlet을 실행하여 데이터베이스 복사본을 수동으로 일시 중단하였기 때문에 사서함 데이터베이스 복사본이 Suspended 상태입니다.

Healthy

사서함 데이터베이스 복사본이 로그 파일을 올바르게 복사 및 재생하고 있거나 모든 사용 가능한 로그 파일을 성공적으로 복사하고 재생했습니다.

ServiceDown

Microsoft Exchange 복제 서비스를 사용할 수 없거나 사서함 데이터베이스 복사본을 호스팅하는 서버에서 복제 서비스가 실행 중입니다.

Initializing

데이터베이스 복사본이 만들어졌을 때, Microsoft Exchange 복제 서비스가 시작 중이거나 시작되었을 때, Suspended, ServiceDown, Failed, Seeding, SinglePageRestore, LostWrite 또는 Disconnected에서 다른 상태로 전환될 때 사서함 데이터베이스 복사본은 Initializing 상태가 됩니다. 이 상태일 때 시스템은 데이터베이스 및 로그 스트림이 일관성 있는 상태인지 확인하는 중입니다. 대부분의 경우 복사의 Initializing 상태는 약 15초 동안 유지되지만 모든 경우에 일반적으로 이 상태는 30초 이상을 초과하지 않습니다.

Resynchronizing

두 복사본 간의 차이를 확인하기 위해 사서함 데이터베이스 복사본 및 로그 파일이 현재 데이터베이스의 활성 복사본과 비교되고 있습니다. 확산이 탐지되고 해결될 때까지 복사본 상태가 이대로 유지됩니다.

Mounted

활성 복사본이 온라인 상태이고 클라이언트 연결을 허용하고 있습니다. 사서함 데이터베이스 복사본의 활성 복사본 상태만 Mounted가 될 수 있습니다.

Dismounted

활성 복사본이 오프라인 상태이고 클라이언트 연결을 허용하고 있지 않습니다. 사서함 데이터베이스 복사본의 활성 복사본 상태만 Dismounted가 될 수 있습니다.

Mounting

활성 복사본이 온라인 상태로 전환 중이고 아직 클라이언트 연결을 허용하고 있지 않습니다. 사서함 데이터베이스 복사본의 활성 복사본 상태만 Mounting이 될 수 있습니다.

Dismounting

활성 복사본이 오프라인 상태로 전환 중이고 클라이언트 연결을 종료하는 중입니다. 사서함 데이터베이스 복사본의 활성 복사본 상태만 Dismounting이 될 수 있습니다.

DisconnectedAndHealthy

사서함 데이터베이스 복사본이 더 이상 활성 데이터베이스 복사본에 연결되어 있지 않고 연결이 끊길 때 Healthy 상태였습니다. 이 상태는 원본 데이터베이스 복사본에 연결된 관련 데이터베이스 복사본을 나타냅니다. 이 상태는 원본 복사본과 대상 데이터베이스 복사본 간 DAG 네트워크 장애 발생 시 보고될 수 있습니다.

DisconnectedAndResynchronizing

사서함 데이터베이스 복사본이 더 이상 활성 데이터베이스 복사본에 연결되어 있지 않고 연결이 끊길 때 Resynchronizing 상태였습니다. 이 상태는 원본 데이터베이스 복사본에 연결된 관련 데이터베이스 복사본을 나타냅니다. 이 상태는 원본 복사본과 대상 데이터베이스 복사본 간 DAG 네트워크 장애 발생 시 보고될 수 있습니다.

FailedAndSuspended

오류가 탐지되었고 오류를 해결하는 데 명시적으로 관리자의 개입이 필요하기 때문에 시스템에서 Failed 및 Suspended 상태를 동시에 설정했습니다. 예를 들어 시스템이 활성 사서함 데이터베이스와 데이터베이스 복사본 간에 복구할 수 없는 차이를 탐지한 경우가 있습니다. Failed 상태와 달리 시스템에서는 문제가 해결되었는지를 정기적으로 확인하여 자동으로 복구하지 않습니다. 대신에 데이터베이스 복사본이 정상적인 상태로 전환될 수 있도록 관리자가 개입하여 오류의 근본적인 원인을 해결해야 합니다.

SinglePageRestore

이 상태는 사서함 데이터베이스 복사본에서 단일 페이지 복원 작업이 실행 중임을 나타냅니다.

Get-MailboxDatabaseCopyStatus cmdlet에는 또한 사용 중인 복제 네트워크에 대한 세부 정보를 반환하는 ConnectionStatus라는 매개 변수가 포함됩니다. 이 매개 변수를 사용하면 작업의 출력에서 두 개의 추가 출력 필드 IncomingLogCopyingNetworkSeedingNetwork가 채워집니다.

Get-MailboxDatabaseCopyStatus 예

다음 예에서는 Get-MailboxDatabaseCopyStatus cmdlet을 사용합니다. 각 예에서는 Format-List cmdlet에 대한 결과를 파이프하여 출력을 목록 형식으로 표시합니다.

이 예에서는 DB2 데이터베이스의 모든 복사본에 대한 상태 정보를 반환합니다.

Get-MailboxDatabaseCopyStatus -Identity DB2 | Format-List

이 예에서는 EXMBX2 사서함 서버의 모든 데이터베이스 복사본에 대한 상태를 반환합니다.

Get-MailboxDatabaseCopyStatus -Server MBX2 | Format-List

이 예에서는 로컬 사서함 서버의 모든 데이터베이스 복사본에 대한 상태를 반환합니다.

Get-MailboxDatabaseCopyStatus -Local | Format-List

이 예에서는 MBX1 사서함 서버의 DB3 데이터베이스에 대한 상태, 로그 전달 및 시드 네트워크 정보를 반환합니다.

Get-MailboxDatabaseCopyStatus -Identity DB3\MBX1 -ConnectionStatus | Format-List

Get-MailboxDatabaseCopyStatus cmdlet 사용에 대한 자세한 내용은 Get-MailboxDatabaseCopyStatus를 참조하십시오.

Get-MailboxDatabaseCopyStatus Cmdlet

Test-ReplicationHealth Cmdlet

Test-ReplicationHealth cmdlet을 사용하여 사서함 데이터베이스 복사본에 대한 연속 복제 상태 정보를 볼 수 있습니다. 이 cmdlet을 사용하여 복제 및 재생 상태의 모든 측면을 확인하여 DAG에 있는 특정 사서함 서버의 전체 개요를 제공할 수 있습니다.

Test-ReplicationHealth cmdlet은 연속 복제 및 연속 복제 파이프라인, Active Manager의 가용성, 기본 클러스터 서비스, 쿼럼 및 네트워크 구성 요소의 상태를 사전에 모니터링하는 데 사용됩니다. Test-ReplicationHealth는 DAG의 모든 사서함 서버에 대해 로컬 또는 원격으로 실행할 수 있습니다. Test-ReplicationHealth cmdlet은 다음 표에 나열된 테스트를 수행합니다.

Test-ReplicationHealth cmdlet 테스트

테스트 이름 설명

ClusterService

지정된 DAG 구성원에서(또는 DAG 구성원이 지정되지 않은 경우 로컬 서버에서) 클러스터 서비스가 실행 중이고 연결 가능한지 확인합니다.

ReplayService

지정된 DAG 구성원에서(또는 DAG 구성원이 지정되지 않은 경우 로컬 서버에서) Microsoft Exchange 복제 서비스가 실행 중이고 연결 가능한지 확인합니다.

ActiveManager

지정된 DAG 구성원에서(또는 DAG 구성원이 지정되지 않은 경우 로컬 서버에서) 실행 중인 Active Manager의 인스턴스가 유효한 역할(기본, 보조 또는 독립 실행형)인지 확인합니다.

TasksRpcListener

지정된 DAG 구성원에서(또는 DAG 구성원이 지정되지 않은 경우 로컬 서버에서) Tasks RPC(원격 프로시저 호출) 서버가 실행 중이고 연결 가능한지 확인합니다.

TcpListener

지정된 DAG 구성원에서(또는 DAG 구성원이 지정되지 않은 경우 로컬 서버에서) TCP 로그 복사 수신기가 실행 중이고 연결 가능한지 확인합니다.

DagMembersUp

모든 DAG 구성원이 사용 가능하고, 실행 중이고, 연결 가능한지 확인합니다.

ClusterNetwork

지정된 DAG 구성원의 모든 클러스터 관리 네트워크(또는 DAG 구성원이 지정되지 않은 경우 로컬 서버)를 사용 가능한지 확인합니다.

QuorumGroup

기본 클러스터 그룹(쿼럼 그룹)이 정상적이고 온라인 상태인지 확인합니다.

FileShareQuorum

DAG에 대해 구성된 미러링 모니터 서버, 감시 디렉터리 및 공유가 연결 가능한지 확인합니다.

DBCopySuspended

지정된 DAG 구성원에서(또는 DAG 구성원이 지정되지 않은 경우 로컬 서버에서) 사서함 데이터베이스 복사본이 Suspended 상태인지 확인합니다.

DBCopyFailed

지정된 DAG 구성원에서(또는 DAG 구성원이 지정되지 않은 경우 로컬 서버에서) 사서함 데이터베이스 복사본이 Failed 상태인지 확인합니다.

DBInitializing

지정된 DAG 구성원에서(또는 DAG 구성원이 지정되지 않은 경우 로컬 서버에서) 사서함 데이터베이스 복사본이 Initializing 상태인지 확인합니다.

DBDisconnected

지정된 DAG 구성원에서(또는 DAG 구성원이 지정되지 않은 경우 로컬 서버에서) 사서함 데이터베이스 복사본이 Disconnected 상태인지 확인합니다.

DBLogCopyKeepingUp

지정된 DAG 구성원에서(또는 DAG 구성원이 지정되지 않은 경우 로컬 서버에서) 데이터베이스의 수동 복사본에 의한 로그 복사 및 검사가 활성 복사본의 로그 생성 작업을 따라갈 수 있는지 확인합니다.

DBLogReplayKeepingUp

지정된 DAG 구성원에서(또는 DAG 구성원이 지정되지 않은 경우 로컬 서버에서) 데이터베이스의 수동 복사본에 대한 재생 작업이 로그 복사 및 검사 작업을 따라갈 수 있는지 확인합니다.

Test-ReplicationHealth 예

이 예에서는 Test-ReplicationHealth cmdlet을 사용하여 MBX1 사서함 서버의 복제 상태를 테스트합니다.

Test-ReplicationHealth -Identity MBX1

Get-MailboxDatabaseCopyStatus Cmdlet

크림슨 채널 이벤트 로깅

Windows Server 2008에는 Windows 로그 및 응용 프로그램 및 서비스 로그 등 두 가지 범주의 이벤트 로그가 포함됩니다. Windows 로그 범주에는 이전 버전의 Windows에서 사용할 수 있는 이벤트 로그 응용 프로그램, 보안 및 시스템 이벤트 로그가 포함됩니다. 또한 두 개의 새 로그 설치 로그 및 ForwardedEvents 로그도 포함됩니다. Windows 로그는 레거시 응용 프로그램의 이벤트 및 전체 시스템에 적용되는 이벤트를 저장하는 데 사용됩니다.

응용 프로그램 및 서비스 로그는 새로운 범주의 이벤트 로그입니다. 이러한 로그는 시스템 전체에 영향을 미칠 수 있는 이벤트가 아닌 단일 응용 프로그램 또는 구성 요소의 이벤트를 저장합니다. 이러한 새로운 범주의 이벤트 로그를 응용 프로그램의 크림슨 채널이라고 합니다.

응용 프로그램 및 서비스 로그 범주에는 네 개의 하위 유형인 관리, 운영, 분석 및 디버그 로그가 포함됩니다. 관리 로그의 이벤트는 이벤트 로그 레코드를 사용하여 문제를 해결하는 경우에 특히 유용합니다. 관리 로그의 이벤트는 이벤트에 응답하는 방법에 대한 지침을 제공합니다. 운영 로그의 이벤트도 유용하지만 관리자 개입이 더 많이 필요할 수 있습니다. 관리 및 디버그 로그는 사용자에게 친숙하지 않습니다. 분석 로그(기본적으로 숨겨져 있고 사용할 수 없도록 설정됨)는 문제를 추적하는 이벤트를 저장하고 많은 양의 이벤트가 기록되는 경우가 많습니다. 디버그 로그는 개발자가 응용 프로그램을 디버깅할 때 사용됩니다.

Exchange 2010은 응용 프로그램 및 서비스 로그 영역의 크림슨 채널에 이벤트를 기록합니다. 다음 단계를 수행하여 이러한 채널을 볼 수 있습니다.

  1. 이벤트 뷰어를 엽니다.

  2. 콘솔 트리에서 응용 프로그램 및 서비스 로그 > Microsoft > Exchange로 이동합니다.

  3. Exchange에서 크림슨 채널 HighAvailability 또는 MailboxDatabaseFailureItems를 선택합니다.

HighAvailability 채널에는 Microsoft Exchange 복제 서비스의 시작 및 종료와 관련된 이벤트 및 Microsoft Exchange 복제 서비스 내에서 실행되는 다양한 구성 요소(예: Active Manager, 타사 동시 복제 API, Tasks RPC 서버, TCP 수신기 및 VSS(볼륨 섀도 복사본 서비스) 기록기)가 포함됩니다. HighAvailability 채널은 또한 Active Manager에서 Active Manager 역할 모니터링과 관련된 이벤트 및 데이터베이스 작업 이벤트(예: 데이터베이스 탑재 작업 및 로그 자르기)를 로깅하고 DAG의 기본 클러스터와 관련된 이벤트를 기록하는 데도 사용됩니다.

MailboxDatabaseFailureItems 채널은 복제된 사서함 데이터베이스에 영향을 주는 모든 오류와 연관된 이벤트를 기록하는 데 사용됩니다.

Get-MailboxDatabaseCopyStatus Cmdlet

CollectOverMetrics.ps1 스크립트

Exchange 2010에는 CollectOverMetrics.ps1이라는 스크립트가 있고 이는 Scripts 폴더에서 찾아볼 수 있습니다. CollectOverMetrics.ps1은 DAG 구성원 이벤트 로그를 읽어 특정 기간의 데이터베이스 작업에 대한 정보(데이터베이스 탑재, 이동 및 장애 조치 등)를 수집합니다. 각 작업에 대해 스크립트는 다음 정보를 기록합니다.

  • 데이터베이스의 ID

  • 작업이 시작되고 종료된 시간

  • 작업 시작 및 종료 시에 데이터베이스가 탑재된 서버

  • 작업 이유

  • 작업이 성공한 경우, 실패한 작업이 있는 경우 오류 정보 포함

스크립트는 행당 하나의 작업씩 정보를 .csv 파일에 작성합니다. 각 DAG에 대해 별도의 .csv 파일을 작성합니다.

이 스크립트는 스크립트의 동작 및 출력을 사용자 지정할 수 있는 매개 변수를 지원합니다. 예를 들어, Database 또는 ReportFilter 매개 변수를 사용하여 지정된 하위 집합으로 결과를 제한할 수 있습니다. 이러한 필터와 일치하는 작업만이 요약 HTML 보고서에 포함됩니다. 사용 가능한 매개 변수는 다음 표에 나열되어 있습니다.

CollectOverMetrics.ps1 스크립트 매개 변수

매개 변수 설명

DatabaseAvailabilityGroup

메트릭을 수집할 DAG의 이름을 지정합니다. 이 매개 변수를 생략하면 로컬 서버가 구성원으로 속한 DAG가 사용됩니다. 여러 DAG의 보고서에서 정보를 수집하고 보고하는 데 와일드카드 문자를 사용할 수 있습니다.

Database

보고서를 생성해야 할 데이터베이스의 목록을 제공합니다. 와일드카드 문자가 지원됩니다(예: -Database:"DB1","DB2" 또는 -Database:"DB*").

StartTime

보고 기간을 지정합니다. 이 기간 동안 스크립트는 로그된 이벤트만을 수집합니다. 즉, 스크립트는 부분 작업 레코드를 캡처할 수 있습니다(예를 들어, 해당 기간이 시작될 때의 작업 끝 또는 그 반대의 경우만). StartTime 또는 EndTime이 지정되지 않은 경우 스크립트의 기본값은 지난 24시간이 됩니다. 하나의 매개 변수만 지정된 경우 기간은 24시간이며 지정된 시간의 시작 또는 끝입니다.

EndTime

보고 기간을 지정합니다. 이 기간 동안 스크립트는 로그된 이벤트만을 수집합니다. 즉, 스크립트는 부분 작업 레코드를 캡처할 수 있습니다(예를 들어, 해당 기간이 시작될 때의 작업 끝 또는 그 반대의 경우만). StartTime 또는 EndTime이 지정되지 않은 경우, 스크립트의 기본값은 지난 24시간입니다. 하나의 매개 변수만이 지정된 경우 기간은 24시간이며 지정된 시간의 시작 또는 끝입니다.

ReportPath

이벤트 처리 결과를 저장하는 데 사용할 폴더를 지정합니다. 이 매개 변수를 생략하면 Scripts 폴더가 사용됩니다. 지정된 경우, 스크립트는 스크립트에서 생성된 .csv 파일의 목록을 가져와 이를 원본 데이터로 사용하여 요약 HTML 보고서를 생성합니다. 보고서는 -GenerateHtmlReport 옵션을 사용하여 생성된 것과 같습니다. 여러 다른 시간 또는 중복된 시간이라도 여러 데이터베이스 가용성 그룹에 파일이 생성될 수 있으며 스크립트는 모든 데이터를 병합합니다.

GenerateHtmlReport

스크립트는 기록된 모든 정보를 수집하며 작업 유형별로 데이터를 분류한 다음 각 그룹의 통계를 포함하는 HTML 파일을 생성하도록 지정합니다. 보고서에는 각 그룹에 총 작업 수, 실패한 작업의 수, 각 그룹 내에서 소요된 시간의 통계가 포함됩니다. 또한 보고서에는 작업 실패로 인해 발생한 오류 유형의 검색 결과도 포함됩니다.

ShowHtmlReport

HTML로 생성된 보고서가 생성 후 웹 브라우저에 표시되도록 지정합니다.

SummariseCSVFiles

스크립트는 스크립트에서 이전에 생성한 기존 .csv 파일에서 데이터를 읽도록 지정합니다. 이 데이터는 GenerateHtmlReport 매개 변수에서 생성된 보고서와 유사한 요약 보고서를 생성하는 데 사용됩니다.

ActionType

스크립트가 수집해야 하는 작업 조치 유형을 지정합니다. 이 매개 변수의 값은 Move, Mount, DismountRemount입니다. Move 값은 데이터베이스가 활성 서버를 변경하는 시간, 이동이나 장애 조치로 제어되는지 여부를 참조합니다. Mount, DismountRemount 값은 다른 컴퓨터로 이동하지 않고 데이터베이스가 탑재된 상태를 변경하는 시간을 참조합니다.

ActionTrigger

스크립트에서 수집되어야 하는 관리 작업을 지정합니다. 이 매개 변수의 값은 Admin 또는 Automatic입니다. 자동 조치는 시스템에서 자동으로 수행됩니다(예를 들어, 서버가 오프라인인 경우의 장애 조치). 관리 조치는 Exchange 관리 셸 또는 Exchange 관리 콘솔을 사용하여 관리자가 수행한 조치입니다.

RawOutput

스크립트는 write-output과 마찬가지로 .csv 파일에 직접 작성된 결과를 출력 스트림에 작성하도록 지정합니다. 이 정보는 다른 명령으로 파이프될 수 있습니다.

IncludedExtendedEvents

스크립트는 데이터베이스를 탑재하는 데 소요된 시간의 진단 세부 내용을 제공하는 이벤트를 수집하도록 지정합니다. 서버의 응용 프로그램 이벤트 로그가 매우 클 경우 시간이 오래 소요되는 단계일 수 있습니다.

MergeCSVFiles

스크립트는 각 작업에 대한 데이터를 포함한 모든 .csv 파일을 가져와서 단일 .csv 파일에 병합하도록 지정합니다.

ReportFilter

필터가 .csv 파일에 나타난 대로 필드를 사용하여 작업에 적용되도록 지정합니다. 이 매개 변수는 각 요소가 $_로 설정되며 부울 값을 반환하는 Where 작업과 동일한 형식을 사용합니다. 예를 들면 다음과 같습니다. {$_DatabaseName -notlike "Mailbox Database*"}는 보고서에서 기본 데이터베이스를 제외하는 데 사용될 수 있습니다.

CollectOverMetrics.ps1 예

다음 예에서는 DAG1이라는 DAG에서 DB*(와일드카드 문자 포함)가 일치하는 모든 데이터베이스의 메트릭을 수집합니다. 메트릭이 수집되면 HTML 보고서가 생성되고 표시됩니다.

CollectOverMetrics.ps1 -DatabaseAvailabilityGroup DAG1 -Database:"DB*" -GenerateHTMLReport -ShowHTMLReport

다음 예에서는 요약 HTML 보고서가 필터링될 수 있는 방법을 나타냅니다. 첫 번째 방법은 데이터베이스 이름의 목록을 가져오는 Database 매개 변수를 사용하는 것입니다. 요약 보고서에는 이들 데이터베이스에 대한 데이터만이 포함됩니다. 다음 두 예에서는 ReportFilter 옵션을 사용합니다. 마지막 예에서는 모든 기본 데이터베이스를 필터링합니다.

CollectOverMetrics -SummariseCsvFiles (dir *.csv) -Database MailboxDatabase123,MailboxDatabase456
CollectOverMetrics -SummariseCsvFiles (dir *.csv) -ReportFilter { $_.DatabaseName -notlike "Mailbox Database*" }
CollectOverMetrics -SummariseCsvFiles (dir *.csv) -ReportFilter { ($_.ActiveOnStart -like "ServerXYZ*") -and ($_.ActiveOnEnd -notlike "ServerXYZ*") }

Get-MailboxDatabaseCopyStatus Cmdlet

CollectReplicationMetrics.ps1 스크립트

Exchange 2010에 포함된 다른 상태 메트릭 스크립트는 CollectReplicationMetrics.ps1입니다. 이 스크립트는 스크립트가 실행 중일 때 실시간으로 메트릭을 수집하므로 활성 형태의 모니터링을 제공합니다. CollectReplicationMetrics.ps1은 데이터베이스 복제와 관련된 성능 카운터의 데이터를 수집합니다. 스크립트는 여러 사서함 서버의 카운터 데이터를 수집하며, 각 서버의 데이터를 .csv 파일에 작성한 다음 이 데이터 전체에 다양한 통계를 보고합니다(예를 들어, 각 복사본이 실패하거나 일시 중단된 시간, 평균 복사본 또는 재생 큐 길이 또는 복사본이 장애 조치 조건 밖에 있는 시간).

개별적으로 서버를 지정하거나 전체 DAG를 지정할 수 있습니다. 스크립트를 실행하여 첫 번째로 데이터를 수집한 다음 보고서를 생성하거나, 아니면 스크립트를 실행하여 데이터만을 수집하거나 이미 수집된 데이터에 대해 보고할 수 있습니다. 데이터가 샘플링되는 빈도 및 데이터를 수집하는 총 기간을 지정할 수 있습니다.

각 서버에서 수집된 데이터는 파일 이름 CounterData.<ServerName>.<TimeStamp>.csv로 작성됩니다. DagName 매개 변수로 스크립트를 실행하지 않은 경우 요약 보고서는 HaReplPerfReport.<DAGName>.<TimeStamp>.csv 또는 HaReplPerfReport.<TimeStamp>.csv라는 이름의 파일에 작성됩니다.

스크립트는 PowerShell 작업을 시작하여 각 서버에서 데이터를 수집합니다. 데이터가 수집되는 전체 시간 동안 이러한 작업을 실행합니다. 여러 서버를 지정하는 경우 이 프로세스는 상당한 양의 메모리를 사용할 수 있습니다. 데이터가 요약 보고서로 처리되는 프로세스의 마지막 단계에서는 대용량의 데이터를 처리하기 위해 시간이 꽤 소요될 수도 있습니다. 한 대의 컴퓨터에서 수집 단계를 실행한 다음 다른 컴퓨터에서 데이터를 처리하도록 복사할 수 있습니다.

CollectReplicationMetrics.ps1 스크립트는 스크립트의 동작 및 출력을 사용자 지정할 수 있는 매개 변수를 지원합니다. 사용 가능한 매개 변수는 다음 표에 나열되어 있습니다.

CollectReplicationMetrics.ps1 스크립트 매개 변수

매개 변수 설명

DagName

메트릭을 수집할 DAG의 이름을 지정합니다. 이 매개 변수를 생략하면 로컬 서버가 구성원으로 속한 DAG가 사용됩니다.

DatabaseNames

보고서를 생성해야 할 데이터베이스의 목록을 제공합니다. 와일드카드 문자를 사용할 수 있습니다(예: -DatabaseNames:"DB1","DB2" 또는 -DatabaseNames:"DB*").

ReportPath

이벤트 처리 결과를 저장하는 데 사용할 폴더를 지정합니다. 이 매개 변수를 생략하면 Scripts 폴더가 사용됩니다.

Duration

수집 프로세스를 실행할 기간을 지정합니다. 일반적인 값은 1시간에서 3시간입니다. 각 샘플 사이의 긴 간격 또는 예약된 작업에서 실행한 일련의 더 짧은 작업으로만 더 긴 기간이 사용되어야 합니다.

Frequency

데이터 메트릭을 수집할 빈도를 지정합니다. 일반적인 값은 30초, 1분 또는 5분입니다. 일반적으로, 이보다 더 짧은 간격은 각 샘플 사이의 주요 변경 내용을 나타내지 않습니다.

Servers

통계를 수집할 서버의 ID를 지정합니다. 와일드카드 문자 또는 GUID를 포함한 값을 지정할 수 있습니다.

SummariseFiles

.csv 파일의 목록을 지정하여 요약 보고서를 생성합니다. CounterData.<CounterData>*라는 파일이 있으며 CollectReplicationMetrics.ps1 스크립트에서 생성됩니다.

Mode

스크립트가 실행되는 처리 단계를 지정합니다. 다음 값을 사용할 수 있습니다.

  • CollectAndReport   이 값은 기본값입니다. 이 값은 스크립트가 서버에서 데이터를 수집한 다음 요약 보고서를 생성하도록 처리해야 한다는 것을 모두 의미합니다.

  • CollectOnly   이 값은 스크립트가 데이터만을 수집하고 보고서를 생성하지 않음을 의미합니다.

  • ProcessOnly   이 값은 스크립트가 .csv 파일에서 데이터를 가져와 요약 보고서를 생성하도록 처리함을 의미합니다. SummariseFiles 매개 변수는 처리할 파일 목록이 있는 스크립트를 제공하는 데 사용됩니다.

MoveFilestoArchive

스크립트는 파일을 처리한 후 압축된 폴더로 이동하도록 지정합니다.

LoadExchangeSnapin

스크립트가 Exchange 셸 명령을 로드하도록 지정합니다. 스크립트를 예약된 작업에서와 같이 Exchange 관리 셸 밖에서 실행해야 할 때 이 매개 변수가 유용합니다.

CollectReplicationMetrics.ps1 예

다음 예에서는 1시간짜리 데이터를 1분 간격으로 샘플링된 DAG "DAG1"의 모든 서버에서 수집하여 요약 보고서를 생성합니다. 또한 ReportPath 매개 변수가 사용되며 이로 인해 스크립트가 모든 파일을 현재 디렉터리에 배치합니다.

CollectReplicationMetrics.ps1 -DagName DAG1 -Duration "01:00:00" -Frequency "00:01:00" -ReportPath

다음 예에서는 "CounterData*"와 일치하는 모든 파일에서 데이터를 읽은 다음 요약 보고서를 생성합니다.

CollectReplicationMetrics.ps1 -SummariseFiles (dir CounterData*) -Mode ProcessOnly -ReportPath

Get-MailboxDatabaseCopyStatus Cmdlet

CheckDatabaseRedundancy.ps1 스크립트

이름에서 알 수 있듯이, CheckDatabaseRedundancy.ps1 스크립트의 용도는 최소 2개 이상이 구성되어 있고 정상이며 최신 복사본인지를 확인하여 복제된 사서함 데이터베이스의 중복성을 모니터링하며 복제된 데이터베이스의 정상적인 단일 복사본이 있는 경우에만 경고하는 것입니다. 이런 경우, 중복성을 확인할 때 활성 및 수동 복사본 모두가 합산됩니다.

사서함 서버 역할을 설치하면 CheckDatabaseRedundancy.ps1 스크립트는 Database One Copy Alert라는 예약된 작업으로 실행되도록 Exchange에 의해 자동으로 구성됩니다. 기본적으로 예약된 작업 Database One Copy Alert는 60분마다 실행되도록 구성됩니다. Windows 작업 스케줄러를 사용하여 이 동작 및 예약된 작업 설정을 수정할 수 있습니다. 이 스크립트는 DAG 구성원을 우선 확인하도록 설계되었으므로 사서함 서버가 DAG의 구성원이 아니면 해당 스크립트는 즉시 종료됩니다.

또한 스크립트 폴더에서 대화형으로 스크립트를 실행할 수 있습니다. 스크립트를 대화형으로 실행할 때는 데이터베이스 이름 또는 DAG 구성원 이름을 지정해야 합니다. 데이터베이스를 지정하기 위해 MailboxDatabaseName 매개 변수를 사용하며 DAG 구성원을 지정하기 위해 MailboxServerName 매개 변수를 사용합니다. 콘솔에서 대화형으로 실행 시, 스크립트는 중복성 확인을 한 번만 수행하며 화면에서 CurrentState(빨간색 또는 녹색)를 출력합니다.

스크립트 및 cmdlet과 달리, CheckDatabaseRedundancy.ps1은 MonitoringContext 매개 변수를 추가하여 모니터링 모드에서 실행하고 이벤트를 생성할 수도 있습니다. Exchange에서 만든 예약된 작업을 통해 스크립트를 모니터링 모드에서 실행할 수 있습니다. 이 모드에서는 Microsoft SCOM(System Center Operations Manager)과 같은 모니터링 솔루션을 통해 스크립트를 호출할 수도 있습니다. 모니터링 모드에서 스크립트는 빨간색 경고 및 녹색 경고 이벤트를 로컬 서버의 응용 프로그램 이벤트 로그에 생성합니다. 장시간 실행되는 스크립트에 데이터베이스가 20분 이상(연속적이지 않은 기간) "빨간색"인 경우에만 빨간색 경고 이벤트(이벤트 ID 4113)가 생성되며, 데이터베이스가 연속으로 10분 동안 "녹색"인 경우에만 녹색 경고 이벤트(이벤트 ID 4114)가 생성됩니다. 기본적으로 빨간색 경고 이벤트가 생성되면 계속 15분마다 보고됩니다.

또한 스크립트에는 유용한 몇 가지 옵션이 있습니다. 예를 들어, 발생하는 오류에 대한 자세한 내용을 확인하기 위해 ShowDetailedErrors 매개 변수를 추가할 수 있고, 추가 문제 해결 정보를 위해 Verbose 매개 변수를 추가할 수 있습니다. 스크립트에는 또한 스크립트 실행을 완료했을 때 지정한 전자 메일 주소의 목록으로 요약 보고서를 전자 메일로 전송하는 데 사용될 수 있는 SendSummaryMailTos 매개 변수가 포함됩니다. 그러면 관리자가 매시간 보고서를 신속하게 확인하여 중복성 문제가 발생하는지 확인할 수 있습니다. 전자 메일 기능을 사용하는 경우, SendSummaryMailTos 매개 변수를 사용할 때마다 SummaryMailFrom 매개 변수를 포함해야 합니다.

자동화된 예약된 작업이나 SCOM과 같은 모니터링 시스템을 사용하여 일반적인 모니터링 작업의 일환으로 이 스크립트를 정기적으로 실행하는 것이 좋습니다. 오랜 기간 데이터베이스 중복성을 손상되지 않은 상태로 유지하려면 60분마다 스크립트를 실행합니다. 스크립트를 실행할 때 -1 또는 0으로 설정하는 경우 스크립트에는 무한정으로 스크립트를 실행하도록 사용될 수 있는 TerminateAfterDurationSecs라는 매개 변수가 포함되어 있습니다.

SCOM과 같은 모니터링 솔루션을 실행하지 않는 경우 자동으로 만들어진 예약된 작업을 통해 스크립트 실행을 자동화하고 예약하도록 하는 것이 좋습니다.

Windows Server 2008 SP2 작업 스케줄러에 알려진 문제가 있습니다. 이는 장시간 실행되는 작업을 예약한 경우 작업 스케줄러에서 충돌을 초래할 수 있습니다. 이러한 문제가 Windows Server 2008 R2에는 없으므로 가능한 경우 Windows Server 2008 R2에서 스크립트를 실행합니다. Windows Server 2008 R2에서 스크립트를 실행할 수 없는 경우 및 Windows Server 2008 SP2에서 스크립트를 실행 중인 경우 두 가지 수정 사항을 사용하는 것이 좋습니다. 첫 번째로, 60분간 기본 제공되는 임시 사용 중지가 있는 스크립트를 실행하는 것 대신 다음 매개 변수를 사용하여 5분마다 스크립트를 실행합니다.

CheckDatabaseRedundancy.ps1 -MonitoringContext -SleepDurationBetweenIterationsSecs:0 -TerminateAfterDurationSecs:1 -SuppressGreenEventForSecs:0 -ReportRedEventAfterDurationSecs:0 -ReportRedEventIntervalSecs:0 -ShowDetailedErrors

두 번째로, 가능한 경우 SCOM을 사용하여 임시 사용 중지된 동작을 정의합니다(즉, 3개의 빨간색 이벤트가 20분 내에 로그되며 경고를 생성합니다. 녹색 경고 이벤트가 로그되면 CurrentState를 녹색으로 변경합니다).

예약된 작업 Database One Copy Alert가 변경되거나 제거된 경우 다음 명령을 실행하여 삭제하고 다시 예약할 수 있습니다.

schtasks /create /TN "Check Database Redundancy" /TR "Powershell.exe -NonInteractive -WindowStyle Hidden -command 'C:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1'; Connect-ExchangeServer -auto; 'C:\Program Files\Microsoft\Exchange Server\V14\Scripts\CheckDatabaseRedundancy.ps1 -MonitoringContext -ShowDetailedErrors -SummaryMailFrom:'SMTPFromAddress@contoso.com' -SendSummaryMailTos:@('SMTPToAddress@contoso.com') -ErrorAction:Continue" /RU SYSTEM /SC HOURLY

위의 스크립트에서 매개 변수를 사용할 스크립트 매개 변수로 대체합니다. 스크립트의 추가 매개 변수가 스크립트에서 설명됩니다.

schtasks 명령줄 도구를 사용하여 예약된 작업을 작성한 경우 /TR 옵션이 261자로 제한됩니다. 위의 예는 해당 제한을 초과합니다. 사용하는 매개 변수와 경로가 /TR 옵션에서 261자를 초과하는 경우 관리 도구 메뉴에서 작업 스케줄러 애플릿을 사용하여 예약된 작업을 수동으로 생성해야 합니다. 또는, 다음 XML을 메모장에 복사하여 붙여넣고, 적절하게 편집하여 XML 파일로 저장하고 작업 스케줄러 애플릿을 사용하여 가져올 수 있습니다.

<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.2" xmlns="https://schemas.microsoft.com/windows/2004/02/mit/task">
  <RegistrationInfo>
    <Date>2010-05-11T15:55:47</Date>
    <Author>administrator</Author>
  </RegistrationInfo>
  <Triggers>
    <TimeTrigger>
      <Repetition>
        <Interval>PT1H</Interval>
        <StopAtDurationEnd>false</StopAtDurationEnd>
      </Repetition>
      <StartBoundary>2010-05-11T15:55:00</StartBoundary>
      <Enabled>true</Enabled>
    </TimeTrigger>
  </Triggers>
  <Principals>
    <Principal id="Author">
      <UserId>SYSTEM</UserId>
      <RunLevel>HighestAvailable</RunLevel>
    </Principal>
  </Principals>
  <Settings>
    <IdleSettings>
      <Duration>PT10M</Duration>
      <WaitTimeout>PT1H</WaitTimeout>
      <StopOnIdleEnd>true</StopOnIdleEnd>
      <RestartOnIdle>false</RestartOnIdle>
    </IdleSettings>
    <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
    <DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries>
    <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
    <AllowHardTerminate>true</AllowHardTerminate>
    <StartWhenAvailable>false</StartWhenAvailable>
    <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
    <AllowStartOnDemand>true</AllowStartOnDemand>
    <Enabled>true</Enabled>
    <Hidden>false</Hidden>
    <RunOnlyIfIdle>false</RunOnlyIfIdle>
    <WakeToRun>false</WakeToRun>
    <ExecutionTimeLimit>PT72H</ExecutionTimeLimit>
    <Priority>7</Priority>
  </Settings>
  <Actions Context="Author">
    <Exec>
      <Command>Powershell.exe</Command>
      <Arguments>-NonInteractive -WindowStyle Hidden -command 'C:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1'; Connect-ExchangeServer -auto; C:\Operations\CheckDatabaseRedundancy.ps1 -MonitoringContext -ShowDetailedErrors -SummaryMailFrom:'SMTPFromAddress@contoso.com' -SendSummaryMailTos:@('SMTPToAddress@contoso.com') -ErrorAction:Continue</Arguments>
    </Exec>
  </Actions>
</Task>

Get-MailboxDatabaseCopyStatus Cmdlet

 © 2010 Microsoft Corporation. 모든 권리 보유.