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 über verschiedene Datenquellen hinweg. IRE verwendet Identifizierungsregeln, Abgleichregeln und IRE-Datenquellenregeln, um eingehende Daten zu verarbeiten, bevor diese Daten in die CMDB eingefügt werden.
- IRE verhindert doppelte CIs durch die eindeutige Identifizierung von CIs.
- IRE gleicht CI-Attribute ab, indem nur autorisierte Datenquellen in CMDB geschrieben werden können.
- 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 – Bereichsbezogen.
- Informationen zum Aktivieren des Debuggens und Überprüfens von Problemen mit einer Nutzlast finden Sie unter Protokollieren der an IRE gesendeten Nutzlast und Überprüfen von Problemen mit der Nutzlast [KB0750382].
- Informationen zu den Schritten, die IRE ausführt, um die Funktionsweise von IRE zu veranschaulichen, z. B. Validierung der Nutzlast, Anwendung des Abgleichs und Übermittlung der Daten an die CMDB: Siehe [CMDB - IRE] Funktionsweise der CMDB-Identifizierungs- und Abgleich-Engine bei der Übergabe eines CI (als Nutzlast) zum createOrUpdateCI() [KB0750386].
- Informationen zum Ausführen einer Nutzlast über IRE finden Sie unter [CMDB IRE] Ausführen der CI-Identifizierung bei Bedarf mit der Nutzlast [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 in der Quelltabelle [sys_object_source] eindeutig identifiziert werden. Wenn die Identifizierung mit dieser Methode erfolgreich ist, müssen keine übereinstimmenden Algorithmen angewendet werden, die auf Identifizierungsregeln beruhen, 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"
}
}
]
}Identifizierungsprozesse stützen sich auf die Abhängigkeitsklassifizierung von CIs, um CIs eindeutig zu identifizieren. Beispielsweise, um ein Tomcat-CI zu identifizieren, das ein abhängiges CI ist. Angenommen, es wird ein Windows-Server-CI (unabhängige Klasse) angegeben, das eine Tomcat-Anwendung (abhängige Klasse) ausführt. Ein einziger Konfigurationsdateipfad zur eindeutigen Identifizierung des Tomcat-CI ist nicht ausreichend, da die Tomcat-Anwendung auf mehreren Computern mit identischen Pfaden ausgeführt werden kann. Die Identifizierungs-Engine kann kein zu aktualisierendes CI auswählen. Abhängige Beziehungen erzwingen, dass im Identifizierungsprozess zuerst der Windows Server-Host identifiziert wird, auf dem die Tomcat-Anwendung ausgeführt wird, und erst dann die Tomcat-Anwendung im Kontext des Hosts eindeutig identifiziert wird.
Identifizierung von Nutzlastelementen
- 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 neueste Erkennung (last_discovered) gibt den Zeitstempel der letzten Erkennung des CI an. IRE aktualisiert die Attribute last_discovered und discovery_source von CIs während der Nutzlastverarbeitung immer, auch wenn keine anderen CI-Attribute aktualisiert werden. Wenn last_discovered in der Nutzlast bereitgestellt wird, 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 nicht in der Nutzlast angegeben ist, aktualisiert IRE das Attribut last_discovered mit dem aktuellen Zeitstempel.
Mit den 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 “ können Sie dieses Standardverhalten ä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 Updates: 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 bereitgestellt haben, um das CI eindeutig zu identifizieren, und die Verarbeitung daher nicht fortgesetzt werden kann. Einige dieser Elemente werden als Teilelemente identifiziert, die zur potenziellen 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ängt.
API-Option: partial_payloads, standardmäßig aktiviert. Wenn partial_payloads aktiviert ist, werden partial_commits und deduplicate_payloads unabhängig von ihrer Einstellung in den Optionen automatisch aktiviert.
- Teilweise Commits
Fehler in einigen Elementen verhindern nicht, dass die restlichen Elemente in einer Nutzlast committet werden. Wenn eine Nutzlast Elemente mit Fehlern enthält, legt IRE daher weiterhin die verbleibenden gültigen Elemente in der Nutzlast fest. In dieser Situation werden einige der nicht bestätigten Elemente als Teilnutzlasten gespeichert, und andere nicht bestätigte Elemente werden als unvollständige Nutzlasten gespeichert.
API-Option: partial_commits, standardmäßig aktiviert.
- Deduplizieren Sie Nutzlastelemente
IRE dedupliziert doppelte Elemente innerhalb der Nutzlast und führt diese Duplikate zur Verarbeitung in einem einzigen Nutzlastelement zusammen.
API-Option: deduplicate_payloads, standardmäßig aktiviert.
- Zusammenfassung generieren
IRE generiert Zusammenfassungen in der Ausgabenutzlast mit Verarbeitungsdetails, z. B. die Anzahl der Updates pro Klasse.
API-Option: generate_summary, standardmäßig deaktiviert.
Teilposten
Ein Nutzlastelement wird als Teilelement eingestuft, wenn es die erforderlichen Daten zur eindeutigen 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 Identifizierungskriterienattribute oder beides enthält.
- MISSING_MATCHING_ATTRIBUTES –— Element verfügt nicht über Identifizierungskriterienattribute, um mindestens einen Identifier-Eintrag für den Abgleich zu verwenden.
- REQUIRED_ATTRIBUTE_EMPTY –— CI kann nicht erstellt werden, da ein erforderliches Attribut fehlt.
- MISSING_DEPENDENCY –— Beim abhängigen 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 ermittelt wird, dass Nutzlastelemente Teilelemente sind, werden die Teilelemente als Teilnutzlasten in der Tabelle „CMDB IRE Partial Payloads“ [cmdb_ire_partial_payloads] im JSON-Format für eine spätere potenzielle Verarbeitung gespeichert. IRE verwendet Identifier-Schlüssel, um zu versuchen, eingehende abzugleichen Nutzlasten mit gespeicherten Teilnutzlasten.
Wenn später eine Datenquelle 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 widersprüchliche 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 von IRE dann verarbeitet wird, um die entsprechenden CIs zu erstellen oder zu aktualisieren.
Teilnutzlasten, die älter als 90 Tage sind, werden aus der Tabelle „CMDB IRE Partial Payloads“ [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 angegeben, sodass es sich um ein Teilelement handelt. Da das Computerelement partiell ist, ist das Datenträgerelement, das vom Computerelement abhängt, auch 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 committet, und die Teilnutzlast wird aus der Tabelle der Teilnutzlasten gelöscht.Es gibt einen Grenzwert für die Anzahl der Elemente pro Teilnutzlast, der durch die Eigenschaft „ glide.identification_engine.partial_payload_items_max_size “ festgelegt wird (standardmäßig 1000). Durch das Speichern zugeordneter Beziehungen, Referenzen und abhängiger Elemente in einer Teilnutzlast kann dieser Grenzwert erreicht werden. 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 liegt ein Fehler vor, der keinem Teilelement zugeordnet ist
Unvollständige Elemente werden als unvollständige Nutzlasten in der Tabelle „CMDB IRE Unvollständige Nutzlasten“ [cmdb_ire_incomplete_payloads] im JSON-Format gespeichert. Unvollständige Elemente werden gespeichert, um Nutzlasten mit nicht behebbaren Fehlern zu protokollieren, und werden nie wieder verarbeitet.
Beziehungen werden hinzugefügt
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 sowie Codebeispiele finden Sie unter CreateOrUpdateCIEnhanced().
Hinzufügen von Referenzen zwischen Nutzlastelementen
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 sowie Codebeispiele finden Sie unter CreateOrUpdateCIEnhanced().
Erneute CI-Klassifizierung
Verwenden Sie die Kennzeichnungen updateWithoutUpgrade, updateWithoutDowngradeund updateWithoutSwitch im Einstellungsblock in einer Nutzlast, um zu verhindern, dass die CI-Klasse unbeabsichtigt aktualisiert wird. Diese Kennzeichnungen verhindern ein Upgrade, Downgrade oder Klassenwechsel eines CI, das mehrere Datenquellen unbeabsichtigt versuchen könnten, während sie dasselbe CI aktualisieren. Weitere Informationen sowie Codebeispiele finden Sie unter CreateOrUpdateCIEnhanced().
Reklassifizierungskennzeichnungen haben Vorrang vor allen anderen Systemeinstellungen für Konfigurieren Sie die erneute CI-Klassifizierung während der IRE-Verarbeitung.
Hinzufügen von anwenderdefinierten Vorher- und Nachher-Skripts
Verwenden Sie die IntegrationHub ETL -Definition, um anwenderdefinierte Java-Skripts für eine Datenquelle einer CMDB-Integrationsanwendung hinzuzufügen. Diese Skripts bieten Zugriff auf die IRE-Eingabe- und -Ausgabenutzlasten, während CMDB-Integrationen verarbeitet werden.
- Überspringen Sie eine Nutzlast im Batch, indem Sie status auf ÜBERSPRUNGEN festlegen. Geben Sie optional einen Grund für das Überspringen der Nutzlast an, die als Kommentar in der jeweiligen Importsatz-Zeilentabelle angezeigt wird.
- Ändern Sie die Eingabenutzlast.
- Schreiben Sie andere anwenderdefinierte Logik in das Skript, das die IRE-Nutzlast verwendet.
- Vergleichen Sie auf einfache Weise die Eingabe- und Ausgabenutzlast, 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 anwenderdefinierte Logik in das Skript, das die IRE-Ausgabenutzlast verwendet.