Identification and Reconciliation Engine (IRE)
IRE ist eine zugrunde liegende Schlüsselkomponente in Identifikation und Abgleich und bietet ein zentralisiertes Framework zur Durchführung von Identifizierungs- und Abgleichsprozessen über verschiedene Datenquellen hinweg. IRE verwendet Identifizierungsregeln, Abgleichsregeln und IRE-Datenquellenregeln, wenn eingehende Daten verarbeitet werden, bevor diese Daten in die CMDB eingefügt werden.
- Ire verhindert doppelte CIs, indem CIs eindeutig identifiziert werden.
- IRE stimmt CI-Attribute ab, indem nur autorisierende Datenquellen in CMDB schreiben dürfen.
- Informationen zu Eigenschaften, die sich auf einige Funktionen von IRE auswirken: Siehe Eigenschaften.
- Informationen zur Verwendung von IRE-APIs: Siehe IdentificationEngine: Bereichsbezogen .
- Informationen zum Aktivieren des Debugging und zum Überprüfen von Problemen mit einer Nutzlast: Siehe Protokollieren der an IRE gesendeten Nutzlast und Überprüfen der Probleme mit der Nutzlast [KB0750382] .
- Informationen zu den Schritten, die IRE durchführt, um zu veranschaulichen, wie IRE funktioniert, z. B. Validieren der Nutzlast, Anwenden des Abgleichs und Commit der Daten in die CMDB: Siehe [CMDB – IRE] wie die CMDB-Identifizierungs- und Abgleichsmodul funktioniert, wenn ein CI (als Nutzlast) an das createOrUpdateCI() übergeben wird [KB0750386] .
- Informationen zum Ausführen einer Nutzlast über IRE: Siehe [CMDB IRE] so führen Sie die CI-Identifizierung bei Bedarf mithilfe der Nutzlast aus [KB0750383] .
CI-Identifizierung
Der CMDB Identifikationsprozess basiert auf Identifizierungsregeln, um CIs eindeutig zu identifizieren. Wenn möglich, können CIs auch eindeutig mit identifiziert werden source_nameUnd source_native_keyWerte, die in angegeben werden sys_object_source_infoAbschnitt der Nutzlast und die Quelltabelle [sys_object_Source]. Wenn die Identifizierung mit dieser Methode erfolgreich ist, ist es nicht erforderlich, übereinstimmende Algorithmen anzuwenden, die auf Identifizierungsregeln basieren, was eine langsamere Identifizierungsmethode ist.
Sie können das System so konfigurieren, dass die Verwendung von IRE-Identifizierungsregeln priorisiert wird, auch wenn source_nameUnd source_native_keyWerden bereitgestellt und können zur eindeutigen Identifizierung verwendet werden. Weitere Informationen zur Verwendung von glide.identification_engine.skip_sys_object_source_matchingSystemeigenschaft zum Verwalten dieses Verhaltens siehe Eigenschaften.
{
"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 basieren auf CIs-Abhängigkeitsklassifizierung Zur eindeutigen Identifizierung von CIs. Beispiel: Um ein Tomcat-CI zu identifizieren, das ein abhängiges CI ist. Angenommen wird ein Windows Server-CI (unabhängige Klasse), das eine Tomcat-Anwendung (abhängige Klasse) ausführt. Die Verwendung von „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 CI zum Aktualisieren auswählen. Abhängige Beziehungen zwingen den Identifizierungsprozess, zuerst den Windows Server-Host zu identifizieren, auf dem die Tomcat-Anwendung ausgeführt wird, und dann im Kontext des Hosts die Tomcat-Anwendung selbst eindeutig zu identifizieren.
Identifizierung der Nutzlastelemente
- Kombination von source_nameUnd source_native_keyWerte aus dem sys_object_source_infoObjekt.
- Attribute des Identifizierungskriteriums.
Zeitstempel in Schlüsselattributen
Neueste Discovery ( last_discovered) Und Discovery-Quelle ( discovery_source):
Neueste Discovery ( last_discovered) Ist der Zeitstempel, der angibt, wann das CI zuletzt erkannt wurde. Ire aktualisiert CIs immer last_discoveredUnd discovery_sourceAttribute während der Nutzlastverarbeitung, auch wenn keine anderen CI-Attribute aktualisiert werden. Wenn last_discoveredWird in der Nutzlast bereitgestellt. IRE aktualisiert das CI nur mit dem angegebenen Wert, wenn der angegeben ist last_discoveredDie Zeit in der Nutzlast ist neuer als die in der CMDB. Wenn last_discoveredIst in der Nutzlast nicht angegeben, IRE aktualisiert last_discoveredAttribut mit dem aktuellen Zeitstempel.
Sie können verwenden Glide.Identification_Engine.Skip_Update_Source_Last_Discover_if_older Und Glide.Identification_Engine.ire_message_listener_Skip_Update_Source_Last_detected_to_now Systemeigenschaften zum Ändern dieses Standardverhaltens.
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 wird, fügt IRE diesen Wert ein. Andernfalls fügt IRE den aktuellen Zeitstempel ein.
- Bei 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 zur eindeutigen Identifizierung des CI bereitgestellt haben 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 hat 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_payloadsDie standardmäßig aktiviert ist. Wenn partial_payloadsIst aktiviert, partial_commitsUnd deduplicate_payloadsWerden 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 Commits gemacht werden. Wenn eine Nutzlast Elemente mit Fehlern enthält, werden die verbleibenden gültigen Elemente in der Nutzlast weiterhin von IRE übernommen. 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_commitsDie standardmäßig aktiviert ist.
- Nutzlastelemente deduplizieren
IRE dedupliziert doppelte Elemente innerhalb der Nutzlast und führt diese Duplikate zur Verarbeitung zu einem einzelnen Nutzlastelement zusammen.
API-Option: deduplicate_payloadsDie standardmäßig aktiviert ist.
- Zusammenfassung generieren
IRE generiert Zusammenfassungen in der Ausgabenutzlast mit Verarbeitungsdetails wie der Anzahl der Updates pro Klasse.
API-Option: generate_summaryDie standardmäßig deaktiviert ist.
Teilelemente
Ein Nutzlastelement wird als Teilelement bestimmt, wenn es nicht die erforderlichen Daten für die eindeutige Identifizierung enthält und wenn einer der folgenden Fehler vorliegt. Die eindeutige Identifizierung erfordert, dass das Nutzlastelement über verfügt sys_object_source_infoAbschnitt mit source_nameUnd source_native_keyWerte oder der vollständige Satz der für die CI-Klasse angegebenen Identifizierungskriteriumsattribute oder beides.
- 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 – für abhängiges 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, da Nutzlastelemente als Teilelemente bestimmt werden, werden die Teilelemente als Teilnutzlasten in der Tabelle „teilweise CMDB IRE-Nutzlasten“ [cmdb_Ire_partial_Payloads] im JSON-Format gespeichert, um später potenzielle Verarbeitungsvorgänge zu ermöglichen. IRE verwendet Bezeichnerschlüssel, um zu versuchen, eingehende Nutzlasten mit gespeicherten Teilnutzlasten abzugleichen.
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 Konflikte mit Attributen aufzulösen, verwendet IRE entweder source_recency_timestamp(Wenn source_native_keyUnd source_nameSind identisch) 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 „teilweise CMDB IRE-Nutzlasten“ [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 hat keine Attribute, daher kann IRE es nicht verarbeiten. Jedoch source_nameUnd Source_native_key Werden bereitgestellt, wodurch es zu einem Teilelement wird. Da das Computerelement teilweise ist, ist auch das vom Computerelement abhängige Datenträgerelement 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 sie identisch sind source_nameUnd source_native_key. Daher werden die Teilnutzlast und die neue Nutzlast zusammengeführt, der Vorgang wird bestätigt, und die Teilnutzlast wird aus der Tabelle „Teilnutzlasten“ gelöscht.Es gibt einen Grenzwert für die Anzahl der Elemente pro Teilnutzlast, der von festgelegt wird Glide.Identification_Engine.partial_Payload_items_max_size Eigenschaft (standardmäßig 1000). Das Speichern zugeordneter Beziehungen, Referenzen und abhängiger Elemente in einer Teilnutzlast kann dazu führen, dass dieser Grenzwert erreicht wird. In diesem Fall wird die Nutzlast in mehrere Teilnutzlasten aufgeteilt.
Weitere Informationen zu Teilnutzlasten finden Sie unter CreateOrUpdateCIErweitert() .
Unvollständige Elemente
- Es enthält nicht alle Daten, die für eine 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_unvollständig_Payloads] im JSON-Format gespeichert. Unvollständige Elemente werden zum Zweck der Protokollierung von Nutzlasten mit nicht behebbaren Fehlern gespeichert und nie mehr verarbeitet.
Beziehungen werden hinzugefügt
Fügen Sie Beziehungen hinzu, indem Sie entweder Indizes oder das optionale JSON Internal_ID-Element verwenden.
- Beziehung (übergeordneter Index, untergeordneter Index, Beziehungstyp)
- Beziehung (übergeordnete interne ID, untergeordnete interne ID, Beziehungstyp)
Weitere Informationen und Codebeispiele finden Sie unter CreateOrUpdateCIErweitert() .
Referenzen zwischen Nutzlastelementen werden hinzugefügt
Fügen Sie Referenzen zwischen zwei Nutzlastelementen hinzu, indem Sie das optionale JSON-Element verwenden internal_idElement, das Nutzlastelemente eindeutig identifiziert.
Verwenden Sie referenceItemsBlock zum Hinzufügen oder Aktualisieren von Referenzen. Sie können Verweise zwischen zwei beliebigen Elementen, einschließlich Hauptelementen, Suchelementen und zugehörigen Elementen, in einer einzigen Nutzlast hinzufügen.
Weitere Informationen und Codebeispiele finden Sie unter CreateOrUpdateCIErweitert() .
CI-Neuklassifizierung
Verwenden Sie updateWithoutUpgrade, updateWithoutDowngrade, Und updateWithoutSwitchKennzeichnungen im Einstellungsblock in einer Nutzlast, um unbeabsichtigte Aktualisierungen der Klasse von CIs zu verhindern. Diese Kennzeichnungen verhindern ein Upgrade, ein Downgrade oder einen Wechsel der Klasse eines CI, das mehrere Datenquellen versehentlich versuchen könnten, während sie dasselbe CI aktualisieren. Weitere Informationen und Codebeispiele finden Sie unter CreateOrUpdateCIErweitert() .
Kennzeichnungen für die Neuklassifizierung haben Vorrang vor allen anderen Systemeinstellungen für Konfigurieren Sie die CI-Neuklassifizierung während der IRE-Verarbeitung.
Anwenderdefinierte vor- und Nachskripts werden hinzugefügt
Verwenden Sie IntegrationHub ETL Bis Fügen Sie anwenderdefinierte Java-Skripts für eine Datenquelle einer CMDB-Integrationsanwendung hinzu . Diese Skripts bieten während der Verarbeitung von CMDB-Integrationen Zugriff auf die IRE-Eingabe- und -Ausgabennutzlasten.
- Überspringen Sie eine Nutzlast im Batch, indem Sie festlegen statusBis ÜBERSPRUNGEN . Geben Sie optional einen Grund für das Überspringen der Nutzlast an, der als Kommentar in der jeweiligen Importsatzzeilentabelle angezeigt wird.
- Ändern Sie die Eingabenutzlast.
- Schreiben Sie eine andere anwenderdefinierte Logik innerhalb des Skripts, die die IRE-Nutzlast verwendet.
- Vergleichen Sie einfach die Eingabe- und Ausgabennutzlasten, 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 IRE erstellt oder aktualisiert hat.
- Schreiben Sie eine andere anwenderdefinierte Logik innerhalb des Skripts, die die IRE-Ausgabenutzlast verwendet.