概述
EntitySet 是 UModel 中用于定义可观测实体集合的核心概念。一个 EntitySet 定义了一类实体资源的结构、属性和行为,是构建可观测数据模型的基础元素。
EntitySet 通过统一的实体定义,帮助我们:
标准化描述 IT 环境中的各种资源。
建立实体间的关联关系。
支持实体的生命周期管理。
实现跨域的数据融合和分析。
EntitySet 定义与设计原则
核心定义
EntitySet 是对同一类实体的抽象定义,包含:
实体类型标识:唯一标识实体类别的名称。
字段结构:定义实体的属性字段和约束。
主键设计:确保实体唯一性的标识字段。
元数据信息:描述实体的展示名称、说明等。
设计原则
单一职责原则:每个 EntitySet 应该只描述一种类型的实体。
清晰边界原则:实体边界应该清晰,避免概念重叠。
演进兼容原则:设计时考虑未来扩展需求,保持向后兼容。
实体字段设计
字段类型和属性
EntitySet 中的字段具有丰富的配置选项,详情请参见字段系统。
主键字段设计:主键字段用于唯一标识实体,支持单字段和复合字段主键。
设计要求
说明
推荐做法
避免做法
唯一性保证
系统中通过主键字段能够唯一标识一个实体
service_name+cluster_name仅使用
port等非唯一字段稳定性要求
主键在实体生命周期内保持稳定
service_id、hostnameip_address、process_id语义清晰性
主键应该具有清晰的业务语义
service_name、pod_nameuuid、hash_value主键类型配置
主键类型
配置示例
适用场景
单字段主键
primary_key_fields: ["service_name"]全局唯一的实体
复合主键
primary_key_fields: ["service_name", "cluster_name"]需要多字段组合才能唯一标识
实体生命周期管理
生命周期阶段
实体在 UModel 中经历以下生命周期阶段:
阶段  | 说明  | 行为  | 
活跃  | 实体活跃期  | 在活跃期,实体可以被查询到  | 
过期  | 实体过期  | 标识实体已过期,在最新时间区间无法查询,但还可以在实体存活期间被查询到  | 
删除  | 实体被删除  | 实体最后一次上报后,超过特定TTL(当前默认30天)后会被删除,该实体将无法被查询到  | 
时间字段含义
字段名称  | 字段配置  | 含义  | 用途  | 管理方式  | 
首次观测时间  | 
  | 实体首次被系统观测到的时间  | 确定实体的创建时间点  | 创建时设置,后续不变,若上报程序不带状态,可不填此字段  | 
最后观测时间  | 
  | 实体最后一次被系统观测到的时间  | 判断实体的活跃状态  | 每次更新时刷新  | 
保活时间  | 
  | 实体在最后观测时间之后的存活期限  | 确定实体的可见范围  | 配置固定值,默认3600秒  | 
实体可见期
实体可见期的计算方式(遵循左闭右开原则):
[首次观测时间, 最后观测时间 + 保活时间)。下述是一些实体可见期的示例:
实体第一次上报时间为
2024-01-01 10:00:00,最后一次上报时间为2024-01-01 11:00:00,保活时间为3600秒,则实体可见期为[2024-01-01 10:00:00, 2024-01-01 12:00:00)。实体第一次上报时间为
2024-01-01 10:00:00,最后一次上报时间为2024-01-01 12:00:00,保活时间为300秒,则实体可见期为[2024-01-01 10:00:00, 2024-01-01 12:05:00)。