如何从Azure API Management获取API使用数据?

时间:2018-01-24 11:47:21

标签: api azure azure-api-management

我们正在尝试收集一些有关客户如何使用API​​的报告。我们使用Azure API管理,我可以看到在API Management门户中存在这样的数据,我可以看到我需要知道在Admin> Activity部分访问门户网站。就像个别用户为特定API调用的次数一样,我可以按日期过滤它。

问题:如何从系统中获取此数据。优先使用某些API继续导出。但是,甚至手动?

2 个答案:

答案 0 :(得分:1)

获取请求级别分析的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,OperationId,UserId,他对产品等的订阅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 monitor integration

答案 1 :(得分:0)

对于那些希望按用户汇总使用量(可能是用于获利)的用户来说,也有一个“ 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类型进行过滤,也可以执行此操作-List by User