コンテンツにスキップ

エンティティタイプ設定の説明

このドキュメントでは、エンティティタイプの3つの設定(Data Schema表示列関連ビュー)について説明します。

  • Data Schema:ユーザーが追加できるエンティティフィールドを定義します。
  • 表示列:エンティティリスト内のデフォルト表示列、デフォルト非表示列、固定列を定義します。
  • 関連ビュー:エンティティ詳細ページに表示するログ、イベント、トレース、ダッシュボードなどの関連ビューを定義します。

Data Schema

Data Schema は、エンティティタイプにカスタムフィールドを追加するために使用されます。システムは最初に公式ベーススキーマを読み込み、その後ユーザーが設定した追加フィールドを重ねて適用します。

公式ベーススキーマ

システムはエンティティタイプに対して公式ベーススキーマを提供しており、ユーザーはフロントエンド画面で具体的な公式フィールドの詳細を確認できます。

ユーザーが設定する Data Schema では、追加フィールドのみを宣言すればよく、公式ですでに定義されているトップレベル情報や基本フィールドを再度宣言する必要はありません。

再度宣言する必要がない内容は以下のとおりです。

タイプ
トップレベルのメタデータ kind、トップレベルの nameversionentity_type
公式ソース設定 sources
公式基本フィールド namedisplay_namedescriptionprojectenvownerlifecycletier
公式リレーションフィールド component_ofdepends_on
公式共通拡張フィールド custom_tagscontactlink

フィールドは、公式 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 が存在する場合、以下のように設定しないでください。

custom_properties:
  - name: env
    type: string

公式フィールドにすでに contact が存在する場合も、その内部構造を再定義しようとしないでください。

custom_properties:
  - name: contact
    type: array
    items:
      type: object

フィールドタイプ

カテゴリ 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 はデフォルトで非表示にすることを示しますが、ユーザーは表示列設定で手動で有効にできます。
  • nameentity_type のような簡略表記は、field: namefield: entity_type と同等であり、デフォルトで表示されます。

fixed: truehidden: 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

エンティティ詳細ページのタブに表示される名前です。

name: "エラーログ"

type

関連ビュータイプ。現在、次の2つをサポートしています:

type 説明
dashboard ダッシュボード
explorer エクスプローラー

explorer タイプの設定

explorer は、ログ、イベント、トレース、コンテナ、Pod などのエクスプローラーリストを関連付けるために使用されます。

viewName

エクスプローラータイプ。現在サポートされているもの:

viewName 説明
logs ログエクスプローラー
event イベントエクスプローラー
trace トレースエクスプローラー
container コンテナエクスプローラー
pod Pod エクスプローラー

query

フィルター条件。DQL クエリ構文を使用します。

変数を使用して現在のエンティティ属性を参照できます:

{{metadata.field}}

例:

query: "service='{{metadata.service}}'"

より複雑な条件を記述することもできます:

query: "service='{{metadata.service}}' AND df_status NOT IN ['ok','info']"

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

ダッシュボードクエリの時間範囲です。

timerange: "30m"
timerange: "1h"
timerange: "24h"

keysnotinkeys

特定のエンティティ条件が満たされた場合にのみ、そのダッシュボードが表示されます。

# 現在のエンティティの 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 の下に直接追加してください。

フィードバック

このページは役に立ちましたか?