[CMDB - IRE] CI を (ペイロードとして) createOrUpdateCi() に渡す際の CMDB 識別および調整エンジンの仕組みIssue <!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } この記事では、CMDB 識別および調整エンジン (IRE) がデータソースの取り込みとペイロード検証から識別、調整、データベースコミットに至る各ステージを経てコンフィギュレーションアイテム (CI) ペイロードを処理する方法について説明します。 Release<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #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: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } Table of Contents 識別および調整エンジンの仕組み機能の詳細 1 データソース2 ペイロードの検証3 ペイロードに基づく CI 識別4 CI 一致の処理5 関連または依存のルックアップ6 調整の適用7 データベースへのデータのコミット8 API呼び出し元への結果の返却 トラブルシューティング Related Links 識別および調整エンジンの仕組み 以下は、識別および調整エンジン (IRE) の動作の機能図です。 機能の詳細 1 データソース ここでは、SCCM、Discovery、Service Mapping、Import Sets、Qualys 等のさまざまな統合など、さまざまなデータソースからあらゆるデータを取得します。これらのデータソースを使用して、JSON ペイロードを構築し、createOrUpdateCi() に対する CMDB API 呼び出しを利用します。 2 ペイロードの検証 このフェーズでは、IRE エンジンにデータを送信したら、最初のステップは、受信ペイロードが適切にフォーマットされているかどうかや、必要な属性が欠落している場合にエラーが発生するかどうかなど、ペイロードを検証することです。 3 ペイロードに基づく CI 識別 3.1 エラーのないペイロード ペイロードにエラーがない場合、システムは一致する CMDB識別子ルール (cmdb_identifier) を探します。(送信している特定のクラスにおける最初の独立したルールや、構成に基づく親クラスの識別など、現在、ほとんどのデバイスは cmdb_ci_hardware の「ハードウェアルール」に分類されます。)一致する識別ルールが特定されると、エンジンはそのルール内の識別子エントリを探します (一致が見つかるまで優先的に)。 3.2 エラーのあるペイロード ペイロードの検証の結果、ペイロードにエラーがある場合、ペイロードは処理を停止し、「システムログ」にエラーをスローします。いくつかのプロパティを有効にすることで、詳細な CMDB IRE ログを取得できます。 4 CI 一致の処理 IRE が一致する CI を見つけると、一致数に基づいて以下の手順が実行されます。 4.1 一致が見つからなかった (=0) 一致するものが見つからない場合、ペイロードは新しい CI の作成/挿入のために予約されます。 4.2 正確に 1 つの CI が見つかった (=1) 一致するものが 1 つだけ見つかった場合、IRE はその CI を選択し、その CI の更新のために予約します。ここで、その CI タイプまたはその親 CI タイプに対して定義されているルックアップ/関連/参照ルールが検索されます。(挿入/更新の両方)次に、CI とその属性の調整ルール/データ優先順位ルールが確認され、それに応じて CI が更新されます。 4.3 複数の CI 一致が見つかった (2 以上、skip_duplicates.threshold 未満) 識別ルールに基づいて一致する CI が複数検出されるのは特殊なケースです。IRE が一致する CI を複数検出したが、skip_duplicates しきい値より少ない場合、重複排除タスクを生成し、重複 CI の処理を試みます。これらの重複処理は、Madrid の以前と以後で異なる方法で実行されます。Madrid までは、discovery_source を重複として設定することで、重複 CI が重複としてマークされます。New York 以降は discovery_source を使用せず、すべての重複のメイン CI を入力する新しいフィールド duplicate_of を使用します。詳細は以下の通りです。 4.3.1 重複のスキップ システムが重複を処理しないように設定されている場合 (プロパティ glide.identification_engine.skip_duplicates を false に設定するか)、最大しきい値 (glide.identification_engine.skip_duplicates.threshold - デフォルトは 5) が見つかった重複の数よりも小さい場合、IRE は CI を処理しません。 4.3.2 重複データの処理 プロパティ glide.identification_engine.skip_duplicates が true に設定されており、重複データの数が glide.identification_engine.skip_duplicates.thresholdで定義された閾値未満の場合、IRE では CI を重複データを処理します。Madrid リリースまで: 重複する CI に対して、システムは discovery_source を "Duplicate" に設定します。New York リリース以降: システムは duplicate_of フィールドにプライマリ CI を設定します。 5 関連または依存のルックアップ 構成とペイロードに基づいて、IRE は、挿入または更新する必要があるルックアップ、関連、および関係データのチェック/挿入を試みます。 6 調整の適用 CI を更新する必要がある場合は、調整ルールとデータ優先順位ルールの適用を試みます。更新のみにこの処理を実行する理由は、新しい CI (挿入) の場合、すべてをチェックする必要がないためです。 7 データベースへのデータのコミット IREはCIデータをデータベースにコミットし、新規または更新された各CIに対してsys_idを生成します。 8 API呼び出し元への結果の返却 IREは処理済みのデータとエラー結果をAPI呼び出し元に返します。 Related Links<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } How to run CI identification on demand using a payload How to check the data/payload being sent to IRE and check the issues with the payload IRE error messages Duplicate CMDB CI records Debug the IRE using background scripts CMDB identifier rules Detecting duplicate CIs Duplicate CI remediation