Identification and Reconciliation Engine (IRE)
IRE ist eine zugrunde liegende Schlüsselkomponente in Identification and Reconciliation und bietet ein zentralisiertes Framework für die Durchführung von Identifizierungs- und Abgleichsprozessen für verschiedene Datenquellen. IRE verwendet Identifizierungsregeln, Abgleichregeln und IRE-Datenquellenregeln, wenn eingehende Daten verarbeitet werden, bevor diese Daten in die CMDB eingefügt werden.
- IRE verhindert doppelte CIs durch eindeutige Identifizierung von CIs
- IRE gleicht CI-Attribute ab, indem nur autorisierende Datenquellen in die CMDB geschrieben werden dürfen.
- Informationen zu Eigenschaften, die sich auf einige Funktionen von IRE auswirken: Siehe Eigenschaften für Identifizierung und Abgleich.
- Informationen zur Verwendung von IRE-APIs: Siehe IdentificationEngine – Scoped.
- Informationen zum Aktivieren des Debugging und zum Überprüfen von Problemen mit einer Nutzlast: Weitere Informationen finden Sie unter So protokollieren Sie die an IRE gesendete Nutzlast und überprüfen die Probleme mit der Nutzlast [KB0750382].
- Informationen zu den Schritten, die IRE ausführt, die die Funktionsweise von IRE veranschaulichen, z. B. Validierung der Nutzlast, Anwendung des Abgleichs und Übergabe der Daten an die CMDB: Siehe [CMDB - IRE]. Funktionsweise der CMDB Identification and Reconciliation Engine bei Übergabe eines CI (als Nutzlast) zu createOrUpdateCI() [KB0750386].
- Informationen zum Ausführen einer Nutzlast über IRE: Siehe [CMDB IRE], wie die CI-Identifizierung bei Bedarf mit der Nutzlast ausgeführt wird [KB0750383].
CI-Identifizierung
Der CMDB Identifikationsprozess basiert auf Identifizierungsregeln, um CIs eindeutig zu identifizieren. Wenn möglich, können CIs auch anhand der Werte source_name und source_native_key im Abschnitt sys_object_source_info der Nutzlast und der Tabelle „Quelle“ [sys_object_source] eindeutig identifiziert werden. Wenn die Identifizierung mit dieser Methode erfolgreich ist, ist es nicht erforderlich, übereinstimmende Algorithmen anzuwenden, die auf Identifizierungsregeln basieren, was eine langsamere Identifizierungsmethode ist.
{
"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"
}
}
]
}Identifizierung der Nutzlastelemente
- Kombination der Werte source_name und source_native_key aus dem Objekt sys_object_source_info.
- Identifizierungskriteriumsattribute.
Zeitstempel in Schlüsselattributen
Neueste Discovery (last_discovered) und Discovery-Quelle (discovery_source):
Die letzte Erkennung (last_discovered) ist der Zeitstempel der letzten Erkennung des CI. IRE aktualisiert während der Nutzlastverarbeitung immer die Attribute last_discovered und discovery_source von CIs, auch wenn keine anderen CI-Attribute aktualisiert werden. Wenn last_discovered in der Nutzlast angegeben ist, aktualisiert IRE das CI nur dann mit dem angegebenen Wert, wenn die Zeit last_discovered in der Nutzlast neuer ist als die in der CMDB. Wenn last_discovered in der Nutzlast nicht angegeben ist, aktualisiert IRE das Attribut last_discovered mit dem aktuellen Zeitstempel.
Sie können die Systemeigenschaften glide.identification_engine.skip_updating_source_last_discovered_if_older und glide.identification_engine.ire_message_listener_skip_updating_source_last_discovered_to_now verwenden, um dieses Standardverhalten zu ändern.
„Zuerst erkannt“ (first_discovered) ist der Zeitstempel der ersten Erstellung des CI.
- Wenn das CI zum ersten Mal erstellt wird: Wenn in der Nutzlast ein Wert angegeben ist, fügt IRE diesen Wert ein. Andernfalls fügt IRE den aktuellen Zeitstempel ein.
- In nachfolgenden Aktualisierungen: Wenn ein Wert angegeben wird, aktualisiert IRE das CI mit dem angegebenen Wert. Andernfalls wird das Attribut nicht aktualisiert.
Erweiterte IRE-Funktionen
- Teilnutzlasten
IRE isoliert Elemente, für die Datenquellen nicht genügend Informationen zur eindeutigen Identifizierung des CI bereitgestellt haben und die Verarbeitung daher nicht fortgesetzt werden kann. Einige dieser Elemente werden als Teilelemente identifiziert, die zur möglichen späteren Verarbeitung gespeichert werden. Andere Elemente werden als unvollständige Elemente identifiziert, die nur zu Protokollierungszwecken gespeichert werden.
Beispiel: SCCM verfügt über mehrere Feeds, z. B. einen Datenträger-Feed und einen Computer-Feed. Der Datenträger-Feed enthält möglicherweise vollständige Informationen zum Datenträger, aber unzureichende Informationen zum Computer-CI, von dem er abhängig ist.
API-Option: partial_payloads, standardmäßig aktiviert. Wenn partial_payloads aktiviert ist, werden partial_commits und deduplicate_payloads automatisch aktiviert, unabhängig von ihrer Einstellung in den Optionen.
- Teilweise Commits
Fehler in einigen Elementen verhindern nicht, dass die restlichen Elemente in einer Nutzlast festgeschrieben werden. Wenn eine Nutzlast Elemente mit Fehlern enthält, schreibt IRE daher weiterhin die verbleibenden gültigen Elemente in der Nutzlast fest. In dieser Situation werden einige der nicht bestätigten Elemente als Teilnutzlasten und andere nicht bestätigte Elemente als unvollständige Nutzlasten gespeichert.
API-Option: partial_commits, standardmäßig aktiviert.
- Nutzlastelemente deduplizieren
IRE dedupliziert doppelte Elemente innerhalb der Nutzlast und führt diese Duplikate zur Verarbeitung zu einem einzigen Nutzlastelement zusammen.
API-Option: deduplicate_payloads, standardmäßig aktiviert.
- Zusammenfassung generieren
IRE generiert Zusammenfassungen in der Ausgabenutzlast mit Verarbeitungsdetails wie der Anzahl der Aktualisierungen pro Klasse.
API-Option: generate_summary, standardmäßig deaktiviert.
Teilelemente
Ein Nutzlastelement wird als Teilelement eingestuft, wenn es die erforderlichen Daten für die eindeutige Identifizierung enthält und einen der folgenden Fehler aufweist. Die eindeutige Identifizierung erfordert, dass das Nutzlastelement den Abschnitt [ sys_object_source_info mit den Werten source_name und source_native_key oder den vollständigen Satz der für die CI-Klasse angegebenen Identifizierungskriteriumsattribute oder beides aufweist.
- MISSING_MATCHING_ATTRIBUTES – Element verfügt nicht über Identifizierungskriteriumsattribute, um mindestens einen Bezeichnereintrag für den Abgleich zu verwenden
- REQUIRED_ATTRIBUTE_EMPTY – CI kann nicht erstellt werden, da ein erforderliches Attribut fehlt.
- MISSING_DEPENDENCY – Für das abhängige CI fehlt eine Abhängigkeitsbeziehung, die in der Nutzlast angegeben ist.
- INSERT_NOT_ALLOWED_FOR_SOURCE – Eine IRE-Datenquellenregel verhindert, dass die angegebenen Datenquellen CIs der angegebenen Klasse erstellen.
Weitere Informationen zu IRE-Fehlermeldungen finden Sie unter IRE-Fehlermeldungen.
Wenn die Verarbeitung fehlschlägt, weil Nutzlastelemente als Teilelemente bestimmt wurden, werden die Teilelemente als Teilnutzlasten in der Tabelle „CMDB-IRE-Teilnutzlasten“ [cmdb_ire_partial_payloads] im JSON-Format für eine spätere mögliche Verarbeitung gespeichert. IRE verwendet Bezeichnerschlüssel, um zu versuchen, eingehende abzugleichen Nutzlasten mit gespeicherten Teilnutzlasten.
Wenn eine Datenquelle später die Daten sendet, die im Teilelement fehlten, gleicht IRE die eingehende Nutzlast mit den gespeicherten Teilnutzlasten ab. IRE führt dann alle übereinstimmenden Teilnutzlasten mit der eingehenden Nutzlast zusammen. Um in Konflikt stehende Attribute aufzulösen, verwendet IRE entweder source_recency_timestamp (wenn source_native_key und source_name identisch sind) oder statische Abgleichsregeln, die für die Klasse angegeben sind. Das Ergebnis ist eine vollständige und gültige Nutzlast, die IRE dann verarbeitet, um die entsprechenden CIs zu erstellen oder zu aktualisieren.
Teilnutzlasten, die älter als 90 Tage sind, werden aus der Tabelle „CMDB-IRE-Teilnutzlasten“ [cmdb_ire_partial_payloads] gelöscht.
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"}
]
}Das Computerelement in der obigen Nutzlast weist keine Attribute auf und kann daher von IRE nicht verarbeitet werden. source_name und source_native_key werden jedoch bereitgestellt, sodass es sich um ein Teilelement handelt. Da das Computerelement teilweise ist, ist das Datenträgerelement, das vom Computerelement abhängt, ebenfalls ein Teilelement.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"
}
}
]
} Der Computer in der Teilnutzlast und der Server in der neuen Nutzlast stimmen überein, da source_name und source_native_keyidentisch sind. Daher werden die Teilnutzlast und die neue Nutzlast zusammengeführt, der Vorgang wird festgeschrieben, und die Teilnutzlast wird aus der Tabelle „Teilnutzlasten“ gelöscht.Es gibt ein Limit für die Anzahl der Elemente pro Teilnutzlast, das durch die Eigenschaft glide.identification_engine.partial_payload_items_max_size festgelegt wird (standardmäßig 1000). Das Speichern von zugeordneten Beziehungen, Referenzen und abhängigen Elementen in einer Teilnutzlast kann dazu führen, dass dieses Limit erreicht wird. In diesem Fall wird die Nutzlast in mehrere Teilnutzlasten aufgeteilt.
Weitere Informationen zu Teilnutzlasten finden Sie unter CreateOrUpdateCIEnhanced().
Unvollständige Elemente
- Sie enthält nicht alle Daten, die für die eindeutige Identifizierung erforderlich sind
- Es ist ein Fehler aufgetreten, der keinem Teilelement zugeordnet ist
Unvollständige Elemente werden als unvollständige Nutzlasten in der Tabelle „Unvollständige CMDB-IRE-Nutzlasten“ [cmdb_ire_incomplete_payloads] im JSON-Format gespeichert. Unvollständige Elemente werden gespeichert, um Nutzlasten mit nicht behebbaren Fehlern zu protokollieren, und nie wieder verarbeitet.
Hinzufügen von Beziehungen
Fügen Sie Beziehungen hinzu, indem Sie entweder Indizes oder das optionale JSON-Element „internal_id“ verwenden.
- Beziehung (übergeordneter Index, untergeordneter Index, Beziehungstyp)
- Beziehung (übergeordnete interne ID, untergeordnete interne ID, Beziehungstyp)
Weitere Informationen und Code-Muster finden Sie unter CreateOrUpdateCIEnhanced().
Referenzen zwischen Nutzlastelementen hinzufügen
Fügen Sie Referenzen zwischen zwei Nutzlastelementen hinzu, indem Sie das optionale JSON-Element internal_id verwenden, das Nutzlastelemente eindeutig identifiziert.
Verwenden Sie den Block referenceItems, um Referenzen hinzuzufügen oder zu aktualisieren. Sie können Referenzen zwischen zwei beliebigen Elementen hinzufügen, einschließlich Hauptelementen, Suchelementen und zugehörigen Elementen, in einer einzigen Nutzlast.
Weitere Informationen und Code-Muster finden Sie unter CreateOrUpdateCIEnhanced().
Erneute CI-Klassifizierung
Verwenden Sie die Kennzeichnungen updateWithoutUpgrade, updateWithoutDowngradeund updateWithoutSwitch im Einstellungsblock in einer Nutzlast, um unbeabsichtigte Aktualisierungen der CIs-Klasse zu verhindern. Diese Kennzeichnungen verhindern ein Upgrade, Downgrade oder Wechseln der Klasse eines CI, das mehrere Datenquellen unbeabsichtigt versuchen könnten, während sie dasselbe CI aktualisieren. Weitere Informationen und Code-Muster finden Sie unter CreateOrUpdateCIEnhanced().
Kennzeichnungen für die Neuklassifizierung haben Vorrang vor allen anderen Systemeinstellungen für CI-Reklassifizierung während der IRE-Verarbeitung.
Hinzufügen von benutzerdefinierten Vorher- und Nach-Skripts
Verwenden Sie IntegrationHub ETL, um benutzerdefinierte Java-Skripts für eine Datenquelle einer CMDB-Integrationsanwendung hinzuzufügen. Diese Skripts bieten während der Verarbeitung von CMDB-Integrationen Zugriff auf die IRE-Eingabe- und -Ausgabenutzlasten.
- Überspringen Sie eine Nutzlast im Batch, indem Sie status auf SKIPPED setzen. Geben Sie optional einen Grund für das Überspringen der Nutzlast an, der als Kommentar in der jeweiligen Import Set-Zeilentabelle angezeigt wird.
- Ändern Sie die Eingabenutzlast.
- Schreiben Sie andere benutzerdefinierte Logik in das Skript, das die IRE-Nutzlast verwendet.
- Vergleichen Sie auf einfache Weise die Ein- und Ausgabenutzlasten, und identifizieren Sie die verschiedenen Vorgänge, die IRE für jedes CI ausgeführt hat.
- Greifen Sie auf die sys_ids der CIs zu, die von der IRE erstellt oder aktualisiert wurden.
- Schreiben Sie andere benutzerdefinierte Logik in das Skript, das die IRE-Ausgabenutzlast verwendet.