CMDB 向け IRE ペイロードの作成およびトラブルシューティング方法<!-- /*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 モデル、Identification and Reconciliation Engine(IRE)、識別シミュレーションを使用した CI ペイロードの作成および検証方法について説明します。 目次 CMDB モデルIdentification and Reconciliation Engineペイロードの作成ペイロードエラー関連リンク CMDB モデル クラスの CMDB モデルには、次のコンポーネントが含まれます。 クラスの説明 — クラスおよびその属性を定義します。識別ルールおよび識別子エントリ — IRE が構成アイテム (CI) がデータベースに既に存在するかどうかを判断するために使用する一連のルールです。調整ルール — どのディスカバリーソースがクラス属性を更新できるか、およびそれらのソース間の優先順位を指定します。依存関係 — クラスの識別子によって、そのクラスが独立クラスであるか依存クラスであるかが決まります。独立クラスは関係なしで IRE に送信できます。依存クラスは、関係および依存先 CI に関する情報を同じペイロード内に含める必要があります。包含ルール — 独立 CI の重複検出時に、IRE は識別包含ルールを満たす CI のみを処理します。 クラスの構成を確認 [Configuration] > [CI Class Manager] に移動します。対象のクラスを検索します。たとえば、Windows Server を検索します。このクラスのルールを確認するには、次のオプションを選択します。 [Identification Rule] を選択して、識別ルールを表示します。識別ルールは、そのクラスが独立クラス (関係なしで識別できる) であるか、依存クラスであるかを示します。Identifier Entries セクションには、IRE が優先順位順に試行する識別子エントリが一覧表示されます。各エントリには、検索テーブル、優先順位の値、および照合に使用される属性が表示されます。たとえば、Windows Server クラスには、優先順位 100 (Serial Number) から優先順位 400 (Network Adapter) までの 4 つの識別子エントリがあります。[Reconciliation Rule] を選択して、調整ルールを表示します。調整ルールは、どのディスカバリーソースが属性を設定できるか、およびどの順序で設定できるかを決定します。各ルールには、適用対象の属性、ディスカバリーソースとその優先順位、および対象クラスが表示されます。たとえば、Windows Server クラスには、ServiceNow データソース (優先順位 10) がすべての属性を更新できるようにする 1 つの調整ルールがあります。[Dependent Relationships] を選択して、依存クラスに必要な関係を表示します。図には、親クラス、関係タイプ、および依存クラスが表示されます。たとえば、Network Adapter クラスは、Owns 関係を通じて Hardware に依存します。依存クラスを IRE が処理するには、この関係情報をペイロードに含める必要があります。 Identification and Reconciliation Engine IRE は、異なるデータソース間で識別および調整プロセスを実行する一元化されたフレームワークです。IRE は、受信データを CMDB に挿入する前に処理する際に、識別ルール、調整ルール、およびデータソースルールを使用します。 IRE は、次の方法で CMDB 内のデータの整合性を維持するのに役立ちます。 一意の識別によって重複する CI を防止する権限のあるデータソースのみが CMDB に書き込めるようにすることで、CI 属性を調整する ペイロードの作成 識別シミュレーションを使用してペイロードの内容を決定する。 [Configuration] > [Identification/Reconciliation] > [Identification Simulation] に移動します。[Start with CI Class] ボックスから [Start] を選択します。[Data Source]、[Class]、[Attributes]、および [Container] フィールドに入力します。 Data source — IRE にデータを送信するソースです(例: ImportSet)。Class — IRE に渡される CI クラスです(例: Network Adapter)。Criterion attributes — CI を識別するために使用される属性です。少なくとも 1 セットの条件属性を入力します。Container level 1 — この CI が関連付けられている親クラスです(依存クラスの場合は必須です)。 [Generate Script] を選択します。右側のパネルに、必要なデータを使用して識別シミュレーションによって作成されたペイロードが表示されます。この例では、フォームに Network Adapter CI(mac_address 属性および name 属性を含む)と Windows Server コンテナ(serial_number を含む)が含まれており、生成されたペイロードには両方の CI とそれらの Owns::Owned by 関係が含まれます。[Run Simulation] を選択して、処理のためにペイロードを IRE に渡します。生成されたペイロードには、次の 2 つの主要なセクションが含まれます。 items — ペイロード内の各 CI のクラス名および属性値を含む CI データです。relations — CI 間の必須の関係です。(例: 親 Windows Server と子 Network Adapter を関連付ける Owns::Owned by 関係) 注: 識別シミュレーションはレコードを挿入または更新しません。データベースに変更を加えることなく、ペイロードを検証します。 ペイロードエラー IRE エラーコードの完全な一覧については、Identification engine error messages を参照してください。 デバッグログを有効にする。 ペイロードをシステムログ(syslog テーブル)に記録するには、次のシステムプロパティを追加します。 プロパティ名: glide.cmdb.logger.source.identification_engineプロパティ値: info,warn,error,debug,debugVerbose 警告: デバッグが完了したら、プロパティをデフォルト値の info,warn,error に戻してください。 問題 01 — 依存クラスに必要な関係が含まれていない。 次のペイロードでは、依存クラスに必要な関係が含まれていないため、エラーが発生します。 { "items": [ { "className": "cmdb_ci_network_adapter", "lookup": [], "values": { "mac_address": "08:00:27:66:50:99", "name": "ETH8" } }, { "className": "cmdb_ci_win_server", "lookup": [], "values": { "serial_number": "ABC123!ABC123!" } } ]} IRE が次のエラーが返します。 In payload no relations defined for dependent class [cmdb_ci_network_adapter] that matches any containment/hosting rules: [cmdb_ci_network_adapter >> Owned by >> cmdb_ci_hardware]. Add appropriate relations in payload for... エラーメッセージには、次の 2 つの部分が含まれています。 Cause: 依存クラスに必要な関係(格納ルールまたはホスティングルール)がありません。このメッセージには、ペイロードで渡すことができる有効な関係が一覧表示されます。Fix: 適切な関係をペイロードに追加します。 このエラーを解決するには、ペイロードを手動で調整するか、識別シミュレーションを使用して有効なペイロードを作成します。次の修正済みペイロードには、不足していた関係が含まれています。 { "items": [ { "className": "cmdb_ci_network_adapter", "lookup": [], "values": { "mac_address": "08:00:27:66:50:99", "name": "ETH8" } }, { "className": "cmdb_ci_win_server", "lookup": [], "values": { "serial_number": "ABC123!ABC123!" } } ], "relations": [ { "type": "Owns::Owned by", "parent": 1, "child": 0 } ]} 関係追加後、IRE はエラーを返さなくなります。このネットワークアダプタは存在しないため、新しいネットワークアダプタが作成されます。 { "className": "cmdb_ci_network_adapter", "operation": "INSERT", "identificationAttempts": [ { "info": "sys_object_source SKIPPED", "identifierName": "", "attemptResult": "SKIPPED", "attributes": [], "hybridEntryCiAttributes": [] }, { "identifierName": "Network Adapter", "attemptResult": "NO_MATCH", "attributes": [ "mac_address", "name" ], "searchOnTable": "cmdb_ci_network_adapter", "hybridEntryCiAttributes": [] } ], "info": [], "errorCount": 0, "mergedPayloadIds": [], "warningCount": 0, "inputIndices": [ 0 ], "markers": [] } 問題 02 — 調整ルールによって CI フィールドが更新されない この例では、ペイロードが Windows Server CI の name フィールドを更新しようとします。しかし、IRE がペイロードを処理した後も、そのフィールドは更新されません。 ステップ 1: フィールドがペイロードに設定されていることを確認する。 識別エンジンを debugVerbose に設定し、フィールド値がペイロードに含まれていたことを確認します。syslog で、対象フィールド(この場合は name)に意図した値が設定されていたことを確認します。 ステップ 2: 調整メッセージについてデバッグログを確認する。 識別エンジンを引き続き debug に設定した状態で、更新が失敗した時刻の、ソース identification_engine でフィルタリングされたシステムログを確認します。 ログに、IRE がデータソースに基づいてフィールドを更新しなかったことが示されている場合は、そのクラスの調整ルールを確認します。 ステップ 3: 調整ルールを確認する。 CI Class Manager で、そのクラスの調整ルールを確認します。この例では、Windows Server クラスの調整ルールにより、データソース ServiceNow のみがそのクラスを更新できるようになっています。 ペイロードのデータソースが対象 CI を更新できるようにするには: 既存の調整ルールを確認し、ソース制限が意図されたものであるかどうかを判断します。そのデータソースがこのクラスを更新できるようにするルールを作成または追加します。 問題 03 — 問題は IRE に関連していない ペイロードに必要なデータが含まれており、更新をブロックする調整ルールも存在しない場合、その問題は IRE ではなく、ビジネスルールまたはアクセス制御リスト(ACL)が原因である可能性があります。さらに調査するには、バックグラウンドスクリプトを使用して識別エンジンを直接実行します。 手順については、How to debug the Identification and Reconciliation Engine using background scripts を参照してください。 関連リンク How to debug the Identification and Reconciliation Engine using background scriptsHow to troubleshoot duplicate CMDB CI recordsIdentification rulesCreate an identification inclusion ruleReconciliation rules