You need to enable JavaScript to run this app.
导航
Exporter异常排查方案
最近更新时间:2024.07.19 10:50:50首次发布时间:2024.02.29 15:55:40

本文介绍导出工具Exporter的问题排查方案。

WARN: estimate request latency bigger than 'DataFreshIntervalSeconds'

Exporter根据配置每次间隔Config.DataFreshIntervalSeconds的时间内,无法完成指标数据的拉取。如果数据无法拉取完成,则在某些配置情况下,可能会出现断点。完整日志如下:

WARN: estimate request latency bigger than 'DataFreshIntervalSeconds', the data sequence could be broken: total request count: {}, total latency: {}, but config is: {}, you can adjust the configuration of exporter to eliminate this log. 

这和多个配置项有关:

可能的原因

建议

配置的实例数量

配置ProjectNames限定拉取实例的数量

配置的指标数量

  • 取消无用指标的拉取
  • 取消无用SubNamespace
  • 取消无用Namespace

配置的拉取窗口

延长拉取间隔,以满足日志中的预估时间。

可用DataConcurrency大小

提高DataConcurrency

说明

极端场景下,因为业务需求不想修改配置参数,您可以调整日志级别为error,忽略此条日志提醒。

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

配置的QPS超过了限制,请降低QPS限制Config.Limiter.LimitQPSGetMetricData

异常排查方案

查看配置文件

Exporter会对配置做一定的检查和矫正,进程启动时会打印原始配置和矫正后的配置。如果出现异常,可以检查下矫正后的配置文件。

debug日志

  1. 查看errorinfo日志。
  2. 启动参数-log-level设置为debug,开启debug日志。

自监控指标

  1. 将启动参数-enable-self-metrics设置为true(默认即为true),开启自监控指标。

  2. 调用/metrics接口可以获取到监控指标:

    指标名称

    指标tag

    指标类型

    指标含义

    exporter_api_request_total

    • action:请求服务端的接口。其中,查询指标数据的接口是GetMetricData。
    • http_code:接口最终返回状态码。
    • error_code:服务端返回的业务错误码。其中。限流错误码是AccountFlowLimitExceeded。
    • retry_count:请求重试次数。

    counter

    exporter请求服务端接口的累计次数

    exporter_api_request_latency_ms_bucket
    exporter_api_request_latency_ms_count
    exporter_api_request_latency_ms_sum

    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

    • namespace
    • sub_namespace

    gauge

    产品实例数量

    exporter_meta_metric_count

    gauge

    产品的指标数量

check元信息状态

  1. 调用/meta/metric查看当前指标列表。
  2. 调用/meta/object查看当前的监控对象列表。

指标存在延迟

导出的指标量过大,可以考虑缩小导出的指标范围。

  1. 减少Namespaces,导出更少的云产品指标。
  2. 使用Metrics,仅导出需要的指标。

指标缺失

  1. 确认云监控页面上是否有此指标。
  2. 通过日志和debug日志确认问题。
  3. 如果是触发了限流,那么建议减少指标量。详情请参见指标存在延迟
  4. 通过/meta/metric接口确认是否存在该指标,如果不存在,可能是通过Namespaces、SubNamespaces等字段过滤掉了部分指标。
  5. 通过/meta/object接口,确认是否存在相关实例,没有实例的话则不会有指标。
    • 通过云监控文档或/meta/metric接口,获取当前指标的Namespace和SubNamespace。
    • 查看/meta/object接口的响应,查看namespace/subNamespace是否有对应数据。
      例如以下响应,代表仅有namespace为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导出数据的值和云监控页面是否一致时,需要对齐聚合粒度。

  1. Exporter的聚合粒度,可以通过DataFreshIntervalSeconds参数进行配置,默认为60s。
  2. 云监控页面的聚合粒度,和选择的时间范围有关。
    • 时间范围选择1小时,那么聚合粒度默认为30s。
    • 时间范围选择1天,那么聚合粒度默认为60s。

所以,默认情况下Exporter的数据和云监控查询1天的时间范围情况下是一致的,和一小时时间范围的数据不一致是正常的。

限流报错

云监控接口Quota为20qps,Exporter请求接口的QPS由参数LimitQPSGetMetricData控制,默认值为5。

  • 如果偶尔触发限流报错,那么可以忽略,不会有较大影响。
  • 如果是经常触发限流报错,可能是因为部署了两个及以上的Exporter实例,每个Exporter实例使用5qps,导致超Quota。
    解决方案如下:
    1. 关掉多余Exporter实例。
    2. 如果需要多region采集,那么保证每个region仅一个实例。
    3. 调小LimitQPSGetMetricData
      例如部署了三个Exporter实例,那么LimitQPSGetMetricData需要最大为3;如果还是会超,那么可以适当再调小参数。