Richtlinien für das Design von Assets und Konfigurationselementen

Eine solide Grundlage für Bestandsaufnahme, CMDB und EAM-Initiativen

Kurz gesagtDemo anfordernKostenlos testen
 
Fabian Klose, Roman Bauer und Matthias Scholze - 24. Juli 2020
Versio.io ist eine Softwarelösung, die Daten aus Anwendungen und Datenquellen von Drittanbietern als Assets oder Konfigurationselemente speichert. Die ursprünglichen Daten von Drittanbietern müssen optimiert werden, um die weitere Verarbeitung durch Verbesserung der Lesbarkeit, Relevanz und Automatisierung zu vereinfachen.
Durch die Entwicklung von Datenimporten hat unser Versio.io-Team wertvolle Erkenntnisse zur Datenoptimierung gewonnen, die wir in Designrichtlinien für Sie umgesetzt haben. In Versio.io verwenden wir das JSON-Objekt als internes Datenformat. Alle Designempfehlungen basieren auf der Optimierung der JSON-Objekte für die einzelnen Assets und CIs.
 

Übersicht über die Konstruktionsregeln

 

§1 Normalisierung von Attributwerten

§1 Normalisierung von Attributwerten
X

§1 Normalisierung von Attributwerten

Attributwerte sollten zur besseren Lesbarkeit und Nachbearbeitung in einem standardisierten Basiseinheitsformat gespeichert werden. Hier kann es auch hilfreich sein, wenn die Basiseinheit im Attributnamen vermerkt wird. Die Benutzeroberfläche von Versio.io bietet eine Funktion zur Verschönerung, mit der Basiseinheiten wieder in ein für Menschen lesbares Format konvertiert werden können.

Alle Attribute mit Basiswerteinheiten sollten in diese Einheiten umgerechnet werden.

  • Zeitangaben: in koordinierte Weltzeit (UTC) in Millisekunden umrechnen
  • Datenvolumen: in Bytes umrechnen
  • Entfernung: in Millimeter oder Meter umrechnen (je nach Anwendungsfall)
  • Gewicht: in Gramm oder Kilogramm umrechnen (je nach Anwendungsfall)

Das folgende Beispiel zeigt, wie das JSON-Objekt aus dem ursprünglichen Datenquellenformat in ein für Versio.io optimiertes Datenformat umgewandelt wird:
# Data format of the original data source
	{
		"myDate": "Fri, 08-11-19, 3:47 PM",
		"myVolume": "4 GB",
		"myDistance": "42,195 km"
	}
# Optimized data format for Versio.io
	{
		"myDateUtc":  1573224441820,
		"myVolumeBytes": 4294967296,
		"myDistanceMeter": 42195
	}
 

§2 Attributwerte anreichern und aufteilen

§2 Attributwerte anreichern und aufteilen
X

§2 Attributwerte anreichern und aufteilen

Einzelne Attribute mit mehr als einer Information müssen in mehrere Attribute aufgeteilt werden. Jeder Attributwert sollte genau eine Information enthalten.

Die Datenauswertung wird einfacher, wenn jede Information einem Attribut zugeordnet ist. Dies ist hilfreich für die Inventarisierung und die Definition von Verifizierungsregeln in Governance & Compliance.

Importeure können Daten auch durch Hinzufügen von Attributen anreichern, die aufgrund anderer Attribute offensichtlich sind.

Das folgende Beispiel zeigt, wie das JSON-Objekt aus der ursprünglichen Datenquelle für Versio.io angereichert und optimiert werden kann:
# Data format of the original data source
	{
    	"osInfo": "Ubuntu 18.04.06 OS-Kernel 4.5.4"
	}
# Optimized data format for Versio.io
	{
		"osType": "Linux", // enrichment
		"osName": "Ubuntu",
		"osVersion": "18.04.06",
		"kernelVersion": "4.5.3"
	}
 

§3 Definieren Sie ein Attribut für den Anzeigenamen.

§3 Definieren Sie ein Attribut für den Anzeigenamen.
X

§3 Definieren Sie ein Attribut für den Anzeigenamen.

In Versio.io können Sie den angezeigten Namen eines Assets oder eines Konfigurationselements auswählen. Er wird als Titel einer einzelnen Instanz und in allen angegebenen Verweisen oder Auflistungen in der Weboberfläche angezeigt. So kann der Benutzer leichter erkennen, um welche Instanz es sich handelt.

Manchmal gibt es in der Originaldatenquelle kein passendes Attribut für den Anzeigenamen. In diesem Fall ist es sinnvoll, im Importer ein neues Attribut hinzuzufügen, in dem aus mehreren anderen Attributen ein aussagekräftiger Kurzname gebildet wird.

Das folgende Beispiel zeigt, wie das JSON-Objekt aus der ursprünglichen Datenquelle für Versio.io optimiert werden kann:
# Data format of the original data source
	{
		"firstName": "John",
		"lastName": "Doe"
	}
# Optimized data format for Versio.io
	{
		"displayName": "John Doe",
		"firstName": "John",
		"lastName": "Doe"
	}
 

§4 Maskierung sicherheitsrelevanter oder umfangreicher Attributwerte

§4 Maskierung sicherheitsrelevanter oder umfangreicher Attributwerte
X

§4 Maskierung sicherheitsrelevanter oder umfangreicher Attributwerte

Sicherheitsrelevante Attributwerte (z. B. Passwörter, Tokens) sollten beim Import in Versio.io durch Umwandlung in Hash-Werte maskiert werden. Dadurch wird verhindert, dass die sicherheitsrelevanten Werte eingesehen werden können und somit ein Missbrauch verhindert wird. Durch die Umwandlung in den Hash-Wert kann jedoch weiterhin die Änderung des Wertes erkannt werden.

Wir verwenden dasselbe Verfahren, um Attributwerte in Versio.io zu speichern, die für Menschen unlesbar sind und ein hohes Volumen haben. Dadurch wird die zu speichernde Datenmenge reduziert und die Anzeige in der Benutzeroberfläche vereinfacht.

Das folgende Beispiel zeigt, wie das JSON-Objekt aus der ursprünglichen Datenquelle für Versio.io optimiert werden kann:
# Data format of the original data source
	{
		"password": "MySecretPassword",
		"rawNumericList": [10,45,23,67,98, ...] # a really long series of values that are not readable by humans
	}
# Optimized data format for Versio.io
	{
		"passwordHash": "952729c61cab7e01e4b5f5ba7b95830d2075f74b",
		"rawNumericListHash": "77c6211491dd37154e42004266f7a6c6b12b4e48"
	}
 

§5 Unangemessene Attribute löschen

Es gibt Attribute, die aufgrund sich ständig ändernder Attributwerte Änderungen in Versio.io generieren. Wenn diese Änderungen irrelevant sind oder Sie eine hohe Anzahl von Änderungen vermeiden möchten, sollten diese Attribute entfernt oder entsprechend angepasst werden.
Darüber hinaus gibt es Attribute, die keine relevanten Informationen liefern. Diese sollten entfernt werden.
Das folgende Beispiel zeigt, wie das JSON-Objekt aus der ursprünglichen Datenquelle für Versio.io optimiert werden kann:
# Data format of the original data source
	{
		"actualTime": "Fri, 08-11-19, 3:47 PM", # changed continuously
		"dynamicMeasure": 10,  # changed continuously
		"constantAttribute": "CONSTANT-VALUE" # constant for every instance and change
		"otherAttribute": "myValue"
	}
# Optimized data format for Versio.io
	{
		"dynamicMeasureLevel": "ok", # level defined by treshold
		"otherAttribute": "myValue"
	}
 

§6 Dateninstanzen teilen und kombinieren

§6 Dateninstanzen teilen und kombinieren
X

§6 Dateninstanzen teilen und kombinieren

Beim Importieren von Daten können Instanzen aus einer Datenquelle aufgeteilt und kombiniert werden, um die Informationen in Versio.io sinnvoller zu strukturieren oder zu verdichten.

Das Wort "teilen" bezieht sich auf die Aufteilung eines Assets oder eines Konfigurationselements in mehrere Instanzen. Beispielsweise können Sie Informationen zu einem Datenbankschema in eine Datenbankinstanz und deren Tabelleninstanzen aufteilen.

Das Wort "kombinieren" ist das Gegenteil davon. Beim Importieren erstellen Sie in Versio.io eine Instanz, deren Attribute auf mehreren Instanzen aus verschiedenen Datenquellen basieren. Sie können beispielsweise einen Host erstellen, in dem die Attributwerte aus verschiedenen Überwachungsprodukten zu einem Konfigurationselement kombiniert werden.

Die Abbildung rechts zeigt ein Beispiel für ein Datenbankschema, das in Versio.io in die Datenbank und die zugehörigen Tabellen aufgeteilt wurde. Diese feinere Struktur erleichtert die Erkennung und Verarbeitung von Details.

Das folgende Beispiel zeigt, wie das JSON-Objekt aus der ursprünglichen Datenquelle für Versio.io optimiert werden kann:
# Data instances from different data sources
	#  Dynatrace
	{
		"host": "prod-qdocker",
		"cpuCores": 4,
		....
	}
	# Check_MK
	{
		"host": "prod-qdocker",
		"maxRAM": "4 GB",
		....
	}
	
# Optimized data instance for Versio.io
	{
		"host": "prod-qdocker",
		"cpuCores": 4,
		"maxRAM": "4 GB",
		....
	}
 

§7 Vermeiden Sie JSON-Objekte in Arrays

Diese Richtlinie basiert auf rein technischen Gründen. Vergleichsfunktionen von JSON-Objekten können nicht unterscheiden, ob Objekte innerhalb von Arrays geändert wurden oder nur ihre Reihenfolge innerhalb des Arrays. Da das Erkennen von Änderungen das Kernstück von versio.io ist, sollte dies nach Möglichkeit vermieden werden.
Eine entsprechende Transformation des Arrays und der darin enthaltenen JSON-Objekte ist in den meisten Fällen problemlos möglich und gewährleistet eine saubere Erkennung von Änderungen.
Das folgende Beispiel zeigt, wie das JSON-Objekt aus der ursprünglichen Datenquelle für Versio.io optimiert werden kann:
# Data format of the original data source
	{
		"managementZones": [
			{
			"id": "6a98d7bc-abb9-44f8-ae6a-73e68e71812a",
			"name": "MyName-1",
			"description": "MyDescription-1"
			}
		]	
	}
# Optimized data format for Versio.io
	{
		"managementZones": {
			"6a98d7bc-abb9-44f8-ae6a-73e68e71812a": {
				"name": "MyName-1",
				"description": "MyDescription-1"
			}
		}	
	}
 

§8 Asset und CI um Beziehungen untereinander erweitern und eine Topologie erstellen

§8 Asset und CI um Beziehungen untereinander erweitern und eine Topologie erstellen
X

§8 Asset und CI um Beziehungen untereinander erweitern und eine Topologie erstellen

Die Abbildung von Beziehungen zwischen Assets oder Konfigurationselementen während des Importprozesses in Versio.io erhöht die Informationsqualität und die Möglichkeiten für die Weiterverarbeitung erheblich.

Wir empfehlen Ihnen dringend, bei jedem Import von Daten zu überprüfen, inwieweit diese mit den bereits in Versio.io vorhandenen Daten in Verbindung gebracht werden können.

Es hat sich bewährt, das ursprüngliche JSON-Datenobjekt in der folgenden Form zu erweitern (siehe auch das Beispiel unten):

  • 'relation': Erstellen Sie ein separates Root-Attribut innerhalb eines JSON-Objekts, um alle Beziehungen zu speichern.
  • '<Entitätsname>': Erstellen Sie ein Attribut mit dem Namen der Entität und fügen Sie es unter 'Beziehung' ein.
  • ['<instance-id>']: Erstelle alle Beziehungen in Form von IDs in einem Array des entsprechenden Entitätsattributs.

Das folgende Beispiel zeigt, wie das JSON-Objekt aus der ursprünglichen Datenquelle für Versio.io optimiert werden kann:
# Data format of the original data source
	{
		"myAttribute": "myValue"
	}
		
# Optimized data instance for Versio.io
	{
		"myAttribute": "myValue",
		"relation": {
			"host": ["HOST-EFF871BC6C2DAA1E", "HOST-BC6C2DAA1EFEF871"]
		}
	}

 

We use cookies to ensure that we give you the best experience on our website. Read privacy policies for more information.