如何从 Azure API 管理获取 API 使用情况数据



我们正在尝试收集一些关于客户如何使用我们的API的报告。我们使用 Azure API 管理,我可以看到在 API 管理门户中存在此类数据,我可以在"管理>活动"部分看到我需要了解的门户。就像个人用户对特定 API 进行了多少次调用,我可以按日期过滤它。

问:如何从系统中获取这些数据。最好使用一些 API 来继续导出。但是,即使是手动的?

获取请求级分析的 API 是获取https://management.azure.com/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.ApiManagement/service/apimService1/reports/byRequest?$filter=timestamp ge datetime'2017-06-01T00:00:00' and timestamp le datetime'2017-06-04T00:00:00'&api-version=2017-03-01

响应包括 ApiId、操作 ID、用户 ID、他对产品的订阅 ID 等,这可能对您有益。

{
    "value": [
     {
      "apiId": "/apis/5931a75ae4bbd512a88c680b",
      "operationId": "/apis/5931a75ae4bbd512a88c680b/operations/-",
      "productId": "/products/-",
      "userId": "/users/1",
      "method": "GET",
      "url": "https://apimService1.azure-api.net/echo/resource?param1=sample",
      "ipAddress": "207.xx.155.xx",
      "responseCode": 404,
      "responseSize": 405,
      "timestamp": "2017-06-03T00:17:00.1649134Z",
      "cache": "none",
      "apiTime": 221.1544,
      "serviceTime": 0,
        "apiRegion": "East Asia",
      "subscriptionId": "/subscriptions/5600b59475ff190048070002",
        "requestId": "63e7119c-26aa-433c-96d7-f6f3267ff52f",
      "requestSize": 0
      }]
  }

看看这个Reports_ByRequest

此外,请检查 Azure 监视器集成

对于那些正在寻找用户总使用情况(也许是为了货币化(的人 - 还有一个"byUser"端点。请求的结构如下:

https://{api-service-name}.management.azure-api.net/subscriptions/{subscription}/resourceGroups/{resource-group}/providers/Microsoft.ApiManagement/service/{api-service-name}/reports/byUser?$filter=timestamp ge datetime'2019-12-01T00:00:00' and timestamp le datetime'2019-12-04T00:00:00'&api-version=2017-03-01

文档说要向"https://management.azure-api.net/[...]"发出请求,但我必须像上面的请求一样在资源名称前面加上前缀。

而回应:

{
  "value": [
    {
      "name": "Administrator",
      "userId": "/users/1",
      "callCountSuccess": 13,
      "callCountBlocked": 1,
      "callCountFailed": 0,
      "callCountOther": 0,
      "callCountTotal": 14,
      "bandwidth": 11019,
      "cacheHitCount": 0,
      "cacheMissCount": 0,
      "apiTimeAvg": 1015.7607923076923,
      "apiTimeMin": 330.3206,
      "apiTimeMax": 1819.2173,
      "serviceTimeAvg": 957.094776923077,
      "serviceTimeMin": 215.24,
      "serviceTimeMax": 1697.3612
    },
    {
      "name": "Samir Solanki",
      "userId": "/users/56eaec62baf08b06e46d27fd",
      "callCountSuccess": 0,
      "callCountBlocked": 0,
      "callCountFailed": 0,
      "callCountOther": 0,
      "callCountTotal": 0,
      "bandwidth": 0,
      "cacheHitCount": 0,
      "cacheMissCount": 0,
      "apiTimeAvg": 0,
      "apiTimeMin": 0,
      "apiTimeMax": 0,
      "serviceTimeAvg": 0,
      "serviceTimeMin": 0,
      "serviceTimeMax": 0
    },
    {
      "name": "Anonymous",
      "userId": "/users/54c800b332965a0035030000",
      "callCountSuccess": 0,
      "callCountBlocked": 0,
      "callCountFailed": 0,
      "callCountOther": 0,
      "callCountTotal": 0,
      "bandwidth": 0,
      "cacheHitCount": 0,
      "cacheMissCount": 0,
      "apiTimeAvg": 0,
      "apiTimeMin": 0,
      "apiTimeMax": 0,
      "serviceTimeAvg": 0,
      "serviceTimeMin": 0,
      "serviceTimeMax": 0
    }
  ],
  "count": 3,
  "nextLink": ""
}

如果需要按请求或 API 类型进行筛选,也可以这样做 - 按用户列出

最新更新