如何检查Google Cloud Vision API中的配额限制?

时间:2018-03-28 20:38:44

标签: google-cloud-vision

是否有API可以查看您为Google Cloud Vision API进行此结算周期的通话次数? 我想将此信息添加到用户界面,以便用户知道他们何时会提出要收费的查询。

1 个答案:

答案 0 :(得分:2)

最简单的方法是使用控制台上的API page。这将显示请求的总数。考虑到您可以编辑URL以匹配所需的天数。例如,由于今天是4月9日,并且UI上没有9天按钮,我将URL参数编辑为&duration=P9D。结果是:

enter image description here

这也可以使用Stackdriver Monitoring以编程方式完成,但并不简单。 serviceruntime指标收集Google API的资源使用情况。 如果您导航到SD监控中的Metrics Explorer并开始在文本框中输入serviceruntime,则可以选择api/request_count指标类型:

enter image description here

然后,在filter选项中,您可以选择包含service=vision.googleapis.com的Vision API指标。请注意,您还可以通过其他参数(例如请求方法或响应代码)进行筛选和聚合。 这将显示对Vision API的请求数(在我的情况下为4):

enter image description here

但是,这不适合您的使用案例,因为这是一个DELTA指标,而不是CUMULATIVE指标(Metric Kinds)。您需要将所有请求相加以获取总数。 由于我不熟悉custom metrics,我的想法是调查基础API call并使用bash脚本汇总时间序列中的所有数据点。

首先,我们需要项目ID和访问令牌:

TOKEN=$(gcloud auth application-default print-access-token)
PROJECT=$(gcloud config get-value project 2>\dev\null)

此外,我们还需要提供TimeInterval格式的初始和最终时间戳。我们对最新的统计信息感兴趣,因此结束时间将是当前时间(credit)。 在初始阶段,我们只需解析当前年份和月份,因为日期和时间将是已知的:

NOW=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
AUX=-01T00:00:00Z
START_MONTH=$(echo $NOW | cut -c1-7)$AUX

考虑到您可能需要在实际重新填充配额时进行调整。 然后,您可以继续调用SD Monitoring API(修改除Vision之外的其他选项或API的过滤器):

curl "https://monitoring.googleapis.com/v3/projects/$PROJECT/timeSeries?filter=metric.type%3D%22serviceruntime.googleapis.com%2Fapi%2Frequest_count%22%20AND%20resource.labels.service%3D%22vision.googleapis.com%22&interval.endTime=$NOW&interval.startTime=$START_MONTH" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json" \
  --compressed > result.txt

您可以更改其他服务的指标的过滤器属性。将结果保存到中间文件中不是必需的,但有助于将其可视化。响应将包含timeSeries对象,请求计数在每个数据点的值字段中:

{
  "timeSeries": [
    {

      ...

      },
      "metricKind": "DELTA",
      "valueType": "INT64",
      "points": [
        {
          "interval": {
            "startTime": "2018-04-08T11:20:48.224Z",
            "endTime": "2018-04-08T11:21:48.224Z"
          },
          "value": {
            "int64Value": "1"
          }
        },
        {
          "interval": {
            "startTime": "2018-04-08T11:18:18.224Z",
            "endTime": "2018-04-08T11:19:18.224Z"
          },
          "value": {
            "int64Value": "2"
          }
        },
        {
          "interval": {
            "startTime": "2018-04-08T11:18:08.224Z",
            "endTime": "2018-04-08T11:19:08.224Z"
          },
          "value": {
            "int64Value": "1"
          }
        }
      ]
    }
  ]
}

然后,您可以使用jq或在我的情况下使用bash脚本(credit)来解析结果以添加这些值:

cat result.txt | grep int64Value | cut -d '"' -f4 | awk '{s+=$1} END {printf "%.0f\n", s}'

根据我案例中的累计请求数

,这将输出4,如预期的那样