SCOM 2012 の問題:管理サーバーを管理グループから削除すると、データウェアハウス同期サーバーがデータベースから削除される

みなさん、こんにちは。
System Center Support Team の三島です。
今回は、System Center 2012 Operations Manage (以下、SCOM) で管理サーバーを削除した際に発生する問題についてお知らせいたします。この問題は影響が大きいのですが、普通に SCOM を使用しているだけだと発生している事になかなか気付きません。現象の説明と併せて確認方法もまとめましたので、是非一度確認して頂ければと思います。

 

問題の詳細
====================================================
System Center Operations Manager 2012(RTM、CU1 および CU2 適用済みに環境)において、管理サーバーを管理グループから削除した際に、データウェアハウス同期サーバーの情報がデータベースから削除されます。データウェアハウス同期サーバーの情報が削除されてしまうと、データウェアハウスへデータの同期が行われなくなるため、レポートに管理サーバーを管理グループから削除する以前までのデータしか表示されないという現象が発生します。なお、この問題が発生した場合にも、同期が正常に行われていない旨を示す警告やエラーは、イベントログやアラートには一切記録されません。そのため、問題が発生しているか否かを判断するためには、以下のクエリを OperationsManagerDW データベースに対して実行し、定期的な同期処理が正常に行われているかを確認する必要があります。

------ここから-----------------------------------
select DWLastModifiedDateTime, r.RuleSystemName
from SynchronizationProcessState s
join [Rule] r
on s.SynchronizationProcessId = r.RuleGuid
order by DWLastModifiedDateTime desc
------ここまで-----------------------------------

クエリの結果は以下のように表示されます。

--------------------------------------------------
DWLastModifiedDateTime         RuleSystemName
2012-08-22 17:43:03.727        Microsoft.SystemCenter.DataWarehouse.Synchronization.ManagedEntity
2012-08-22 17:43:03.643        Microsoft.SystemCenter.DataWarehouse.Synchronization.Relationship
2012-08-22 17:43:03.620        Microsoft.SystemCenter.DataWarehouse.Synchronization.HealthServiceOutage
2012-08-22 17:43:03.610        Microsoft.SystemCenter.DataWarehouse.Synchronization.MaintenanceMode
2012-08-22 17:43:03.580        Microsoft.SystemCenter.DataWarehouse.Synchronization.TypedManagedEntity
2012-08-22 17:42:51.683        Microsoft.SystemCenter.DataWarehouse.Synchronization.DomainSnapshot
2011-07-21 21:15:16.040        Microsoft.SystemCenter.DataWarehouse.Synchronization.MonitorInitialState
---------------------------------------------------

クエリの結果から、DWLastModifiedDateTime に表示されている同期の日時が、最新の同期の日時に更新されているかを確認してください。同期処理は、30 秒毎に実行されますますので、直近 30 秒前の日時が表示されているかを確認します。
なお、結果に表示される日時は UTC で表示されるため、日本時間 (JST) に直すには表示されている時刻に 9 時間を足してください。また、確認には、Microsoft.SystemCenter.DataWarehouse.Synchronization.MonitorInitialState 以外を参照してください。こちらには、データウェアハウスがインストールされた日時が表示されており、この日付が更新される事はありません。同期の日時が更新されていない場合には、今回の問題が発生していると判断する事ができます。その場合には、次の手順で対処を行ってください。

 

対処方法
===================================================
このブログに添付したスクリプトを実行し、データウェアハウス同期サーバーを再構築します。

※実行前の注意点
--------------------------------------------------
PowerShell の既定の設定では、スクリプトを実行することができないように構成されています。
PowerShell のスクリプトの実行ポリシーは、Get-ExecutionPolicy コマンドレットで確認することができます。
必要に応じて Set-ExecutionPolicy RemoteSigned などのコマンドを実行し、実行ポリシーを変更してスクリプトを実行できるように構成してください。

<Get-ExecutionPolicy>
https://technet.microsoft.com/ja-jp/library/dd347644.aspx

<Set-ExecutionPolicy>
https://technet.microsoft.com/ja-jp/library/dd347628.aspx
----------------------------------------------------------------

1. ブログに添付したスクリプトを RMS エミュレーターの任意のパスにコピーします。
(注意) RMS エミュレーターは、SCOM コンソールの [管理] タブにある [管理サーバー] にて、RMS エミュレーターの列から確認できます。

 

2. ファイルの拡張子を .ps1 に変更し、PowerShell スクリプトとして保存します。
3. スクリプトの以下の冒頭箇所を、環境にあわせて編集します。

------ここから------------------------------------
$OperationalDbSqlServerInstance = ""
$OperationalDbDatabaseName = "OperationsManager"
$DataWarehouseSqlServerInstance = ""
$DataWarehouseDatabaseName = "OperationsManagerDW"

$ConsoleDirectory = "C:\Program Files\System Center 2012\Operations Manager\Console"
------ここまで------------------------------------

※編集方法
--------------------------------------------------
- 1 行目: "" に、OperationsManager データベースの インスタンス名(※)を入力します。
- 2 行目: OperationsManager データベースを別名に変更している場合には、設定したデータベース名を入力します。
- 3 行目:"" に、OperationsManagerDW データベースの インスタンス名(※)を入力します。
- 4 行目:OperationsManagerDW データベースを別名に変更している場合には、設定したデータベース名を入力します。
- 5 行目:Operations Manager のコンソール (Microsoft.EnterpriseManagement.Monitoring.Console) を別のパスに保存した場合には、適切なパスを入力します。

(※)インスタンス名を確認するためには、以下のレジストリの値を参照して下さい。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft Operations Manager\3.0\Setup
DatabaseServerName  ( このレジストリの値を 1 行目に入力)
DataWarehouseDBServerName  (このレジストリの値を3 行目に入力)
---------------------------------------------------

4. SCOM の管理者として、RMS エミュレーターにログインします。
5. [スタート] - [すべてのプログラム] - [System Center Operations Manager 2012] - [Operations Manager Shell] を実行します。
6. スクリプトを保存したパスに移動します。  
7. 以下のコマンドを実行します。

.\adddwinstance.ps1

手順は以上です。

 

問題が改善したかどうかの確認方法
===================================================
以下の手順にて、問題が改善したどうかを確認できます。

1. SCOM 管理コンソールを起動し、[監視] - [検出された一覧] の順に選択します。
2. [アクション] ペインから、[ターゲット タイプの変更] をクリックします。
3. データウェアハウス同期サーバー(英語:Data Warehouse Synchronization Server)と入力し、[OK] をクリックします。
4. 検出された一覧に、結果が表示される事を確認します。
※結果が一切表示されない場合には、スクリプトの編集手順 3. において、誤った値を入力している可能性があります。 入力した値を確認し、スクリプトを再度実行して下さい。

5. 追加の確認作業として、以下のクエリを OperationsManagerDW データベースに対して実行します。    

------ここから-----------------------------------
select DWLastModifiedDateTime, r.RuleSystemName
from SynchronizationProcessState s
join [Rule] r
on s.SynchronizationProcessId = r.RuleGuid
order by DWLastModifiedDateTime desc
------ここまで-----------------------------------

6. 同期の日時が最新の日時に更新されている事を確認してください。
最新の日付に更新されていない場合には、スクリプトの編集手順 3. において、誤った値を入力している可能性があります。入力した値を確認し、スクリプトを再度実行して下さい。

クエリの結果は以下のように表示されます。
なお、確認には、Microsoft.SystemCenter.DataWarehouse.Synchronization.MonitorInitialState 以外をご確認下さい。
こちらには、データウェアハウスがインストールされた日時が表示されており、この日付が更新される事はありません。

--------------------------------------------------
DWLastModifiedDateTime         RuleSystemName
2012-08-22 17:43:03.727        Microsoft.SystemCenter.DataWarehouse.Synchronization.ManagedEntity
2012-08-22 17:43:03.643        Microsoft.SystemCenter.DataWarehouse.Synchronization.Relationship
2012-08-22 17:43:03.620        Microsoft.SystemCenter.DataWarehouse.Synchronization.HealthServiceOutage
2012-08-22 17:43:03.610        Microsoft.SystemCenter.DataWarehouse.Synchronization.MaintenanceMode
2012-08-22 17:43:03.580        Microsoft.SystemCenter.DataWarehouse.Synchronization.TypedManagedEntity
2012-08-22 17:42:51.683        Microsoft.SystemCenter.DataWarehouse.Synchronization.DomainSnapshot
2011-07-21 21:15:16.040        Microsoft.SystemCenter.DataWarehouse.Synchronization.MonitorInitialState
--------------------------------------------------

手順は以上です。

今回ご案内する内容は以上となります。

コミュニティにおけるマイクロソフト社員による発言やコメントは、マイクロソフトの正式な見解またはコメントではありません。

AddDWInstance.txt