Field(字段)是 UModel 中数据的最基本单元,用于定义日志、指标、追踪、实体等数据的具体属性。每个 Field 包含完整的元数据信息,包括名称、类型、约束条件、显示特性等,是构建可观测数据模型的基础组件。
核心概念
Field 的定义和作用
Field 作为各种数据集的基础组成部分,为数据提供结构化的描述能力。在 UModel 中,Field 扮演着数据描述的核心角色:
数据结构定义:描述数据字段的类型、格式和约束。
语义表达:通过显示名称、描述等提供字段的业务语义。
查询能力:控制字段的可过滤、可分析、可排序等特性。
显示控制:定义字段在界面中的展示方式和格式化规则。
字段在数据模型中的位置
TelemetryDataSet/EntitySet
├── fields: Field[]           # 字段列表
├── time_field: string        # 时间字段引用
└── metrics: Metric[]         # 指标定义(MetricSet专有)Field 属性规范
基础属性
以下是 Field 的核心属性配置:
属性名  | 类型  | 必填  | 默认值  | 描述  | 约束条件  | 
  | string  | 是  | -  | 字段在 UModel 系统中的唯一标识符  | 正则: 长度:0-127字符  | 
  | semantic_string  | 否  | -  | 字段的多语言显示名称  | 支持中英文双语  | 
  | semantic_string  | 否  | -  | 字段的详细描述信息  | 支持中英文双语  | 
  | semantic_string  | 否  | -  | 字段的简短描述信息  | 支持中英文双语  | 
  | enum  | 是  | -  | 字段的数据类型  | 见数据类型表格  | 
  | enum  | 否  | preview  | 字段的发布阶段  | 见发布阶段表格  | 
数据类型支持
UModel 支持以下数据类型:
类型  | 描述  | 适用场景  | 示例  | 
  | 字符串类型  | 文本数据、标识符、枚举值  | “nginx-pod-123”, “ERROR”  | 
  | 整数类型  | 计数器、状态码、端口号  | 8080, 200, 1024  | 
  | 浮点数类型  | 百分比、比率、小数值  | 85.6, 0.95, 3.14  | 
  | 布尔类型  | 开关状态、标志位  | true, false  | 
  | 时间类型  | 时间戳、日期时间  | “2024-01-15T10:30:00Z”  | 
  | JSON对象类型  | 复杂结构化数据  | {“status”: “active”, “count”: 5}  | 
  | JSON数组类型  | 列表数据、多值字段  | [“error”, “warn”, “info”]  | 
发布阶段
字段的生命周期管理通过 launch_stage 属性控制:
阶段  | 描述  | 使用建议  | 
  | 预览阶段(默认)  | 新功能测试,可能随时变更  | 
  | 测试阶段  | 功能基本稳定,小范围使用  | 
  | 正式发布  | 生产环境推荐使用  | 
  | 已废弃  | 计划删除,不建议新项目使用  | 
约束和验证属性
数值约束属性
用于控制数值类型字段的取值范围:
属性名  | 类型  | 适用类型  | 描述  | 示例  | 
  | number  | integer, float  | 字段的最小值  | 0, -100.5  | 
  | number  | integer, float  | 字段的最大值  | 100, 999.99  | 
  | any  | 所有类型  | 字段的默认值  | 0, “INFO”, true  | 
字符串约束属性
用于控制字符串类型字段的格式和长度:
属性名  | 类型  | 适用类型  | 描述  | 示例  | 
  | string  | string  | 正则表达式,用于验证字段值格式  | 
  | 
  | integer  | string  | 字符串的最大长度  | 128, 255  | 
  | any  | 所有类型  | 字段值的示例  | “web-server-01”  | 
分析特性属性
控制字段在查询和分析中的行为:
属性名  | 类型  | 默认值  | 描述  | 使用场景  | 
  | boolean  | false  | 是否可作为 Group By 的列进行聚合分析  | 维度字段(如地区、服务名)  | 
  | boolean  | false  | 是否支持索引过滤查询  | 常用查询条件字段  | 
  | boolean  | false  | 是否可排序  | 需要排序的数值或时间字段  | 
  | enum  | asc  | 默认排序方向:  | 时间字段通常用 desc  | 
显示格式化
显示格式化属性
控制字段在界面中的显示方式:
属性名  | 类型  | 默认值  | 描述  | 
  | string  | -  | 字段的显示单位,仅用于展示,不会进行格式转换  | 
  | enum  | KMB  | 字段的格式化方式,见格式化选项表格  | 
unit 使用最佳实践:
优先配置
data_format,在大部分可观测场景下已可满足需求。如
data_format不满足需求,建议配置data_format为通用的KMB,并配置unit为特定类型。例如温度字段:
data_format: "KMB",unit: "°C"。
数据格式化选项
data_format 支持以下格式化选项:
数值格式化
格式  | 描述  | 样例效果  | 
  | 千、百万、十亿格式化  | 1,234 → 1.23K  | 
存储格式化
格式  | 描述  | 样例效果  | 
  | 字节格式化  | 1024 → 1KB  | 
  | 位格式化  | 8192 → 8Kb  | 
速率格式化
格式  | 描述  | 样例效果  | 
  | 每秒字节数格式化  | 1048576 → 1MB/s  | 
  | 每秒位数格式化  | 1000000 → 1Mbps  | 
  | 每秒IO操作数格式化  | 1000 → 1K io/s  | 
  | 每秒请求数格式化  | 5000 → 5K req/s  | 
百分比格式化
格式  | 描述  | 取值范围  | 样例效果  | 
  | 百分比格式化  | 1-100  | 85 → 85%  | 
  | 小数百分比格式化  | 0-1  | 0.85 → 85%  | 
时间格式化
格式  | 描述  | 样例效果  | 
  | 本地时间格式  | 1705310400 → 2024-01-15 18:00:00  | 
  | 毫秒时间转本地时间  | 1705310400000 → 2024-01-15 18:00:00.000  | 
  | 微秒时间转本地时间  | 1705310400000000 → 2024-01-15 18:00:00.000000  | 
  | 纳秒时间转本地时间  | 1705310400000000000 → 2024-01-15 18:00:00.000000000  | 
  | 特定时区时间  | UTC+8, UTC-5 等  | 
持续时间格式化
格式  | 描述  | 样例效果  | 
  | 天时分秒格式  | 90061 → 1d 01:01:01  | 
  | 时分秒格式  | 3661 → 01:01:01  | 
  | 按天/时/分/秒格式化  | 3600 → 1h  | 
  | 按毫秒/微秒/纳秒格式化  | 1500 → 1.5s  | 
值映射和扩展属性
值映射属性
为枚举类型字段提供值到显示内容的映射:
属性名  | 类型  | 描述  | 
  | map  | 枚举值的映射配置,key 为原始值,value 为映射对象  | 
值映射对象包含以下属性:
name: 映射后的名称标识符display_name: 多语言显示名称description: 多语言描述信息short_description: 多语言简短描述
扩展属性
用于附加元数据和自定义配置:
属性名  | 类型  | 描述  | 示例  | 
  | string  | 字段图标的URL地址(实验性功能)  | 
  | 
  | string  | 字段的唯一标识URI(实验性功能)  | 
  | 
  | map  | 字段的标签信息,用于分类和检索  | 
  | 
  | map  | 字段的附加属性信息  | 
  | 
典型配置示例
监控指标字段
CPU使用率字段
属性  | 值  | 说明  | 
name  | 
  | 字段标识符  | 
display_name  | 
  | 多语言显示名  | 
type  | 
  | 浮点数类型  | 
min_value  | 
  | 最小值  | 
max_value  | 
  | 最大值  | 
data_format  | 
  | 百分比格式化  | 
unit  | ``  | 单位不用额外配置  | 
filterable  | 
  | 支持过滤查询  | 
analysable  | 
  | 支持聚合分析  | 
orderable  | 
  | 支持排序  | 
内存使用量字段
属性  | 值  | 说明  | 
name  | 
  | 字段标识符  | 
display_name  | 
  | 多语言显示名  | 
type  | 
  | 整数类型  | 
min_value  | 
  | 最小值  | 
data_format  | 
  | 字节格式化  | 
unit  | ``  | 单位不用额外配置  | 
filterable  | 
  | 支持过滤查询  | 
analysable  | 
  | 支持聚合分析  | 
日志字段
日志级别字段
属性  | 值  | 说明  | 
name  | 
  | 字段标识符  | 
display_name  | 
  | 多语言显示名  | 
type  | 
  | 字符串类型  | 
filterable  | 
  | 支持过滤查询  | 
analysable  | 
  | 支持聚合分析  | 
value_mapping  | 见值映射示例  | 枚举值映射  | 
日志级别值映射示例:
{
  "DEBUG": {
    "name": "debug",
    "display_name": {"zh_cn": "调试", "en_us": "Debug"}
  },
  "INFO": {
    "name": "info", 
    "display_name": {"zh_cn": "信息", "en_us": "Info"}
  },
  "ERROR": {
    "name": "error",
    "display_name": {"zh_cn": "错误", "en_us": "Error"}
  }
}HTTP状态码字段
属性  | 值  | 说明  | 
name  | 
  | 字段标识符  | 
type  | 
  | 整数类型  | 
min_value  | 
  | HTTP状态码最小值  | 
max_value  | 
  | HTTP状态码最大值  | 
filterable  | 
  | 支持过滤查询  | 
analysable  | 
  | 支持聚合分析  | 
链路追踪字段
Trace ID字段
属性  | 值  | 说明  | 
name  | 
  | 字段标识符  | 
type  | 
  | 字符串类型  | 
pattern  | 
  | 32位十六进制格式  | 
max_length  | 
  | 固定长度32字符  | 
filterable  | 
  | 支持过滤查询  | 
analysable  | 
  | 高基数,不建议聚合  | 
操作持续时间字段
属性  | 值  | 说明  | 
name  | 
  | 字段标识符  | 
type  | 
  | 浮点数类型  | 
min_value  | 
  | 最小值  | 
data_format  | 
  | 毫秒格式化  | 
unit  | 单位不用额外配置  | |
filterable  | 
  | 支持过滤查询  | 
analysable  | 
  | 支持聚合分析  | 
orderable  | 
  | 支持排序  | 
default_order  | 
  | 默认降序排列  | 
实体标识字段
主机名字段
属性  | 值  | 说明  | 
name  | 
  | 字段标识符  | 
type  | 
  | 字符串类型  | 
max_length  | 
  | 最大长度  | 
filterable  | 
  | 支持过滤查询  | 
analysable  | 
  | 支持聚合分析  | 
Pod名称字段
属性  | 值  | 说明  | 
name  | 
  | 字段标识符  | 
type  | 
  | 字符串类型  | 
pattern  | 
  | K8s命名规范  | 
max_length  | 
  | Kubernetes最大长度限制  | 
filterable  | 
  | 支持过滤查询  | 
analysable  | 
  | 支持聚合分析  |