本文介绍导出工具Exporter的问题排查方案。
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拉不到数据,解决方案请参见指标断点。
Exporter功能处于公测阶段,暂时免费使用。如需使用该功能,请先开通按量计费,然后联系对应销售或售后人员进行开白。
配置的QPS超过了限制,解决方案请参见LimitQPSGetMetricData接口限流。
建议导入如下的Exporter自监控grafana模板(仅适用于Exporter 1.0.18及以上版本)。
注意
以下模板目前仅兼容Grafana 7.0.0及以上版本。
调用/metrics
接口可以获取到监控指标。
指标名称 | 指标tag | 指标类型 | 指标含义 |
---|---|---|---|
exporter_api_request_total |
| counter | exporter请求服务端接口的累计次数 |
exporter_api_request_latency_ms_bucket | histogram | exporter请求服务端接口延迟分布,单位ms | |
exporter_strategy_last_pull_request_count | 无 | gauge | exporter上一轮次发起请求GetMetricData接口的次数 |
exporter_strategy_last_pull_latency_ms | 无 | gauge | exporter上一轮次全部请求GetMetricData接口的总耗时 |
exporter_strategy_discard_request_counter | 无 | counter | 因数实例/指标数过多,导致请求积压被丢弃的请求总次数 |
exporter_meta_object_count |
| gauge | 产品实例数量 |
exporter_meta_metric_count | gauge | 产品的指标数量 |
指标断点,可以结合Exporter自监控Grafana面板排查。
scrape_configs: - job_name: "exporter" scrape_interval: 5s static_configs: - targets: ["localhost:9898"]
<ip>:<port>/metrics
接口是否正常。/meta/metric
接口确认是否存在该指标。/meta/object
接口,确认是否存在相关实例,没有实例的话则不会有指标。
/meta/metric
接口,获取指标的Namespace和SubNamespace。/meta/object
接口的响应,查看Namespace/SubNamespace
是否有对应数据。VCM_RDS_MySQL
,SubNamespace为deploy_monitor
的指标存在监控实例。{ "VCM_RDS_MySQL/deploy_monitor": [ { "Dimensions": [ { "Name": "ResourceID", "Value": "mysql-68781f23efcc" } ], "Instances": [ { "Name": "ResourceID", "Value": "mysql-68781f23efcc" } ] } ] }
默认允许的指标延迟为120s,一般不会出现问题。如果发现异常,可以将配置文件中的DelaySeconds适当调大。
限流的报错可以通过Exporter的日志,或者通过导入上述Exporter的Grafana看板的自监控指标来发现。
云监控接口Quota默认为20QPS,Exporter请求接口的限流由QPS参数LimitQPSGetMetricData
及并发参数DataConcurrency
控制,1.0.18-rc1及以上版本默认会根据请求的实例数量及指标数量自适应动态调整。
LimitQPSGetMetricData
设置为账号的上限(默认账号上限为20)。LimitQPSGetMetricData
和 DataConcurrency
配置参数,使用默认自适应限流方式。通过配置来解决限流的问题的方式:
仅采集产品的部分指标,可通过配置OnlyIncludeMetrics字段,如下示例:
Region: cn-beijing Credentials: AccessKey: '{ak}' SecretKey: '{sk}' Products: - Namespace: VCM_ECS # 需要采集的产品 OnlyIncludeMetrics: # 仅采集的指标列表 Instance: # 指标的SubNamespace - CpuTotal # 具体的指标名称 - MemoryUsedUtilization # 具体的指标名称 - GpuUsedUtilization # 具体的指标名称 GPU: # 指标的SubNamespace - GpuUsedUtilization # 具体的指标名称 - GpuMemoryUsedSpace # 具体的指标名称
仅采集产品的部分SubNamespace指标,通过OnlyIncludeSubNamespaces字段配置,示例:
Region: cn-beijing Credentials: AccessKey: '{ak}' SecretKey: '{sk}' Products: - Namespace: VCM_ECS # 需要采集的产品 OnlyIncludeSubNamespaces: # 仅采集的指标列表 - Instance # 指标的SubNamespace
这个方式仅对您在某个地域产品实例数量比较大的场景(比如>10,甚至到>1000的场景有比较明显效果)。比如当使用默认BatchInstanceCount=10时,如果有1000个实例,那么每个指标会发送1000/10=100次请求,如果BatchInstanceCount=50,那么只需要发送1000/50=20次请求,会降低Quota的占用,但是极端情况下可能会请求延迟上涨。
Region: cn-beijing Credentials: AccessKey: '{ak}' SecretKey: '{sk}' BatchInstanceCount: 50 # 默认为10,最大50 Products: - Namespace: VCM_ECS # 需要采集的产品
如果您能接受降低数据的精度,录入由1分钟一个点,改为2分钟1个点,可以通过如下配置DataFreshIntervalSeconds
参数。
Region: cn-beijing Credentials: AccessKey: '{ak}' SecretKey: '{sk}' DataFreshIntervalSeconds: 120 # 数据刷新周期,默认60s Products: - Namespace: VCM_ECS # 需要采集的产品
需要同时降低LimitQPSGetMetricData或者删除LimitQPSGetMetricData参数配置使用自适应配置(1.0.18-rc1及以上版本支持)。
该接口用于获取云产品的实例列表,接口的默认Quota为10,如果有多个Exporter实例,建议根据每个Exporter的产品数量比例来分摊这10个QPS,并通过LimitQPSMonitorObjectList
参数设置。LimitQPSMonitorObjectList
偶尔的被限流,一般不影响指标的数据拉取,只会影响元数据更新的时效性(新购实例监控数据延迟)。