識別および調整エンジン (IRE)
IRE は、識別および調整の基礎となる主要コンポーネントであり、さまざまなデータソース間で識別および調整プロセスを実行できる、一元化されたフレームワークを提供します。IRE は、受信データを処理する際に、識別ルール、調整ルール、および IRE のデータソースルールを使用してから、データを CMDB に挿入します。
- IRE は CI を一意に識別することで、CI の重複を防止します。
- IRE は、信頼できるデータソースのみに CMDB への書き込みを許可することにより、CI 属性を調整します。
- IRE の一部の機能に影響するプロパティについては、「識別および調整のプロパティ」を参照してください。
- IRE API の使用方法については、「IdentificationEngine - スコープ指定」を参照してください。
- ペイロードの問題に対するデバッグとチェックの有効化については、「How to log the payload sent to IRE and check the issues with the payload (IRE に送信されたペイロードを記録してペイロードの問題を確認する方法)」[KB0750382] を参照してください。
- ペイロードの検証、調整の適用、CMDB へのデータのコミットなど、IRE がどのように機能するかを示す IRE のステップについては、「[CMDB - IRE] How the CMDB Identification and Reconciliation Engine works when passing a CI (as payload) to the createOrUpdateCI() ([CMDB - IRE] CI を (ペイロードとして) createOrUpdateCI() に渡すときの CMDB 識別および調整エンジンの仕組み)」[KB0750386] を参照してください。
- IRE を介してペイロードを実行する方法については、「[CMDB IRE] How to run the CI identification on demand using the payload ([CMDB IRE] ペイロードを使用して CI 識別をオンデマンドで実行する方法) [KB0750383]」を参照してください。
CI 識別
CMDB 識別プロセスは、CI を一意に識別するために識別ルールに依存します。ペイロードの sys_object_source_info セクションに記載された source_name と source_native_key の値、およびソース [sys_object_source] テーブルを使用して、CI を一意に識別することができる場合もあります。この方法での識別が成功した場合、識別ルールに依存する一致アルゴリズムを適用する、より時間のかかる識別方法を取る必要はありません。
{
"items": [
{
"className": "cmdb_ci_win_server",
"values": {
"name": "SAMLABVM52"
},
"sys_object_source_info": {
"source_native_key": "16777219",
"source_name": "SCCM",
"source_feed": "SCCM Computer Identity",
"source_recency_timestamp": "2019-08-26 13:00:00"
}
}
]
}ペイロードアイテムの識別
- sys_object_source_info オブジェクトの source_name と source_native_key の値の組み合わせ。
- 識別基準属性
重要な属性のタイムスタンプ
最新の検出 (last_discovered) と検出ソース (discovery_source):
最新の検出 (last_discovered) は、CI が最後に検出されたときのタイムスタンプです。IRE は、他の CI 属性が更新されていない場合でも、ペイロード処理中に CI の last_discovered と discovery_source の属性を常に更新します。ペイロードに last_discovered が指定されている場合、ペイロードの last_discovered 時間が CMDB の時間よりも新しい場合にのみ、IRE は指定された値で CI を更新します。ペイロードに last_discovered が指定されていない場合、IRE は last_discovered 属性を現在のタイムスタンプで更新します。
glide.identification_engine.skip_updating_source_last_discovered_if_older および glide.identification_engine.ire_message_listener_skip_updating_source_last_discovered_to_now システムプロパティを使用して、このデフォルトの動作を変更できます。
最初に検出 (first_discovered) は、CI が最初に作成されたときのタイムスタンプです。
- CI の初回作成時:ペイロードに値が指定されている場合、IRE はその値を挿入します。それ以外の場合、IRE は現在のタイムスタンプを挿入します。
- 後続の更新時:値が指定されている場合、IRE は指定された値で CI を更新します。それ以外の場合、属性は更新されません。
拡張 IRE 機能
- 部分的ペイロード
IRE は、データソースが CI を一意に識別するための十分な情報を提供しなかったために処理を続行できないアイテムを分離します。これらのアイテムの一部は部分的なアイテムとして識別され、後で処理できるように保存されます。その他のアイテムは不完全なアイテムとして識別され、ログ記録目的でのみ保存されます。
例:SCCM には、ディスクフィードやコンピューターフィードなどの複数のフィードがあります。ディスクフィードに、ディスクに関する情報はすべて含まれていても、依存するコンピューター CI に関する情報が不十分である可能性があります。
API オプション:デフォルトで有効になっている partial_payloads。partial_payloads が有効になっている場合は、オプションの設定に関係なく、partial_commits と deduplicate_payloads が自動的に有効になります。
- 部分的コミット
一部のアイテムでエラーが発生しても、ペイロード内の残りのアイテムのコミットが妨げられることはありません。したがって、ペイロードにエラーのあるアイテムが含まれている場合でも、IRE はペイロード内の残りの有効なアイテムをコミットします。この状況では、コミットされていないアイテムの一部は部分的なペイロードとして保存され、コミットされていないその他のアイテムは不完全なペイロードとして保存されます。
API オプション:デフォルトで有効になっている partial_commits。
- ペイロードアイテムの重複排除
IRE はペイロード内の重複アイテムを重複排除し、それらの重複アイテムを単一のペイロードアイテムに結合して処理します。
API オプション:デフォルトで有効になっている deduplicate_payloads。
- サマリーの生成
IRE は、クラスごとの更新数などの処理の詳細を含むサマリーを出力ペイロードに生成します。
API オプション:デフォルトで無効になっている generate_summary。
部分的なアイテム
ペイロードアイテムは、一意の識別に必要なデータが含まれており、次のいずれかのエラーがある場合、部分的なアイテムであると判断されます。一意の識別では、sys_object_source_info セクションに source_name と source_native_key の値を含むペイロードアイテム、または CI クラスに指定された識別基準属性の完全なセット、あるいはその両方が必要です。
- MISSING_MATCHING_ATTRIBUTES:アイテムに、1 つ以上の識別子エントリで照合に使用するための識別基準属性がありません。
- REQUIRED_ATTRIBUTE_EMPTY:必要な属性が欠落しており、CI を作成できません。
- MISSING_DEPENDENCY:依存型 CI に、ペイロードで指定された依存関係がありません。
- INSERT_NOT_ALLOWED_FOR_SOURCE:IRE のデータソースルールにより、指定されたデータソースは指定されたクラスの CI を作成できません。
IRE エラーメッセージの詳細については、「IRE エラーメッセージ」を参照してください。
ペイロードアイテムが部分的なアイテムであると判断されたために処理が失敗した場合、部分的なアイテムは、以後に行われる可能性がある処理のために、部分的ペイロードとして CMDB IRE 部分のペイロード [cmdb_ire_partial_payloads] テーブルに JSON 形式で保存されます。IRE は識別子キーを使用して、受信ペイロードと保存された部分的ペイロードとの照合を試みます。
後でデータソースが部分的なアイテムから欠落していたデータを送信した場合、IRE は受信ペイロードを保存された部分的ペイロードと照合します。次に、IRE は、一致する部分的ペイロードを受信ペイロードと結合します。競合する属性を解決するために、IRE は source_recency_timestamp (source_native_key および source_name が同じ場合) またはクラスに指定された静的調整ルールのいずれかを使用します。結果は完全かつ有効なペイロードで、その後 IRE が処理してそれぞれの CI を作成または更新します。
90 日より古い部分的ペイロードは、CMDB IRE 部分のペイロード [cmdb_ire_partial_payloads] テーブルから削除されます。
Disk feed:
{
"items": [
{
"className": "cmdb_ci_computer",
"sys_object_source_info": {
"source_native_key": "Server001",
"source_name": "SCCM",
"source_feed": "DISK_FEED",
"source_recency_timestamp": "2019-08-26 13:00:00"
}
},
{
"className": "cmdb_ci_disk",
"values": {
"name": "disk1"
}
}
],
"relations": [{
"parent": 0,
"child": 1,
"type": "Contains::Contained by"}
]
}上記のペイロードのコンピューターアイテムには属性がないため、IRE では処理できません。ただし、source_name および source_native_key は、部分的なアイテムとして提供されています。コンピューターアイテムは部分的なアイテムであるため、コンピューターアイテムに依存するディスクアイテムも部分的なアイテムです。Server/Computer feed:
{
"items": [
{
"className": "cmdb_ci_linux_server",
"values": { "name": 'linux001',
"ip_address": "100.126.38.19",
"mac_address": "DSWER4587" },
"sys_object_source_info": {
"source_native_key": "Server001",
"source_name": "SCCM",
"source_feed": "COMPUTER_IDENTITY",
"source_recency_timestamp": "2019-08-26 14:00:00"
}
}
]
} source_name と source_native_key が同じであるため、部分的ペイロードのコンピューターと新しいペイロードのサーバーは一致します。したがって、部分的ペイロードと新しいペイロードが結合され、操作がコミットされ、部分的ペイロードが部分的ペイロードテーブルから削除されます。部分的ペイロードあたりのアイテム数には制限があり、これは glide.identification_engine.partial_payload_items_max_size プロパティで設定されます (デフォルトでは 1000)。関連する関係、参照、および依存アイテムを 1 つの部分的ペイロードに格納すると、その制限に達することがあります。その場合、ペイロードは複数の部分的ペイロードに分割されます。
部分的ペイロードの詳細については、「CreateOrUpdateCIEnhanced()」を参照してください。
不完全なアイテム
- 一意の識別に必要なデータが一部含まれていない場合
- 部分的なアイテムに関連付けられていないエラーがある場合
不完全なアイテムは、CMDB IRE 不完全ペイロード [cmdb_ire_incomplete_payloads] テーブルに JSON 形式で不完全ペイロードとして格納されます。不完全なアイテムは、回復不能なエラーのあるペイロードをログ記録する目的で保存され、二度と処理されることはありません。
関係の追加
インデックスまたはオプションの JSON internal_id 要素のいずれかを使用して、関係を追加します。
- 関係 (親インデックス、子インデックス、関係タイプ)
- 関係 (親内部 ID、子内部 ID、関係タイプ)
詳細とコードのサンプルについては、「CreateOrUpdateCIEnhanced()」を参照してください。
ペイロードアイテム間への参照の追加
ペイロードアイテムを一意に識別するオプションの JSON internal_id 要素を使用して、2 つのペイロードアイテム間に参照を追加します。
referenceItems ブロックを使用して、参照を追加または更新します。単一のペイロードで、メインアイテム、ルックアップアイテム、および関連アイテムを含む任意の 2 つのアイテム間に参照を追加できます。
詳細とコードのサンプルについては、「CreateOrUpdateCIEnhanced()」を参照してください。
CI の再分類
ペイロードの設定ブロックで updateWithoutUpgrade、updateWithoutDowngrade、および updateWithoutSwitch フラグを使用して、CI のクラスが意図せず更新されないようにします。これらのフラグは、同じ CI の更新中に複数のデータソースが意図せずに試行する可能性がある CI のクラスのアップグレード、ダウングレード、または切り替えを防止します。詳細とコードのサンプルについては、「CreateOrUpdateCIEnhanced()」を参照してください。
再分類フラグは、IRE 処理中の CI の再分類の他のシステム設定よりも優先されます。
カスタム前スクリプトおよびカスタム後スクリプトの追加
IntegrationHub ETL を使用して、CMDB データ連携アプリケーションのデータソースのカスタム Java スクリプトを追加します。これらのスクリプトは、CMDB 統合を処理しながら、IRE 入力および出力ペイロードへのアクセスを提供します。
- status を [スキップ] に設定して、バッチ内のペイロードをスキップする。必要に応じて、それぞれのインポートセット行テーブルにコメントとして表示されるペイロードをスキップする理由を記入する。
- 入力ペイロードを変更する。
- IRE ペイロードを使用するスクリプト内に他のカスタムロジックを記述する。
- 入力ペイロードと出力ペイロードを簡単に比較し、IRE が各 CI で実行したさまざまな操作を識別する。
- IRE が作成または更新した CI の sys_id にアクセスする。
- IRE 出力ペイロードを使用するスクリプト内に他のカスタムロジックを記述する。