实体生命周期

更新时间:
复制为 MD 格式

本文用于介绍云产品实体生命周期,包含CloudResourceEntityStore的关系与实体管理。

实体生成

CloudResource 是云监控 2.0 中用于存储云资源元数据的核心组件。当您开通云监控 2.0 后,系统会在您创建的第一个工作空间初始化云产品实体所需的资源,负责持续探测账号下各云产品的实例数据。

CloudResource 基础信息参考:基本概念

数据存储位置:

<region_id> 表示 CloudResource 所在区域。
<account_id> 表示您的账号 ID。
  • Projectcloud-resource-<region_id>-<account_id>

  • LogStore(实体)cloud-resource____<account_id>__entity

  • LogStore(拓扑)cloud-resource____<account_id>__topo

实体状态管理

核心字段说明

字段名

说明

__method__

操作类型,取值为 Update(更新)或 Expire(过期)

__last_observed_time__

最后观测时间(Unix 时间戳,单位:秒)

__keep_alive_seconds__

实体存活时长(单位:秒)

__delete_at__

实体删除时间(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)

触发条件

满足以下任一条件时触发实体更新:

  1. RMC 全量同步:每日( 05:00 后)全量对账时发现的资源。

  2. RMC 增量事件:从 RMC 接收到资源变更事件,且 resourceChangeType 字段值包含 ResourceUpdateResourceCreate

    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:1768285361729000
  3. OpenAPI 拉取:定时调用 API 获取到云产品的全部实例数据,默认每 5 分钟调度一次。

系统处理

当触发实体更新时,系统执行以下操作:

__method__              = "Update"
__keep_alive_seconds__  = <根据数据源计算的存活时长>
__last_observed_time__  = <最后观测时间>
<业务字段>              = <从数据源提取的实例属性>

实体删除(Delete)

触发条件

从 RMC 的 LogStore 接收到资源变更事件,且 resourceChangeType 字段值包含 deletedel(不区分大小写)。

下面是增量事件的删除事件示例:

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

实体状态管理

核心字段说明

字段名

说明

__method__

操作类型,取值为 Update(更新)或 Expire(过期)

__last_observed_time__

最后观测时间(Unix 时间戳,单位:秒)

__keep_alive_seconds__

实体存活时长(单位:秒)

__delete_at__

实体删除时间(Unix 时间戳,单位:秒)

实体投递方式

云监控 2.0 通过两种方式同步 CloudResource 实体到 EntityStore:

同步方式

触发时间

说明

全量同步

每 15 分钟

根据用户选择的实体范围同步符合条件的所有实体到 EntityStore

增量同步

实时

系统订阅 CloudResource 的实体事件,实时更新实例信息到 EntityStore

实体更新(Update)

触发条件

满足以下任一条件时触发 EntityStore 实体更新:

  1. CloudResource 增量更新:从 CloudResource 接收到实体的更新事件。

  2. 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 数据源:依赖定时拉取机制,更新频率受拉取周期限制。

详情请参考实体同步方式