Identification and Reconciliation Engine (IRE)

  • Freigeben Version: Washingtondc
  • Aktualisiert 1. Februar 2024
  • 9 Minuten Lesedauer
  • 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-Prozesse helfen bei der Aufrechterhaltung der Datenintegrität in der CMDB.
    • 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.
    ServiceNow® -Anwendungen wie Service-Mapping, horizontale Erkennung und Mustererkennung verwenden APIs, um Identifizierungs- und Abgleichprozesse anzuwenden. Sie können IRE-Prozesse auch auf Daten anwenden, die von Import Sets importiert wurden. Wenn Sie andere Datenquellen verwenden, einschließlich Datenquellen von Drittanbietern, können Sie REST oder skriptfähige IRE-APIs nutzen, um Identifizierung und Abgleich durchzuführen
    Zusätzliche Information:

    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.

    Ein eindeutiger CI-Bezeichner kann im optionalen Objekt sys_object_source_info in der IRE-Nutzlast bereitgestellt werden.
    {
      "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

    IRE generiert Bezeichnerschlüssel für alle Nutzlastelemente in einer eingehenden Nutzlast und verwendet diese Schlüssel dann, wenn versucht wird, teilweise und eingehende Nutzlasten abzugleichen. Ein Bezeichnerschlüssel basiert entweder auf:
    • Kombination der Werte source_name und source_native_key aus dem Objekt sys_object_source_info.
    • Identifizierungskriteriumsattribute.
    IRE speichert die Bezeichnerschlüssel, die Teilelementen zugeordnet sind, in der Tabelle „CMDB-IRE-Teilnutzlast-Index“ [cmdb_ire_partial_payloads_index] und verwendet diese Schlüssel dann, um eine Übereinstimmung mit Bezeichnern eingehender Nutzlasten zu versuchen.

    Zeitstempel in Schlüsselattributen

    Um in Konflikt stehende Attributwerte aufzulösen, verwendet IRE Zeitstempel in den folgenden Attributen, um Datensätze zu identifizieren, die älter als der aktuelle Datensatz sind und daher ignoriert werden können:
    • 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.
    Sie können auch die folgenden Systemeigenschaften verwenden, um zu ändern, wie IRE den Wert source_recency_timestamp in einer Nutzlast verwendet, um das Attribut last_scan in der Tabelle „Quelle“ [sys_object_source] zu aktualisieren:

    Erweiterte IRE-Funktionen

    Die skriptfähigen APIs CreateOrUpdateCIEnhanced()​​ und identifyCIEnhanced bieten die Funktionalität für die folgenden erweiterten IRE-Funktionen, die nach Bedarf aktiviert oder deaktiviert werden können:
    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.

    IRE-Fehler für ein Teilelement:
    • 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.

    Beispiel für eine Teilnutzlast:
    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.
    Beispiel für eine nachfolgende Nutzlast, die die vorherige Teilnutzlast durch Bereitstellung der fehlenden Details vervollständigt:
    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

    Ein Nutzlastelement wird als unvollständiges Element eingestuft, wenn:
    • Sie enthält nicht alle Daten, die für die eindeutige Identifizierung erforderlich sind
    • Es ist ein Fehler aufgetreten, der keinem Teilelement zugeordnet ist
    Eine eindeutige Identifizierung ist nicht möglich, wenn weder source_name und source_native_key innerhalb des Objekts sys_object_source_info noch der vollständige Satz der für die CI-Klasse angegebenen Identifizierungskriteriumsattribute angegeben 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.

    Verwenden Sie das Objekt relations in der Nutzlast, um Beziehungen hinzuzufügen oder zu aktualisieren, indem Sie auf internal_ids von Elementen verweisen. Beziehungen können mithilfe von Hauptelementen und zugehörigen Elementen in der Nutzlast erstellt werden. Beispiel:
    • 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.

    Bevor Skripts Zugriff auf einen Batch von Eingabenutzlasten bieten, die an IRE gesendet werden. Mit einem benutzerdefinierten Vor-Skript können Sie:
    • Ü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.
    Nach-Skripts bieten Zugriff auf die IRE-Eingabe- und -Ausgabenutzlasten. Mit einem benutzerdefinierten Nach-Skript können Sie:
    • 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.