【问题标题】:How to get API usage data from Azure API Management?如何从 Azure API 管理获取 API 使用数据?
【发布时间】:2018-01-24 11:47:21
【问题描述】:

我们正在尝试收集一些关于客户如何使用我们的 API 的报告。我们使用 Azure API 管理,我可以看到在 API 管理门户中存在这样的数据,我可以在 Admin>Activity 部分看到我需要了解的门户。比如单个用户对特定 API 进行了多少次调用,我可以按日期对其进行过滤。

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

【问题讨论】:

标签: api azure azure-api-management


【解决方案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、他对产品的subscriptionId等,这可能对你有好处。

{
    "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

【讨论】:

    【解决方案2】:

    对于那些正在寻找用户汇总使用情况(可能是为了获利)的人 - 还有一个“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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-07
      • 2014-10-12
      • 2020-03-08
      • 2017-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多