高可用性とサイト復元の監視

 

適用先: 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 には、定期的な予防監視の一部として使用できる組み込みツールと機能が含まれています。高可用性とサイト復元のための監視に関する主なコマンドレットは、Get-MailboxDatabaseCopyStatusTest-ReplicationHealth です。Exchange 2010 では、監視機能とレポートの状態を実行できるコマンドレットを提供するほか、Windows Server のクリムゾン チャネル機能を利用する新しいイベント ログ ストリームおよびこれらのイベント チャネルからデータを収集し分析できる組み込みスクリプトを提供します。

データベース可用性グループ (DAG) のメールボックス データベース コピーの稼働状態を監視する方法については、このトピックで詳細を参照してください。

目次

Get-MailboxDatabaseCopyStatus コマンドレット

Test-ReplicationHealth コマンドレット

クリムゾン チャネルのイベント ログ

CollectOverMetrics.ps1 スクリプト

CollectReplicationMetrics.ps1 スクリプト

CheckDatabaseRedundancy.ps1 スクリプト

Get-MailboxDatabaseCopyStatus コマンドレット

Get-MailboxDatabaseCopyStatus コマンドレットを使用すると、メールボックス データベース コピーに関する状態の情報を表示できます。このコマンドレットにより、特定のデータベースのすべてのコピーに関する情報、特定のサーバー上のデータベースの特定のコピーに関する情報、またはサーバー上のすべてのデータベース コピーに関する情報を表示することができます。次の表では、メールボックス データベース コピーのコピーの状態で使用可能な値について説明します。

データベース コピーの状態

データベース コピーの状態 説明

Failed

メールボックス データベース コピーは、中断されていないのでエラー状態にあり、ログ ファイルをコピーまたは再生することができません。データベース コピーが失敗状態で、中断されていない間、システムはコピーの状態にエラーを引き起こした問題が解決されたかどうかを定期的にチェックします。問題が解決したことがシステムによって検出され、他に問題がなければ、コピーの状態は自動的に Healthy に変更されます。

Seeding

メールボックス データベース コピーがシード処理されているか、メールボックス データベース コピーのコンテンツ インデックスがシード処理されています。あるいは、両方がシード処理されています。シード処理が完了すると、コピーの状態は初期化中に変更されます。

SeedingSource

メールボックス データベースのコピーは、データベース コピーのシード処理のソースとして使用されています。

Suspended

管理者が Suspend-MailboxDatabaseCopy コマンドレットを実行して、データベース コピーを手動で中断した結果、メールボックス データベース コピーが中断状態になっています。

Healthy

メールボックス データベース コピーはログ ファイルを正常にコピーおよび再生しているか、使用可能なすべてのログ ファイルを正常にコピーおよび再生しました。

ServiceDown

Microsoft Exchange レプリケーション サービスを利用できないか、またはメールボックス データベース コピーをホストするサーバーでサービスが実行されています。

Initializing

データベース コピーが作成されたとき、Microsoft Exchange レプリケーション サービスの開始中または開始直後、および Suspended、ServiceDown、Failed、Seeding、SinglePageRestore、LostWrite、または Disconnected から別の状態に変移する間は、メールボックス データベース コピーは初期化状態になります。この状態にあるとき、データベースとログ ストリームが一貫した状態にあるかどうかをシステムが確認しています。ほとんどの場合、コピーの状態は約 15 秒間、初期化状態になりますが、いずれにしても、通常はこの状態が 30 秒以上続くことはありません。

Resynchronizing

メールボックス データベース コピーとそのログ ファイルが、データベースのアクティブ コピーと比較され、2 つのコピー間に相違がないかチェックされます。相違が検出され、解決されるまで、コピーの状態はこの状態のままになります。

Mounted

アクティブ コピーはオンラインで、クライアント接続を受け付けています。メールボックス データベース コピーのアクティブ コピーのみが、Mounted のコピーの状態になることができます。

Dismounted

アクティブ コピーはオフラインで、クライアント接続を受け付けていません。メールボックス データベース コピーのアクティブ コピーのみが、Dismounted のコピーの状態になることができます。

Mounting

アクティブ コピーがオンラインになりつつありますが、まだクライアント接続を受け付けていません。メールボックス データベース コピーのアクティブ コピーのみが、Mounting のコピーの状態になることができます。

Dismounting

アクティブ コピーはオフラインになりつつあり、クライアント接続を終了しています。メールボックス データベース コピーのアクティブ コピーのみが、Dismounting のコピーの状態になることができます。

DisconnectedAndHealthy

メールボックス データベース コピーはアクティブ データベース コピーから切断され、切断時には Healthy 状態にありました。この状態は、データベース コピーのソース データベース コピーへの接続状態を表します。ソース コピーとターゲット データベース コピーとの間の DAG ネットワークに障害が発生したときに、この状態が報告されることがあります。

DisconnectedAndResynchronizing

メールボックス データベース コピーはアクティブ データベース コピーから切断され、切断時には、再同期中の状態にありました。この状態は、データベース コピーのソース データベース コピーへの接続状態を表します。ソース コピーとターゲット データベース コピーとの間の DAG ネットワークに障害が発生したときに、この状態が報告されることがあります。

FailedAndSuspended

障害が検出され、障害の解決には管理者の介入が明示的に必要であるため、失敗および中断の状態がシステムによって同時に設定されました。たとえば、アクティブなメールボックス データベースとデータベース コピーとの間に修復不可能な相違がシステムによって検出されたときに、この状態になります。Failed 状態とは異なり、問題が解決されたかどうかがシステムによって定期的にチェックされることがなく、自動的に回復することもありません。代わりに、データベース コピーが正常な状態に戻るには、管理者が介入して障害の原因を解決する必要があります。

SinglePageRestore

この状態は、単一ページの復元操作がメールボックス データベース コピーで行われていることを示します。

Get-MailboxDatabaseCopyStatus コマンドレットには、使用中のレプリケーション ネットワークの詳細を返す ConnectionStatus というパラメーターも含まれています。このパラメーターを使用すると、さらに 2 つの出力フィールド IncomingLogCopyingNetwork および SeedingNetwork がタスクの出力に挿入されます。

Get-MailboxDatabaseCopyStatus の例

次の例では、Get-MailboxDatabaseCopyStatus コマンドレットを使用します。それぞれの例では、結果を Format-List コマンドレットにパイプライン処理して、出力を一覧形式で表示します。

この例では、データベース DB2 のすべてのコピーの状態情報を返します。

Get-MailboxDatabaseCopyStatus -Identity DB2 | Format-List

この例では、メールボックス サーバー MBX2 上のすべてのデータベース コピーの状態を返します。

Get-MailboxDatabaseCopyStatus -Server MBX2 | Format-List

この例では、ローカル メールボックス サーバー上のすべてのデータベース コピーの状態を返します。

Get-MailboxDatabaseCopyStatus -Local | Format-List

この例では、メールボックス サーバー MBX1 上のデータベース DB3 の状態、ログ配布、およびシード用のネットワーク情報を返します。

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

Get-MailboxDatabaseCopyStatus コマンドレットの使用方法の詳細については、「Get-MailboxDatabaseCopyStatus」を参照してください。

Get-MailboxDatabaseCopyStatus コマンドレット

Test-ReplicationHealth コマンドレット

Test-ReplicationHealth コマンドレットを使用すると、メールボックス データベース コピーに関する連続レプリケーションの状態の情報を表示できます。このコマンドレットを使用すると、レプリケーションのあらゆる側面と再生の状態を確認して、DAG 内の特定のメールボックス サーバーの完全な概要を提供することができます。

Test-ReplicationHealth コマンドレットは、連続レプリケーションと連続レプリケーション パイプライン、Active Manager の可用性、および基盤を成すクラスター サービス、クォーラム、およびネットワーク コンポーネントの稼働状態を予防的に監視するように設計されています。DAG 内のどのメールボックス サーバーに対しても、ローカルまたはリモートで実行することができます。Test-ReplicationHealth コマンドレットは次の表に示すテストを実行します。

Test-ReplicationHealth コマンドレット テスト

テスト名 説明

ClusterService

クラスター サービスが実行中で、指定された DAG メンバーに到達できたこと、または DAG メンバーが指定されていない場合はローカル サーバーに到達できたことを確認します。

ReplayService

Microsoft Exchange レプリケーション サービスが実行中で、指定された DAG メンバーに到達できたこと、または DAG メンバーが指定されていない場合はローカル サーバーに到達できたことを確認します。

ActiveManager

指定された DAG メンバー (DAG メンバーが指定されていない場合は、ローカル サーバー) で実行中の Active Manager のインスタンスが、有効な役割 (プライマリ、セカンダリ、またはスタンドアロン) になっていることを確認します。

TasksRpcListener

タスク リモート プロシージャ コール (RPC) サーバーが実行中で、指定された DAG メンバーに到達できたこと、または DAG メンバーが指定されていない場合はローカル サーバーに到達できたことを確認します。

TcpListener

TCP ログ コピー リスナーが実行中で、指定された DAG メンバーに到達できたこと、または DAG メンバーが指定されていない場合はローカル サーバーに到達できたことを確認します。

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 コマンドレットを使用して、メールボックス サーバー MBX1 のレプリケーションの状態をテストします。

Test-ReplicationHealth -Identity MBX1

Get-MailboxDatabaseCopyStatus コマンドレット

クリムゾン チャネルのイベント ログ

Windows Server 2008 には、2 つのイベント ログ、Windows ログおよびアプリケーションとサービス ログが含まれています。Windows のログ カテゴリには、前のバージョンの Windows で使用可能なイベント ログ、アプリケーション、セキュリティ、およびシステム イベント ログが含まれています。また、このログ カテゴリには 2 つの新しいログ、セットアップ ログと ForwardedEvents ログも含まれています。Windows ログは、従来のアプリケーションのイベントとシステム全体に適用されるイベントを保存するようになっています。

アプリケーションとサービス ログは、イベント ログの新しいカテゴリです。これらのログには、システム全体に影響を及ぼす可能性のあるイベントよりも、1 つのアプリケーションやコンポーネントからのイベントが保存されます。イベント ログのこの新しいカテゴリは、アプリケーションのクリムゾン チャネルといいます。

アプリケーションとサービス ログ カテゴリには、4 つのサブタイプ、管理、操作、分析、およびデバッグ ログがあります。問題をトラブルシューティングするためにイベント ログ レコードを使用する場合は、管理ログ内のイベントが非常に役立ちます。管理ログ内のイベントは、イベントへの対応方法についてのガイダンスを提供します。操作ログ内のイベントも有用ですが、情報が足りない可能性があります。管理ログとデバッグ ログは、わかりやすく記述されていません。分析ログ (既定では非表示にされ、無効化されています) には、問題を追跡するイベントが保存され、通常は大量のイベントが記録されています。デバッグ ログは、開発者がアプリケーションをデバッグするときに使用されます。

Exchange 2010 は、アプリケーションとサービス ログ領域内のクリムゾン チャネルへのイベントを記録します。これらのチャネルを表示するには、次の手順を実行します。

  1. イベント ビューアーを開きます。

  2. コンソール ツリーで、[アプリケーションとサービス ログ] > [Microsoft] > [Exchange] の順に移動します。

  3. [Exchange] で、クリムゾン チャネルの**[HighAvailability]** または [MailboxDatabaseFailureItems] を選択します。

HighAvailability チャネルには、Microsoft Exchange レプリケーション サービスの起動とシャットダウンに関連するイベント、および Active Manager、サードパーティ製の同期レプリケーション API、タスク RPC サーバー、TCP リスナー、およびボリューム シャドウ コピー サービス (VSS) ライターなど、Microsoft Exchange レプリケーション サービス内で実行されるさまざまなコンポーネントに関連するイベントが含まれます。また、HighAvailability チャネルは、Active Manager 役割監視およびデータベース マウント処理やログの切り詰めなどのデータベース処理イベントに関連するイベントを記録し、DAG の基になるクラスターに関連するイベントを記録するために、Active Manager によって使用されます。

MailboxDatabaseFailureItems チャネルは、レプリケートされたメールボックス データベースに影響を及ぼす障害に関わるイベントの記録に使用されます。

Get-MailboxDatabaseCopyStatus コマンドレット

CollectOverMetrics.ps1 スクリプト

Exchange 2010 には、Scripts フォルダー内に CollectOverMetrics.ps1 というスクリプトが含まれています。CollectOverMetrics.ps1 は DAG メンバーのイベント ログを読み込み、一定の期間のデータベース操作 (データベースのマウント、移動、フェールオーバーなど) に関する情報を収集します。操作のたびに、このスクリプトは次の情報を記録します。

  • データベースの ID

  • 操作の開始時刻と終了時刻

  • 操作の開始時および終了時にデータベースがマウントされていたサーバー

  • 操作の理由

  • 操作が成功したかどうか (操作が失敗した場合はエラーの詳細も含む)

スクリプトはこれらの情報を .csv ファイルに、1 行あたり 1 操作の単位で書き込みます。DAG ごとに異なる .csv ファイルが書き込まれます。

スクリプトの動作と出力をカスタマイズできるパラメーターがサポートされています。たとえば、DatabaseReportFilter パラメーターを使用して、結果の出力を指定したサブセットに制限できます。これらのフィルターに一致する操作のみが、HTML 形式の概要レポートに含まれます。次の表に、使用可能なパラメーターの一覧を示します。

CollectOverMetrics.ps1 スクリプト パラメーター

パラメーター 説明

DatabaseAvailabilityGroup

測定値を収集する DAG の名前を指定します。このパラメーターを省略すると、ローカル サーバーがメンバーになっている DAG が使用されます。ワイルドカード文字を使用して、複数の DAG から情報を収集し、そのレポートを作成することができます。

Database

レポートを生成する必要のあるデータベースの一覧を提供します。-Database:"DB1","DB2" または -Database:"DB*" などのワイルドカード文字がサポートされています。

StartTime

レポートの対象期間を指定します。このスクリプトでは、この期間にログに記録されたイベントのみが収集されます。この結果、操作の記録が一部分のみキャプチャされる場合があります (たとえば、期間の始めに操作終了の情報が含まれる場合やその逆の場合があります)。StartTime パラメーターと EndTime パラメーターのいずれも指定されていない場合、スクリプトの既定値は過去 24 時間です。1 つのパラメーターのみが指定された場合、期間は指定した時刻から 24 時間、または指定した時刻までの 24 時間となります。

EndTime

レポートの対象期間を指定します。このスクリプトでは、この期間にログに記録されたイベントのみが収集されます。この結果、操作の記録が一部分のみキャプチャされる場合があります (たとえば、期間の始めに操作終了の情報が含まれる場合やその逆の場合があります)。StartTimeEndTime のいずれも指定されていない場合、スクリプトの既定値は過去 24 時間です。1 つのパラメーターのみが指定された場合、期間は指定した時刻から 24 時間、または指定した時刻までの 24 時間となります。

ReportPath

イベント処理の結果を保存するためのフォルダーを指定します。このパラメーターを省略すると、Scripts フォルダーが使用されます。このパラメーターを指定すると、スクリプトは生成した .csv ファイルの一覧を取得して参照元データとして使用して、HTML 形式の概要レポートを生成します。このレポートは、-GenerateHtmlReport オプションを指定して生成したレポートと同じものになります。ファイルの生成は、複数のデータベース可用性グループ全体で複数回に分けて実行できます。その期間が重複していてもかまいません。スクリプトはこのすべてのデータを結合します。

GenerateHtmlReport

ログに記録されたすべての情報をスクリプトが収集し、操作の種類ごとにデータを分類し、各グループの統計情報を含む HTML ファイルを生成するよう指定します。レポートには、各グループの操作の総数、失敗した操作の数、および各グループ内での所要時間に関する統計情報が含まれます。また、このレポートには、操作の失敗につながったエラーの種類に関する分析も含まれます。

ShowHtmlReport

HTML 生成レポートが生成後に Web ブラウザーで表示されるように指定します。

SummariseCSVFiles

このスクリプトが以前に生成した既存の .csv ファイルからデータを読み込むよう指定します。この後、このデータを使用して、GenerateHtmlReport パラメーターによって生成されるレポートと同様の概要レポートが生成されます。

ActionType

スクリプトが収集する必要のある操作の種類を指定します。このパラメーターの有効な値は、MoveMountDismount、および Remount です。Move 値は、コントロールされた移動であれフェールオーバーであれ、データベースがそのアクティブ サーバーを変更する場合を示します。Mount 値、Dismount 値、および Remount 値は、データベースが他のコンピューターに移動せずに、マウントの状態を変更する場合を示します。

ActionTrigger

スクリプトが収集する必要のある管理操作を指定します。このパラメーターの有効な値は、Admin または Automatic です。Automatic 操作は、システムによって自動的に実行された操作 (サーバーがオフラインになったときのフェールオーバーなど) のことです。Admin 操作は、Exchange 管理シェルか Exchange 管理コンソールを使用して管理者が実行した操作のことです。

RawOutput

スクリプトが通常は .csv ファイルに書き込む結果を、write-output と同様に、直接出力ストリームに書き込むよう指定します。この情報は他のコマンドにパイプ処理できます。

IncludedExtendedEvents

スクリプトが、データベースのマウントにかかった時間の詳細な診断ができるイベントを収集するよう指定します。サーバーのアプリケーション イベント ログのサイズが非常に大きい場合、この段階で非常に時間がかかる可能性があります。

MergeCSVFiles

スクリプトが各操作に関するデータを含むすべての .csv ファイルを取得し、1 つの .csv ファイルに結合するよう指定します。

ReportFilter

.csv ファイル内に書き込まれるフィールドを使用して、操作にフィルターを適用するよう指定します。このパラメーターでは Where 操作と同じ形式を使用します。各要素は $_ に設定され、ブール値が返されます。たとえば、{$_DatabaseName -notlike "Mailbox Database*"} を使用すると、レポートから既定のデータベースを除外できます。

CollectOverMetrics.ps1 の例

以下の例では、DAG1 という名前の DAG 内で DB* (ワイルドカード文字を含む) と一致するすべてのデータベースの測定値を収集します。測定値の収集後、HTML レポートが収集、表示されます。

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

以下の例では、HTML 形式の概要レポートにフィルターをかける方法を示します。1 つ目の例では、Database パラメーターが使用されています。このパラメーターで、データベース名の一覧を取得します。概要レポートには、これらのデータベースに関するデータのみが含まれます。その次の 2 つの例では、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 コマンドレット

CollectReplicationMetrics.ps1 スクリプト

Exchange 2010 には、もう 1 つの CollectReplicationMetrics.ps1 という正常性測定スクリプトが含まれています。このスクリプトは、スクリプトの実行中に測定値をリアルタイムで収集するので、アクティブな監視を実現します。CollectReplicationMetrics.ps1 では、データベース レプリケーションに関連するパフォーマンス カウンターからデータを収集します。このスクリプトでは、複数のメールボックス サーバーからカウンター データを収集し、各サーバーのデータを .csv ファイルに書き込み、その後このすべてのデータ (各コピーが失敗した、または中断された時間量、コピー キューまたは再生キューの平均の長さ、コピーがフェールオーバーの条件を満たしていなかった時間量など) を基にさまざまな統計情報をレポートすることができます。

サーバーを個別に指定することも、DAG 全体を指定することもできます。スクリプトを実行して最初にデータを収集し、その後レポートを生成できます。また、データを収集するのみ、または収集済みのデータからレポートを生成するのみの目的で、スクリプトを実行できます。データのサンプリング頻度およびデータを収集する全体の期間を指定できます。

各サーバーから収集されたデータは、CounterData.<ServerName>.<TimeStamp>.csv という名前のファイルに書き込まれます。概要レポートは、HaReplPerfReport.<DAGName>.<TimeStamp>.csv、または HaReplPerfReport.<TimeStamp>.csv (DagName パラメーターなしでスクリプトを実行した場合) という名前のファイルに書き込まれます。

このスクリプトにより、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 の例

次の例では、"DAG1" という DAG 内のすべてのサーバーから、1 分間隔でサンプリングして 1 時間分のデータを収集し、その後概要レポートを生成します。さらに、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 コマンドレット

CheckDatabaseRedundancy.ps1 スクリプト

CheckDatabaseRedundancy.ps1 スクリプトの目的は、その名が示す通り、レプリケートされたメールボックス データベースの冗長性を監視することです。これは、現在少なくとも 2 つの構成された正常なコピーが存在することを確認することで実行されます。また、レプリケートされたデータベースの正常なコピーが 1 つしか存在しない場合にはユーザーにアラートを出すことも、このスクリプトの目的です。この場合、アクティブ コピーとパッシブ コピーの両方が、冗長性を判断するときに考慮されます。

メールボックス サーバーの役割がインストールされると、CheckDatabaseRedundancy.ps1 スクリプトが Database One Copy Alert という名前のスケジュールされたタスクとして実行されるように、Exchange によって自動的に構成されます。既定では、スケジュールされたタスク Database One Copy Alert は、60 分ごとに実行するように構成されます。Windows タスク スケジューラを使用して、この動作とスケジュールされたタスクの設定を変更できます。このスクリプトは最初に DAG のメンバーシップをチェックするように設計されているので、メールボックス サーバーが DAG のメンバーでない場合、スクリプトは直ちに終了します。

このスクリプトは、スクリプト フォルダーから対話的に実行することもできます。スクリプトを対話的に実行する場合、データベース名か DAG メンバー名のいずれかを指定する必要があります。データベースを指定するには、MailboxDatabaseName パラメーターを使用します。また、DAG メンバーを指定するには、MailboxServerName パラメーターを使用します。コンソールから対話形式で実行すると、スクリプトは冗長性検査を 1 回のみ実行し、画面上に CurrentState (赤または緑) を出力します。

他のスクリプトやコマンドレットと同様に、CheckDatabaseRedundancy.ps1 にも MonitoringContext パラメーターを追加して、監視モードで実行し、イベントを生成することができます。Exchange によって作成されたスケジュールされたタスクは、スクリプトを監視モードで実行します。このモードは、Microsoft System Center Operations Manager (SCOM) などの監視ソリューションからもスクリプトを起動できるようにします。監視モードでは、スクリプトは赤のアラートおよび緑のアラート イベントを、ローカル サーバーのアプリケーション イベント ログに生成します。赤のアラート イベント (イベント ID 4113) は、1 時間のスクリプトの実行中にデータベースが (連続しない期間で) 20 分以上 "赤" の状態である場合のみに生成されます。また、緑のアラート イベント (イベント ID 4114) は、データベースが連続して 10 分間 "緑" の状態である場合に生成されます。既定では、赤のアラート イベントが一度生成されると、15 分間隔で報告され続けます。

さらに、このスクリプトには他にも便利なオプションがあります。たとえば、ShowDetailedErrors パラメーターを追加して、発生したエラーの詳細情報を取得できます。また、Verbose パラメーターを追加して、追加のトラブルシューティング情報を参照できます。このスクリプトには、SendSummaryMailTos パラメーターも含まれています。このパラメーターを使用すると、スクリプトの実行完了時に指定の電子メール アドレス一覧に概要レポートを電子メールで送信できます。これによって、管理者が 1 時間ごとのレポートをすばやく見て、冗長性の問題が発生していないかどうかを確認できます。電子メール機能を使用する場合は、SendSummaryMailTos パラメーターの使用時に常に SummaryMailFrom パラメーターを含める必要があります。

通常の監視運用の一環として、自動化およびスケジュールされたタスクか SCOM などの監視システムのいずれかを使用し、このスクリプトを定期的に実行することをお勧めします。データベースの冗長性が長期間、危険にさらされることのないようにするため、スクリプトを 60 分ごとに実行します。スクリプトには、TerminateAfterDurationSecs というパラメーターが含まれています。スクリプト実行時にこのパラメーターに -1 または 0 が設定されていると、スクリプトを無限に実行するために使用できます。

SCOM などの監視ソリューションを実行していない場合、自動化およびスケジュールされたタスクが、スクリプトの実行を自動化し、スケジューリングできるようにすることをお勧めします。

Windows Server 2008 SP2 のタスク スケジューラには、長期間実行するタスクをスケジュールした場合にタスク スケジューラがクラッシュする可能性があるという既知の問題があります。このような問題は、Windows Server 2008 R2 には存在しません。そのため、可能であれば、スクリプトを Windows Server 2008 R2 から実行してください。Windows Server 2008 R2 からスクリプトを実行できず、Windows Server 2008 SP2 から実行する場合は、次の 2 点の変更をお勧めします。まず、組み込みの 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="http://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 コマンドレット

 © 2010 Microsoft Corporation.All rights reserved.