資産および構成アイテム設計ガイドライン | インベントリ、CMDB および EAM

資産および構成アイテムの設計ガイドライン

在庫管理、CMDB、およびEAMイニシアチブのための堅固な基盤

要するにデモをリクエストする無料トライアルを開始する
 
ファビアン・クローズ、ローマン・バウアー、マティアス・ショルツ - 2020年7月24日
Versio.ioは、サードパーティのアプリケーションやデータソースからデータを資産または設定項目として保存するソフトウェアソリューションです。元のサードパーティデータは、読みやすさ、関連性、自動化を向上させることで、その後の処理を容易にするため最適化が必要です。
Versio.io チームはデータインポーターを構築する過程で、データ最適化に関する貴重な教訓を学び、それらを設計ガイドラインとしてご提供しています。Versio.io では、内部データ形式として JSON オブジェクトを採用しています。すべての設計推奨事項は、個々のアセットと CI に合わせて JSON オブジェクトを最適化することを前提に策定されています。
 

概要設計ルール

 

§1 属性値の正規化

§1 属性値の正規化
X

§1 属性値の正規化

属性値は、読みやすさと後処理の効率化のため、標準化された基本単位形式で保存する必要があります。また、属性名に基本単位を明記すると便利です。Versio.ioのユーザーインターフェースには、基本単位を人間が読みやすい形式に変換する「美化機能」が用意されています。

基単位の値を持つすべての属性は、これらの単位に変換する必要があります。

  • 時間データ:協調世界時(UTC)にミリ秒単位で変換する
  • データ量:バイトに変換
  • 距離:ミリメートルまたはメートルに変換(使用ケースに応じて)
  • 重量:グラムまたはキログラムに変換(使用ケースに応じて)

以下の例は、元のデータソース形式のJSONオブジェクトをVersio.io用に最適化されたデータ形式に変換する方法を示しています:
# 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 属性値の拡張と分割

§2 属性値の拡張と分割
X

§2 属性値の拡張と分割

複数の情報を含む単一の属性は、複数の属性に分割する必要があります。各属性値には、必ず1つの情報のみを含める必要があります。

データ評価は、各情報が1つの属性に一致させることでより容易になります。これは、在庫分析およびガバナンスとコンプライアンスにおける検証ルールの定義に役立ちます。

輸入業者は、他の属性から明らかな属性を追加することで、データをさらに充実させることができます。

以下の例は、元のデータソースから取得したJSONオブジェクトをVersio.io用に拡張し最適化する方法を示しています:
# 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 表示名属性の定義

§3 表示名属性の定義
X

§3 表示名属性の定義

Versio.io では、アセットまたは構成項目の表示名を選択できます。この名前は、単一のインスタンスのタイトルとして表示され、ウェブインターフェース内の指定された参照や一覧表示にも表示されます。これにより、ユーザーがどのインスタンスを指しているのかを容易に理解できます。

元のデータソースから表示名として適切な属性が見つからない場合があります。このような場合、インポーターに新しい属性を追加し、複数の属性から意味のある短い名前を作成することが役立ちます。

以下の例は、元のデータソースから取得したJSONオブジェクトをVersio.io用に最適化する方法を示しています:
# 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 マスクのセキュリティ関連または高ボリューム属性値

§4 マスクのセキュリティ関連または高ボリューム属性値
X

§4 マスクのセキュリティ関連または高ボリューム属性値

セキュリティに関連する属性値(例:パスワード、トークン)は、Versio.ioにインポートする際、ハッシュ値への変換によりマスクする必要があります。これにより、セキュリティに関連する値が閲覧されることを防止し、不正使用を防止します。ただし、ハッシュ値への変換後も、値の変更が認識可能となります。

Versio.ioでは、人間が読み取れない形式で大量に存在する属性値を保存する際、同じ手順を採用しています。これにより、保存する必要のあるデータ量を削減し、ユーザーインターフェースでの表示を容易にします。

以下の例は、元のデータソースから取得したJSONオブジェクトをVersio.io用に最適化する方法を示しています:
# 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 不適切な属性の削除

Versio.ioでは、属性値の継続的な変化に基づいて変更を生成する属性があります。これらの変更が不要な場合、または変更の数が多くなるのを避けたい場合は、これらの属性を削除するか、適切に調整する必要があります。
さらに、関連する情報を提供しない属性も存在します。これらの属性は削除する必要があります。
以下の例は、元のデータソースから取得したJSONオブジェクトをVersio.io用に最適化する方法を示しています:
# 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 データインスタンスの分割と結合

§6 データインスタンスの分割と結合
X

§6 データインスタンスの分割と結合

データをインポートする際、データソースからのインスタンスを分割したり結合したりすることで、Versio.io内で情報をより意味のある形で構造化したり、要約したりすることができます。

「分割」とは、1つの資産または構成アイテムを複数のインスタンスに分割することを指します。例えば、データベースのスキーマに関する情報を、データベースインスタンスとそのテーブルインスタンスに分割することができます。

「combine」は「結合」の反対です。インポートする際、Versio.io内で複数のデータソースから取得した属性を基にインスタンスを作成します。例えば、異なるモニタリング製品から取得した属性値を1つの構成アイテムに結合したホストを作成できます。

右の図は、Versio.ioでデータベースと関連するテーブルに分割されたデータベーススキーマの例を示しています。このより詳細な構造は、詳細の認識と処理を容易にします。

以下の例は、元のデータソースから取得したJSONオブジェクトをVersio.io用に最適化する方法を示しています:
# 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 配列内にJSONオブジェクトを含めない

このポリシーは純粋に技術的な理由に基づいています。JSONオブジェクトの比較関数は、配列内のオブジェクトが変更されたのか、それとも配列内の順序が変更されただけなのかを区別できません。変更の検出はversio.ioの核心機能であるため、可能な限り回避する必要があります。
配列と含まれるJSONオブジェクトの対応する変換は、ほとんどのケースで容易に実施可能であり、変更の検出を正確に行うことができます。
以下の例は、元のデータソースから取得したJSONオブジェクトをVersio.io用に最適化する方法を示しています:
# 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 アセットとCIを拡張し、相互の関係を含め、トポロジーを作成する

§8 アセットとCIを拡張し、相互の関係を含め、トポロジーを作成する
X

§8 アセットとCIを拡張し、相互の関係を含め、トポロジーを作成する

Versio.ioのインポートプロセスにおいて、資産または構成アイテム間の関係のマッピングは、情報品質を大幅に向上させ、 downstream 処理の可能性を拡大します。

データを読み込むたびに、そのデータがVersio.io内の既存のデータとどの程度関連付けられるかを確認することを強くおすすめします。

元のJSONデータオブジェクトを以下の形式で拡張することが良い実践方法であることが確認されています(以下の例も参照してください):

  • 'relation': JSONオブジェクト内にすべての関係を格納するための独立したルート属性を作成します。
  • '<エンティティ名>': エンティティの名前を属性名として設定し、'relation'の下に配置します。
  • ['<instance-id>']: 指定されたエンティティ属性に対応するIDを配列の形式で、すべての関係を作成します。

以下の例は、元のデータソースから取得したJSONオブジェクトをVersio.io用に最適化する方法を示しています:
# 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.