本文介绍导出工具 Exporter 的问题排查方案。
WARN: estimate request latency bigger than 'DataFreshIntervalSeconds'
Exporter 在每次间隔时间内,无法完成指标数据的拉取。如果数据无法拉取完成,则在某些配置情况下,可能会出现断点。完整日志如下:
WARN: cost {} to finish collect all metric data for this interval with DataFreshIntervalSeconds={} total request count={}. you can adjust the configuration of exporter to eliminate this log.
出现该错误表示采集时间过长,有可能会影响prometheus拉不到数据,解决方案请参见 指标断点。 Error: Could not find operation ListExporterMetrics for version 2018-01-01
Exporter功能处于公测阶段,暂时免费使用。如需使用该功能,请先开通按量计费,然后联系对应销售或售后人员进行开白。
Error: Request was rejected because the request speed of this openAPI is beyond the current flow control limit
- 建议导入如下的 Exporter 自监控 grafana 模板(仅适用于 Exporter 1.0.18 及以上版本)。
注意
以下模板目前仅兼容 Grafana 7.0.0 及以上版本。
指标断点,可以结合 Exporter 自监控 Grafana 面板排查。
-
- 采集超时排查:观测如下面板指标,这个指标代表每轮次(即数据的刷新周期,对应 DataFreshIntervalSeconds 配置自动,默认 60s)采集的总耗时。
-
- 如果该指标持续的大于配置的 DataFreshIntervalSeconds,默认 60s,将无法在一个轮次完成所有指标数据采集,最终会导致 prometheus 侧显示丢点,建议方案:
- 适当的调大 LimitQPSGetMetricData 或者 DataConcurrency 参数,如果您不知道如何配置该参数,在 1.0.18-rc1 及以上版本支持自适应限流,可以删除该字段配置,使用默认配置。
- 偶尔的抖动比如网络延迟,也有可能会造成偶尔的采集超时,错过了 prometheus 的采集周期。建议调大 prometheus 的采集频率,比如到 1/5 的 DataFreshIntervalSeconds。
- targets: ["localhost:9898"]
- 确认访问 exporter 的<ip>:<port>/metrics接口是否正常。
- 确认 prometheus 中的 Status 页面 Exporter 的实例是否正常,也可查询 prometheus 的 up 指标判断。
-
- 通过/meta/metric接口确认是否存在该指标。
- 通过/meta/object接口,确认是否存在相关实例,没有实例的话则不会有指标。
- 使用/meta/metric接口,获取指标的 Namespace 和 SubNamespace。
- 查看/meta/object接口的响应,查看Namespace/SubNamespace是否有对应数据。
- 例如以下响应,代表仅有 Namespace 为VCM_RDS_MySQL,SubNamespace 为deploy_monitor的指标存在监控实例。
"VCM_RDS_MySQL/deploy_monitor": [
"Value": "mysql-68781f23efcc"
"Value": "mysql-68781f23efcc"
默认允许的指标延迟为 120s,一般不会出现问题。如果发现异常,可以将配置文件中的 DelaySeconds 适当调大。
- 校验 Exporter 导出数据的值和云监控页面是否一致时,需要对齐聚合粒度。
- Exporter 的聚合粒度,可以通过 QueryPeroid 参数进行配置,默认为 30s。
- 时间范围选择 1 小时,那么聚合粒度默认为 30s。
- 时间范围选择 1 天,那么聚合粒度默认为 60s。
- 因此,默认情况下 Exporter 的数据和云监控查询 1 小时的时间范围一般是一致的,和 1 天时间范围的数据有可能不一致。
- prometheus/grafana 查询中的 step/interval 参数也可能会影响最终的查询结果不一致,建议将其调整为与 exporter 的 DataFreshIntervalSeconds 参数保持一致。
-
-
限流的报错可以通过 Exporter 的日志,或者通过导入上述 Exporter 的 Grafana 看板的自监控指标来发现。
LimitQPSGetMetricData 接口限流
云监控接口 Quota 默认为 20QPS,Exporter 请求接口的限流由 QPS 参数LimitQPSGetMetricData及并发参数DataConcurrency控制,1.0.18-rc1 及以上版本默认会根据请求的实例数量及指标数量自适应动态调整。
- 如果您的账号下仅部署一个 exporter 实例,建议直接将LimitQPSGetMetricData设置为账号的上限(默认账号上限为 20)。
- 如果您的账号下部署有多个 exporter 实例,建议删除LimitQPSGetMetricData和DataConcurrency配置参数,使用默认自适应限流方式。
- 1.0.18-rc0 及以后版本,可以通过配置指标白名单采集方式,过滤掉不关注的指标,来降低 Exporter 请求云服务的 QPS,从而可以减少 Quota 的占用。详情请参见 云产品指标查询。
通过配置来解决限流的问题的方式:
仅采集产品的部分指标,可通过配置 OnlyIncludeMetrics 字段,如下示例:
- MemoryUsedUtilization
配置SubNamespace白名单采集(1.0.18及以上版本)
仅采集产品的部分 SubNamespace 指标,通过 OnlyIncludeSubNamespaces 字段配置,示例:
OnlyIncludeSubNamespaces:
这个方式仅对您在某个地域产品实例数量比较大的场景(比如 >10,甚至到 >1000的场景有比较明显效果)。比如当使用默认 BatchInstanceCount=10 时,如果有 1000 个实例,那么每个指标会发送 1000/10=100 次请求,如果 BatchInstanceCount=50,那么只需要发送 1000/50=20 次请求,会降低 Quota 的占用,但是极端情况下可能会请求延迟上涨。
如果您能接受降低数据的精度,录入由 1 分钟一个点,改为 2 分钟 1 个点,可以通过如下配置DataFreshIntervalSeconds参数。
DataFreshIntervalSeconds: 120
需要同时降低 LimitQPSGetMetricData 或者删除 LimitQPSGetMetricData 参数配置使用自适应配置(1.0.18-rc1 及以上版本支持)。
ListMonitorObjectsV2接口限流
该接口用于获取云产品的实例列表,接口的默认 Quota 为 10,如果有多个 Exporter 实例,建议根据每个 Exporter 的产品数量比例来分摊这 10 个 QPS,并通过LimitQPSMonitorObjectList参数设置。LimitQPSMonitorObjectList偶尔的被限流,一般不影响指标的数据拉取,只会影响元数据更新的时效性(新购实例监控数据延迟)。