エンティティタイプ設定の説明¶
このドキュメントでは、エンティティタイプの3つの設定(Data Schema、表示列、関連ビュー)について説明します。
Data Schema:ユーザーが追加できるエンティティフィールドを定義します。表示列:エンティティリスト内のデフォルト表示列、デフォルト非表示列、固定列を定義します。関連ビュー:エンティティ詳細ページに表示するログ、イベント、トレース、ダッシュボードなどの関連ビューを定義します。
Data Schema¶
Data Schema は、エンティティタイプにカスタムフィールドを追加するために使用されます。システムは最初に公式ベーススキーマを読み込み、その後ユーザーが設定した追加フィールドを重ねて適用します。
公式ベーススキーマ¶
システムはエンティティタイプに対して公式ベーススキーマを提供しており、ユーザーはフロントエンド画面で具体的な公式フィールドの詳細を確認できます。
ユーザーが設定する Data Schema では、追加フィールドのみを宣言すればよく、公式ですでに定義されているトップレベル情報や基本フィールドを再度宣言する必要はありません。
再度宣言する必要がない内容は以下のとおりです。
| タイプ | 例 |
|---|---|
| トップレベルのメタデータ | kind、トップレベルの name、version、entity_type |
| 公式ソース設定 | sources |
| 公式基本フィールド | name、display_name、description、project、env、owner、lifecycle、tier |
| 公式リレーションフィールド | component_of、depends_on |
| 公式共通拡張フィールド | custom_tags、contact、link |
フィールドは、公式 Schema または custom_properties で定義されている場合にのみ、有効なエンティティフィールドになります。定義されていないフィールドは、データ報告、表示列設定、または関連ビュー変数に出現しても、エンティティフィールドとして保存または表示されず、システムはそのフィールドを無視します。
基本構造¶
ユーザー定義フィールドは、custom_properties の下に記述します。
custom_properties:
- name: service_level_objective
type: number
description: "サービス目標達成率"
validation:
min: 0
max: 100
フィールドの説明:
| フィールド | 説明 |
|---|---|
custom_properties |
ユーザー追加フィールドリスト |
name |
カスタムフィールド名。必須です。公式フィールドと同名にすることはできません。 |
type |
フィールドタイプ |
description |
フィールドの説明 |
required |
フィールドが必須かどうか |
validation |
フィールドバリデーションルール |
mappings |
異なるソースのペイロードにおけるフィールド名マッピング |
weight_overrides |
フィールドレベルのソースウェイトオーバーライド |
フィールド名競合ルール¶
カスタムフィールド名は、公式フィールドと同名にすることはできません。
競合が発生した場合:
- 公式フィールドが常に保持されます。
- カスタムフィールドは無効になります。
- ユーザーはカスタムフィールド名を変更してから保存する必要があります。
例えば、公式フィールドにすでに env が存在する場合、以下のように設定しないでください。
公式フィールドにすでに contact が存在する場合も、その内部構造を再定義しようとしないでください。
フィールドタイプ¶
| カテゴリ | type | 説明 |
|---|---|---|
| 基本スカラー | string |
文字列。長さ制限、正規表現マッチング、空文字列フィルタリングをサポートします。 |
| 基本スカラー | integer |
整数。数値範囲のバリデーションをサポートします。 |
| 基本スカラー | number |
数値。浮動小数点数と精度制御をサポートします。 |
| 基本スカラー | boolean |
ブール値 |
| コレクションコンテナ | array |
配列。items を定義する必要があります。 |
| コレクションコンテナ | object |
オブジェクト。ネストされたフィールドをサポートします。 |
| セマンティック制約 | enum |
列挙値。allowed_values を定義する必要があります。 |
| セマンティック制約 | urn |
システム内のエンティティ参照 |
| セマンティック制約 | datetime |
時刻。ISO 8601 形式を使用します。 |
| セマンティック制約 | uri |
URL/URI アドレス |
設定例¶
custom_properties:
- name: service_level_objective
type: number
description: "サービス目標達成率"
validation:
min: 0
max: 100
- name: endpoints
type: array
description: "サービスアクセスエンドポイント"
min_items: 1
items:
type: object
required: [ip, port]
properties:
- name: ip
type: string
validation:
pattern: "^((25[0-5]|(2[0-4]|1\\d|[1-9]|)\\d)\\.?\\b){4}$"
- name: port
type: number
validation:
min: 1
max: 65535
- name: protocol
type: enum
allowed_values:
- http
- https
- tcp
設定の推奨事項¶
- ユーザー定義フィールドは
custom_propertiesの下にのみ記述してください。 - 公式の DataSchema を完全にコピーしないでください。
- 公式フィールドを重複して定義しないでください。
- 公式 Schema または
custom_propertiesにないフィールドは無視され、有効なエンティティフィールドとして保存または表示されません。 arrayタイプはitemsを定義する必要があります。enumタイプはallowed_valuesを定義する必要があります。- カスタムフィールドを必須にする場合は、フィールドレベルで
required: trueを使用します。
表示列¶
表示列は、エンティティリスト内の列の表示方法を設定するために使用されます。
基本構造¶
table_columns:
- name
- entity_type
- field: project
fixed: true
hidden: false
- field: owner
hidden: false
- field: env
hidden: true
- field: business_owner
fixed: false
hidden: false
フィールドの説明¶
| フィールド | 説明 |
|---|---|
field |
列に対応するフィールド名 |
fixed |
固定表示列かどうか。デフォルトは false です。 |
hidden |
デフォルトで非表示かどうか。デフォルトは false です。 |
設定ルール¶
fieldはエンティティに存在するフィールドである必要があります。公式フィールドでも、ユーザーがcustom_propertiesで追加したフィールドでも構いません。未定義のフィールドは表示されません。fixed: trueは固定列を示します。固定列は常に表示され、表示列の有効化/無効化リストには表示されません。hidden: falseはデフォルトで表示することを示します。hidden: trueはデフォルトで非表示にすることを示しますが、ユーザーは表示列設定で手動で有効にできます。name、entity_typeのような簡略表記は、field: name、field: entity_typeと同等であり、デフォルトで表示されます。
fixed: true と hidden: true を同時に設定することはお勧めしません。同時に出現した場合は、固定列として扱われ、常に表示されます。
例¶
table_columns:
- field: name
fixed: true
- field: project
- field: owner
- field: env
hidden: true
- field: service_level_objective
hidden: false
関連ビュー¶
関連ビューは、エンティティタイプに基づいて詳細ページのビュー(ログ、イベント、トレース、コンテナ、Pod、ダッシュボードビューなど)をバインドするために使用されます。エンティティの詳細を表示する際、システムはそのエンティティタイプにバインドされたビューを読み取って表示します。
公式組み込みビュー¶
システムは、エンティティタイプに応じて一部の公式組み込みビューを提供する場合があります。ユーザーは、表示する必要のない公式ビューを手動で閉じることができます。
カスタム関連ビュー¶
カスタム関連ビューは、telemetrySelectors の下に記述します。
基本構造:
telemetrySelectors:
- name: "エラーログ"
type: explorer
viewName: logs
query: "service='{{metadata.service}}'"
- name: "メトリクス"
type: dashboard
timerange: "30m"
viewName: "サービス概要"
フィールドの説明¶
name¶
エンティティ詳細ページのタブに表示される名前です。
type¶
関連ビュータイプ。現在、次の2つをサポートしています:
| type | 説明 |
|---|---|
dashboard |
ダッシュボード |
explorer |
エクスプローラー |
explorer タイプの設定¶
explorer は、ログ、イベント、トレース、コンテナ、Pod などのエクスプローラーリストを関連付けるために使用されます。
viewName¶
エクスプローラータイプ。現在サポートされているもの:
| viewName | 説明 |
|---|---|
logs |
ログエクスプローラー |
event |
イベントエクスプローラー |
trace |
トレースエクスプローラー |
container |
コンテナエクスプローラー |
pod |
Pod エクスプローラー |
query¶
フィルター条件。DQL クエリ構文を使用します。
変数を使用して現在のエンティティ属性を参照できます:
例:
より複雑な条件を記述することもできます:
query で参照される {{metadata.field}} は、定義済みのエンティティフィールドからのものである必要があります。フィールドが存在しないか値が空の場合、クエリ条件はデータに一致しない可能性があります。
explorer の例¶
- name: "エラーログ"
type: explorer
viewName: logs
query: "service='{{metadata.service}}' AND df_status NOT IN ['ok','info']"
- name: "イベント"
type: explorer
viewName: event
query: "service='{{metadata.service}}'"
dashboard タイプの設定¶
dashboard は、詳細ページにダッシュボードを表示するために使用されます。
timerange¶
ダッシュボードクエリの時間範囲です。
keys と notinkeys¶
特定のエンティティ条件が満たされた場合にのみ、そのダッシュボードが表示されます。
# 現在のエンティティの database_type 値が MySQL の場合に表示
keys: { database_type: "MySQL" }
# 現在のエンティティに host フィールドが存在し、database_type 値が MySQL の場合に表示
keys: { host: "*", database_type: "MySQL" }
# 現在のエンティティの database_type 値が MySQL でない場合に表示
notinkeys: { database_type: "MySQL" }
viewName¶
ダッシュボード名です。
注意
- アクセス可能なダッシュボード名を入力する必要があります。
- 名前はダッシュボードと一致している必要があります。そうしないと正しく開けません。
- 同じ名前のシステムビューとユーザービューが存在する場合、ユーザービューが優先されます。
dashboard の例¶
- name: "メトリクス"
type: dashboard
timerange: "30m"
viewName: "サービス概要"
- name: "メトリクス"
type: dashboard
keys: { database_type: "MySQL" }
timerange: "1h"
viewName: "インフラストラクチャ MySQL 監視ビュー"
完全な例¶
telemetrySelectors:
- name: "エラーログ"
type: explorer
viewName: logs
query: "service='{{metadata.service}}' AND df_status NOT IN ['ok','info']"
- name: "イベント"
type: explorer
viewName: event
query: "service='{{metadata.service}}'"
- name: "サービス概要"
type: dashboard
timerange: "30m"
viewName: "サービス概要"
- name: "メトリクス"
type: dashboard
keys: { database_type: "MySQL" }
timerange: "1h"
viewName: "インフラストラクチャ MySQL 監視ビュー"
- name: "メトリクス"
type: dashboard
keys: { database_type: "Oracle" }
timerange: "1h"
viewName: "インフラストラクチャ Oracle 監視ビュー"
設定の推奨事項¶
explorer.queryで参照される{{metadata.field}}は、エンティティに実際に存在する属性である必要があります。dashboard.viewNameは、アクセス可能なダッシュボードを指している必要があります。keysは、エンティティ属性値に基づいて異なるダッシュボードを表示する場合に適しています。- 1つのエンティティタイプに複数の関連ビューを設定できます。
telemetrySelectorsの下に直接追加してください。