跳转至

观测云集成注意事项

有关本系列脚本包,请在使用前阅读以下注意事项及说明

1. 固定的云厂商标签

使用本系列脚本包向观测云上报的数据,默认会根据所对应的云厂商添加cloud_provider标签,用于区分云厂商。

因此,在账号配置的extra_tags中,请勿再添加 Key 为cloud_provider的标签。

具体的云平台及对应的固定标签如下:

所属云平台 标签值
阿里云 "aliyun"
AWS "AWS"
腾讯云 "tencentcloud"
华为云 "huaweicloud"

2. 云监控数据的联动补充

一般来说,各云厂商的云监控产品只会提供监控对象的 ID 及其监控指标信息,如:ECS 的实例 ID 和 CPU 使用率。而不会同时返回如实例名称等其他信息。

所以,当仅开启云监控类采集器时,虽然可以达到监控数据的查看、告警等目的,但仅依靠 ID 区分不同对象会很不直观。

因此,云监控类采集器会与对应自定义对象类采集器同时开启时,系统会自动根据 ID 等数据进行联动,为云监控类数据附带更多有关实例的信息。

由于需要先获知自定义对象信息才能在云监控类采集器中进行联动,因此一般建议将云监控的采集器放置在列表末尾,如:

Python
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# 创建采集器
collectors = [
    aliyun_ecs.DataCollector(account, common_aliyun_configs),
    aliyun_rds.DataCollector(account, common_aliyun_configs),
    aliyun_slb.DataCollector(account, common_aliyun_configs),
    aliyun_oss.DataCollector(account, common_aliyun_configs),

    # 云监控类采集器一般放在最末尾
    aliyun_monitor.DataCollector(account, monitor_collector_configs),
]

具体的联动效果,请参考具体的采集器文档

3. 不同采集器的采集频率限制

即使在「自动触发配置」中配置了较短的启动间隔(如 1 分钟),各个采集器内部都根据自身业务特性设置了内部最小采集间隔

启动间隔与采集间隔不同,每次「启动」未必会实际进行「采集」

对于大部分上报自定义对象的采集器来说,内部最小采集间隔为 15 分钟。如果在 15 分钟内连续启动,程序会自动跳过实际的采集处理,避免大量 API 调用。

对于云监控类的采集器来说,内部最小采集间隔为 1 分钟,但也请根据实际需要设置合理的启动间隔(如 5 分钟),避免大量 API 调用。

4. 数据采集的延迟

本系列脚本在进行采集的过程中,多少都会有数据上的延迟。

对于自定义对象采集器来说,由于存在内部最小采集间隔,因此当发生新购、释放实例,修改实例名时,最久需要等到下次实际采集执行后才会反应到观测云中。

对于云监控类的采集器来说,当涉及到「云监控数据的联动补充」时,由于用于补充的标签来自于自定义对象采集器的采集处理,因此也会收到上文中自定义对象采集器的内部最小采集间隔限制。

5. 云监控类数据的准确性

对于云监控类采集器来说,由于实际都是通过云厂商的 API 来获取聚合后的数据,而非真实的原始数据。

因此本系列采集器采集到的云监控类数据实际只可能是「二手数据」,可能与云厂商的控制台看到的数据会有所出入。

6. 可能产生的巨量 API 调用及数据

某些采集器如果配置为获取全量数据,会产生巨量的 API 查询,极易触发云平台限流,甚至 AK 被封。

因此,在编写采集器配置时,应当在了解具体产品 API 调用规则,以及在观测云产生数据量的基础上进行充分的考量。

如果由此产生任何经济损失,本脚本作者及相关方概不负责

7. 同时采集多个产品时的耗时

在单个函数中配置多个采集器时,由于需要大量请求云厂商的 API,每次执行的耗时可能较长。

以阿里云为例,如下的采集方案:

采集器 配置
云监控 ECS、RDS、SLB、OSS 所有指标
ECS、RDS、SLB、OSS 仅限杭州地域

单次运行耗时约为 1 到 2 分钟。

因此,一般来说,单个函数中同时采集多个产品的,都需要额外为函数指定更长的超时时间timeout(单位秒)如:

Python
1
2
3
4
# 由于采集数据较多,此处需要为函数指定更大的超时时间(单位秒)
@DFF.API('执行云资产同步', timeout=300)
def run():
    # 具体代码略

参数 timeout 最长可指定为 3600 秒(即 1 小时),一般建议设置为所需耗时的 1.5 倍左右。过长的 timeout 可能会导致执行队列无意义的拥堵