本文用于介绍云产品实体生命周期,包含CloudResource与EntityStore的关系与实体管理。
实体生成
CloudResource 是云监控 2.0 中用于存储云资源元数据的核心组件。当您开通云监控 2.0 后,系统会在您创建的第一个工作空间初始化云产品实体所需的资源,负责持续探测账号下各云产品的实例数据。
CloudResource 基础信息参考:基本概念。
数据存储位置:
<region_id> 表示 CloudResource 所在区域。
<account_id> 表示您的账号 ID。
Project:
cloud-resource-<region_id>-<account_id>。LogStore(实体):
cloud-resource____<account_id>__entity。LogStore(拓扑):
cloud-resource____<account_id>__topo。
实体状态管理
核心字段说明
字段名 | 说明 |
| 操作类型,取值为 |
| 最后观测时间(Unix 时间戳,单位:秒) |
| 实体存活时长(单位:秒) |
| 实体删除时间(Unix 时间戳,单位:秒) |
存活时长(KeepAlive)计算规则
存活时长:6 天,未触发更新时默认 6 天,全量/增量更新后会使用触发时间重新计算存活周期。
说明云产品实例未主动删除时存活时间为 6 天,删除后立即失效。
实体同步方式
RMC(资源管理中心)
云监控 2.0 订阅资源管理中心的资源数据,根据可观测产品的需要整理加工后保存至 CloudResource。
同步方式 | 触发时间 | 说明 |
全量同步 | 每天 05:00 后 | 系统从RMC 每日同步的全量资源快照,进行完整对账 |
增量同步 | 实时 | 系统订阅资源变更事件,实时更新实例信息 |
增量同步事件存储位置:
Project:aliyun-metadata-
<account_id>-<region_id>。LogStore:event。
OpenAPI
对于部分未对接 RMC 的云产品,系统通过调用对应云产品的 OpenAPI 获取实例列表。
同步方式 | 触发频率 | 说明 |
定时拉取 | 默认每 5 分钟 | 定时调用云产品 API 获取最新的实例列表 |
实体更新(Update)
触发条件
满足以下任一条件时触发实体更新:
RMC 全量同步:每日( 05:00 后)全量对账时发现的资源。
RMC 增量事件:从 RMC 接收到资源变更事件,且
resourceChangeType字段值包含ResourceUpdate或ResourceCreate。accountId:11111222222333333 changeId:sc-774c3f1cc699dbebe2e0de2350f2f43d messageType:ResourceChange regionId:cn-hangzhou resourceChangeType:ResourceUpdate resourceDiff:{"changedProperties":{"EipAddress.AllocationId":{"previousValue":"","updatedValue":"eip-xxxxxxxxxxxxx"}}} resourceId:i-bp16ksdjg750yljlwefsdf resourceSnapshot:{"accountId":"111112222222223333333","configuration":{"ResourceGroupId":"","Memory":16384...............} 收起 resourceType:ACS::ECS::Instance version:1768285361729000OpenAPI 拉取:定时调用 API 获取到云产品的全部实例数据,默认每 5 分钟调度一次。
系统处理
当触发实体更新时,系统执行以下操作:
__method__ = "Update"
__keep_alive_seconds__ = <根据数据源计算的存活时长>
__last_observed_time__ = <最后观测时间>
<业务字段> = <从数据源提取的实例属性>实体删除(Delete)
触发条件
从 RMC 的 LogStore 接收到资源变更事件,且 resourceChangeType 字段值包含 delete 或 del(不区分大小写)。
下面是增量事件的删除事件示例:
accountId:111111111111111
changeId:sc-92350e9a3bfc723d74d3afac933d71ce
messageType:ResourceChange
regionId:cn-shenzhen
resourceChangeType:ResourceDelete
resourceId:i-wz91pr7mqljslfjwf
resourceType:ACS::ECS::Instance
version:1768293680116000系统处理
当检测到资源删除事件时,系统执行以下操作:
__method__ = "Expire"
__keep_alive_seconds__ = 0
__last_observed_time__ = <当前时间>
__delete_at__ = <当前时间>实体过期
过期判定
当满足以下条件时,实体被系统判定为过期:当前时间 > __last_observed_time__ + __keep_alive_seconds__。
数据流示意
┌───────────────────────────────────────────────────────────────────────────────┐
│ 数据采集层 │
├─────────────────────────────────────────────────┬─────────────────────────────┤
│ RMC 数据源 │ OpenAPI 数据源 │
│ │ │
│ ┌───────────────┐ ┌───────────────────────┐ │ ┌───────────────────┐ │
│ │ OSS 全量 │ │ SLS增量事件 │ │ │ 定时 API 调用 │ │
│ │ (每日05:00) │ │ (实时) │ │ │ (每5分钟) │ │
│ └───────┬───────┘ │ │ │ └─────────┬─────────┘ │
│ │ │ Project: │ │ │ │
│ │ │ aliyun-metadata- │ │ │ │
│ │ │ <account_id>- │ │ │ │
│ │ │ <region_id> │ │ │ │
│ │ │ LogStore: event │ │ │ │
│ │ └───────────┬───────────┘ │ │ │
│ │ │ │ │ │
└──────────┼────────────────────────┼─────────────┴──────────────┼──────────────┘
│ │ │
▼ ▼ ▼
┌───────────────────────────────────────────────────────────────────────────────┐
│ 元数据处理引擎 │
│ │
│ ┌───────────────────────────────────────────────────────────────────────┐ │
│ │ 实体状态判定 │ │
│ │ ┌──────────────────────────┐ ┌──────────────────────────┐ │ │
│ │ │ resourceChangeType │ │ resourceChangeType │ │ │
│ │ │ = Create/Update │ │ 包含 Delete/Del │ │ │
│ │ └────────────┬─────────────┘ └────────────┬─────────────┘ │ │
│ │ │ │ │ │
│ │ ▼ ▼ │ │
│ │ ┌──────────────────────────┐ ┌──────────────────────────┐ │ │
│ │ │ __method__ = Update │ │ __method__ = Expire │ │ │
│ │ │ 设置存活时长 │ │ __keep_alive__ = 0 │ │ │
│ │ └──────────────────────────┘ └──────────────────────────┘ │ │
│ └───────────────────────────────────────────────────────────────────────┘ │
│ │
└───────────────────────────────────────────────────────────────────────────────┘
│
▼
┌───────────────────────────────────────────────────────────────────────────────┐
│ CloudResource 存储 │
│ │
│ Project: cloud-resource-<region_id>-<account_id> │
│ ├── LogStore: cloud-resource____<account_id>__entity (实体数据) │
│ └── LogStore: cloud-resource____<account_id>__topo (拓扑关系) │
│ │
└───────────────────────────────────────────────────────────────────────────────┘实体投递
EntityStore 是云监控 2.0 中用于存储云资源实体的核心组件。当您创建一个工作空间后,云监控 2.0 会自动为工作空间创建 EntityStore。当您随后在工作空间内执行了可观测数据接入时,接入中心会根据接入时选择的实体范围,将相关的实体从 CloudResource 投递到工作空间的 EntityStore。
数据存储位置:
<workspace> 表示工作空间。
Project:通过调用
cms: GetWorkspace获取。LogStore(实体):
<workspace>__entity。LogStore(拓扑):
<workspace>__topo。
实体状态管理
核心字段说明
字段名 | 说明 |
| 操作类型,取值为 |
| 最后观测时间(Unix 时间戳,单位:秒) |
| 实体存活时长(单位:秒) |
| 实体删除时间(Unix 时间戳,单位:秒) |
实体投递方式
云监控 2.0 通过两种方式同步 CloudResource 实体到 EntityStore:
同步方式 | 触发时间 | 说明 |
全量同步 | 每 15 分钟 | 根据用户选择的实体范围同步符合条件的所有实体到 EntityStore |
增量同步 | 实时 | 系统订阅 CloudResource 的实体事件,实时更新实例信息到 EntityStore |
实体更新(Update)
触发条件
满足以下任一条件时触发 EntityStore 实体更新:
CloudResource 增量更新:从 CloudResource 接收到实体的更新事件。
CloudResource 全量同步:每隔 15 分钟,根据用户选择的实体范围同步符合条件的所有未过期实体到 EntityStore。
系统处理
当触发实体更新时,系统执行以下操作:
__method__ = "Update"
__keep_alive_seconds__ = 1800
__last_observed_time__ = <实体投递时间>
<业务字段> = <从 CloudResource 提取的实例属性>实体过期(Expire)
触发条件
CloudResource 增量更新:从 CloudResource 接收到实体的过期事件。
系统处理
当触发实体更新时,系统执行以下操作:
__method__ = "Expire"
__last_observed_time__ = <实体投递时间>
<业务字段> = <从 CloudResource 提取的实例属性>实体删除(Delete)
触发条件
CloudResource 增量更新:从 CloudResource 接收到实体的删除事件
系统处理
当触发实体删除时,系统执行以下操作:
__method__ = "Expire"
__keep_alive_seconds__ = 0
__last_observed_time__ = <CloudResource 原始观测时间>
<业务字段> = <从 CloudResource 提取的实例属性>常见问题
为什么我刚创建的实例在 CloudResource 中查询不到?
实体的生成存在一定延迟:
RMC 增量:通常在秒级到分钟级内完成同步(补充平均时间)。
OpenAPI:取决于拉取周期,一般在 5 分钟左右,最长 10 分钟。
为什么已删除的实例还能查询到?
实体使用"过期"机制而非立即删除。收到删除事件后,__keep_alive_seconds__ 会被设置为 0,实体会在短时间内自动过期并从查询结果中移除。
实体的存活时长如何影响查询?
存活时长决定了实体在未收到更新时的有效期:
如果实体在存活时长内收到新的更新事件,存活时长会重新计算。
如果超过存活时长仍未收到更新,实体会被判定为过期,不再返回。
部分云产品的实例为什么更新不及时?
这可能与数据源类型有关:
RMC 数据源:支持实时增量同步,更新较为及时。
OpenAPI 数据源:依赖定时拉取机制,更新频率受拉取周期限制。
详情请参考实体同步方式。