CMDB 健全性:重複測定基準アルゴリズムIssue <!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: #000000; } span { font-size: 12pt; font-family: Lato; color: #000000; } h2 { font-size: 24pt; font-family: Lato; color: black; } h3 { font-size: 18pt; font-family: Lato; color: black; } h4 { font-size: 14pt; font-family: Lato; color: black; } a { font-size: 12pt; font-family: Lato; color: #00718F; } a:hover { font-size: 12pt; color: #024F69; } a:target { font-size: 12pt; color: #032D42; } a:visited { font-size: 12pt; color: #00718f; } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } 「CMDB 健全性ダッシュボード:正確性スコアの計算」ジョブの実行時に、重複測定基準によってすべての CI がチェックされるわけではありません。「CMDB 健全性:正確性」ジョブを実行すると、重複測定基準は識別ルールが定義されていて、かつ次のいずれかの条件を満たす CI のみをチェックします。 重複 CI のいずれかに空の [検出ソース] 属性がある。重複 CI にアクティブな重複排除タスク (reconcile_duplicate_task) がある。 チェック対象外の CI をすべて修正するには、ディスカバリーを実行します。つまり、 識別および調整エンジン (Identification and Reconciliation Engine、IRE) を呼び出すカスタムスクリプト/インポートエンジンを実行します。 注意:以下の例はもはや古く、New York より前のインスタンスリリースに適用されるものです。New York では、duplicate_of という新しいフィールドを導入しました。ただし、ロジックはまだ以下と非常によく似ています。要するに、どちらの CI も [検出ソース] 値が空でなければ、duplicate_of 属性の値に関係なく検出されません。 いずれかの CI で検出ソースが空でなければならない理由は何でしょうか? 構成アイテム (Configuration Item、CI) は、識別エンジンへの呼び出しを介して挿入されるものと想定されています。検出ソースは、調整ルールを適用するなど、識別エンジンによって使用されるフィールドです。識別エンジンが呼び出されると、IRE は重複タスクを作成し、重複 CI にフラグを設定しますこれは挿入時に既に行われているため、重複 CI に discovery_source フィールドが設定されている場合は、開始点として重複 CI を再度確認する必要はありません。CMDB のレコード数が数百万へと拡大するにつれて、開始点としてすべてのレコードをチェックしようとすると、重複測定基準ジョブにかなりの時間とリソースが必要になります。 ロジック このクラスは独立していますか (クラスの識別ルールに基づいて判断します。CI ID を確認して、クラスが独立しているかどうかを判断してください)? はい:続行します。いいえ:ロジックを終了します。 次の条件をすべて満たす CI をクエリします。 ((Discovery_Source = Unknown AND (SYS_UPDATED_ON 1 day ago)) OR (Discovery_Source is Empty))duplicate_of が空である。そのクラスの包含ルール cmdb_ie_active_config の条件を満たしている。 クエリで返された CI のリストを反復処理します。 CI ごとに識別エンジンを呼び出します。識別エンジンは、重複しているかどうかを判断し、重複している場合には重複排除タスクを作成します。 例 名前とシリアル番号が同じ CI が 2 つあります。重複測定基準を実行すると、discovery_source と reconcile_duplicate_task に基づいて結果が返されます。 ケース 1: CI01 検出ソース:ServiceNowCI02 検出ソース:ServiceNow 結果:重複排除タスク (reconcile_duplicate_task) がない限り検出されない。 ケース 2: CI01 検出ソース:ServiceNowCI02 検出ソース:重複 結果:重複排除タスク (reconcile_duplicate_task) がない限り検出されない。 ケース 3: CI01 検出ソース:SomeSource ([sys_choice] テーブルに存在しない検出ソース)CI02 検出ソース:重複 結果:重複排除タスク (reconcile_duplicate_task) がない限り検出されない。 ケース 4: CI01 検出ソース:ServiceNowCI02 検出ソース:(空) 結果: 検出、空が重複に変更され、重複排除タスクが作成される。 ケース 5: CI01 検出ソース:(空)CI02 検出ソース:(空) 結果:検出、1つは重複に変更され、もう1つは不明に変更され、重複排除タスクが作成される。 その他の制限 重複するメトリクスが実行されると、適用可能なすべてのルールを評価するのではなく、CI ごとに最初に適用可能な識別ルールのみがチェックされます。 たとえば、次の 2 つの CI があるとします。 名前シリアル番号cmdb_serial_numberdemoServerSyddemoSerial123demoSerial123,type:systemdemoSerial123,type:chassisdemoServerSyddemoSerial123demoSerial123,type:system OOB インスタンスで重複メトリクスが実行されている場合、上記の 2 つの CI は重複としてマークされません。 ハードウェアテーブルでは、cmdb_serial_numberルールがシリアル番号フィールドルールよりも優先度が高いためです。 また、OOB cmdb_serial_number ルールには [カウントの完全一致を強制] がオンになっています。2 つのサーバーの cmdb_serial_number 数が異なるため、異なる CI と見なされます。また、最初の該当する識別ルールcmdb_serial_numberは既に評価されているため、他のルールはチェックされません。 比較として、以下のサンプル CI を確認すると: 名前シリアル番号cmdb_serial_numberdemoServerSyddemoSerial123demoSerial123,type:systemdemoSerial123,type:chassisdemoServerSyddemoSerial123 OOB インスタンスで重複メトリクスが実行されると、上記の 2 つの CI が重複としてマークされます。 これは、2 番目のサーバーの cmdb_serial_number が空であるため、cmdb_serial_number ルールは適用されず、最初に適用されるルールがシリアル番号ルールであるためです。2 つのサーバーのシリアル番号は同じであるため、重複と見なされます。 この場合、作成時刻が最も古いサーバーがメイン CI として選択され、もう一方のサーバーはメイン CI の重複としてマークされます。 reconcile_duplicate_task レコードが作成されます。これを使用して、メイン CI を変更し、重複を結合できます。 Release<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: #000000; } span { font-size: 12pt; font-family: Lato; color: #000000; } h2 { font-size: 24pt; font-family: Lato; color: black; } h3 { font-size: 18pt; font-family: Lato; color: black; } h4 { font-size: 14pt; font-family: Lato; color: black; } a { font-size: 12pt; font-family: Lato; color: #00718F; } a:hover { font-size: 12pt; color: #024F69; } a:target { font-size: 12pt; color: #032D42; } a:visited { font-size: 12pt; color: #00718f; } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } すべて Resolution<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: #000000; } span { font-size: 12pt; font-family: Lato; color: #000000; } h2 { font-size: 24pt; font-family: Lato; color: black; } h3 { font-size: 18pt; font-family: Lato; color: black; } h4 { font-size: 14pt; font-family: Lato; color: black; } a { font-size: 12pt; font-family: Lato; color: #00718F; } a:hover { font-size: 12pt; color: #024F69; } a:target { font-size: 12pt; color: #032D42; } a:visited { font-size: 12pt; color: #00718f; } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } 日次重複プロセッサージョブで CI が重複としてマークされない CI は独立したクラスに属していますか? はい:続行します。いいえ:CI は、プロセッサーによってレビューされず、重複としてマークされません。 CI は次の条件をすべて満たしていますか? ((Discovery_Source = Unknown AND (SYS_UPDATED_ON 1 day ago)) OR (Discovery_Source is Empty))duplicate_of が空である。そのクラスの包含ルール cmdb_ie_active_config の条件を満たしている。 はい:続行します。いいえ:CI は、プロセッサーによってレビューされず、重複としてマークされません。 CI に実際に重複がありますか? はい:IRE が重複を判断し、重複排除タスクを作成します。いいえ:タスクは作成されません。 重複を見つけるため、重複プロセッサーは識別および調整エンジン (IRE) を呼び出す際にデータソースとして「手動入力」を使用します。デフォルトの「手動入力」オプションが削除されている場合、重複測定基準を処理するときに、IRE は次のエラーをスローします。 identification_engine : INVALID_INPUT_DATA In payload invalid data source [Manual Entry] exist. You need to provide a valid choice value from field [discovery_source] in table [cmdb_ci]. そのため、すぐに利用可能な検出ソース「手動入力」が変更または削除されていないことを確認してください。 KB0712338 を参照して、健全性ジョブの実行時に機能する重複測定基準ワークフローの説明を確認してください。 Related Links<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: #000000; } span { font-size: 12pt; font-family: Lato; color: #000000; } h2 { font-size: 24pt; font-family: Lato; color: black; } h3 { font-size: 18pt; font-family: Lato; color: black; } h4 { font-size: 14pt; font-family: Lato; color: black; } a { font-size: 12pt; font-family: Lato; color: #00718F; } a:hover { font-size: 12pt; color: #024F69; } a:target { font-size: 12pt; color: #032D42; } a:visited { font-size: 12pt; color: #00718f; } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } これは、孤立レコードがある場合にも発生する可能性があります。 チェックインスタンスシステム「ログ > すべて > ソース」CMDB 健全性を確認すると、レコードのテーブル名と最後のプロセス ID (レコードの sys_id) が得られる場合があります。このレコードについて、重複排除タスクテーブルで関連タスクを検索し、重複監査結果の下にあるすべての CI を開くことができるかどうかを確認します。CMDB リストビューで、クラスが <テーブル名> である場合、合計レコード数を <テーブル名> リストビューの数と比較します。両者が異なる場合は、孤立したレコードが存在する可能性があります。タイプ文字列のシステムプロパティ glide.cmdb.logger.source.identification_engine を値 = info,warn,error,debug,debugVerbose で有効にします。詳細については、インスタンスノードログを参照してください。デバッグプロパティ:glide.cmdb.logger.source.CMDBHealth