資産および構成アイテムの設計ガイドライン
概要設計ルール
§1 属性値の正規化

§1 属性値の正規化
属性値は、読みやすさと後処理の効率化のため、標準化された基本単位形式で保存する必要があります。また、属性名に基本単位を明記すると便利です。Versio.ioのユーザーインターフェースには、基本単位を人間が読みやすい形式に変換する「美化機能」が用意されています。
基単位の値を持つすべての属性は、これらの単位に変換する必要があります。
- 時間データ:協調世界時(UTC)にミリ秒単位で変換する
- データ量:バイトに変換
- 距離:ミリメートルまたはメートルに変換(使用ケースに応じて)
- 重量:グラムまたはキログラムに変換(使用ケースに応じて)
# 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 属性値の拡張と分割
複数の情報を含む単一の属性は、複数の属性に分割する必要があります。各属性値には、必ず1つの情報のみを含める必要があります。
データ評価は、各情報が1つの属性に一致させることでより容易になります。これは、在庫分析およびガバナンスとコンプライアンスにおける検証ルールの定義に役立ちます。
輸入業者は、他の属性から明らかな属性を追加することで、データをさらに充実させることができます。
# 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 表示名属性の定義
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 マスクのセキュリティ関連または高ボリューム属性値
セキュリティに関連する属性値(例:パスワード、トークン)は、Versio.ioにインポートする際、ハッシュ値への変換によりマスクする必要があります。これにより、セキュリティに関連する値が閲覧されることを防止し、不正使用を防止します。ただし、ハッシュ値への変換後も、値の変更が認識可能となります。
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 不適切な属性の削除
# 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 データインスタンスの分割と結合
データをインポートする際、データソースからのインスタンスを分割したり結合したりすることで、Versio.io内で情報をより意味のある形で構造化したり、要約したりすることができます。
「分割」とは、1つの資産または構成アイテムを複数のインスタンスに分割することを指します。例えば、データベースのスキーマに関する情報を、データベースインスタンスとそのテーブルインスタンスに分割することができます。
「combine」は「結合」の反対です。インポートする際、Versio.io内で複数のデータソースから取得した属性を基にインスタンスを作成します。例えば、異なるモニタリング製品から取得した属性値を1つの構成アイテムに結合したホストを作成できます。
右の図は、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オブジェクトを含めない
# 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を拡張し、相互の関係を含め、トポロジーを作成する
Versio.ioのインポートプロセスにおいて、資産または構成アイテム間の関係のマッピングは、情報品質を大幅に向上させ、 downstream 処理の可能性を拡大します。
データを読み込むたびに、そのデータがVersio.io内の既存のデータとどの程度関連付けられるかを確認することを強くおすすめします。
元のJSONデータオブジェクトを以下の形式で拡張することが良い実践方法であることが確認されています(以下の例も参照してください):
- 'relation': JSONオブジェクト内にすべての関係を格納するための独立したルート属性を作成します。
- '<エンティティ名>': エンティティの名前を属性名として設定し、'relation'の下に配置します。
- ['<instance-id>']: 指定されたエンティティ属性に対応するIDを配列の形式で、すべての関係を作成します。
# Data format of the original data source
{
"myAttribute": "myValue"
}
# Optimized data instance for Versio.io
{
"myAttribute": "myValue",
"relation": {
"host": ["HOST-EFF871BC6C2DAA1E", "HOST-BC6C2DAA1EFEF871"]
}
}