全部产品
云市场

QueryMetric

更新时间:2019-08-27 16:23:02

调用 QueryMetric 接口查询前端监控的相关监控指标。

调试

您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。

调试

描述

QueryMetric 接口可用于查询应用监控和前端监控的相关监控指标。本文以查询前端监控的相关指标为例。

API 名称 Request Response
QueryMetric QueryMetricRequest QueryMetricResponse

请求参数

请求参数包含公共参数和业务参数。

公共参数

公共请求参数参见公共参数

业务参数

阿里云将用户的所有请求参数封装在一个 Request 中,返回一个 Response。

字段名称 字段类型 设置方法 字段含义 是否必选 备注
startTime Long setStartTime 查询数据的起始时间 N/A
endTime Long setEndTime 查询数据的截止时间 N/A
metric String setMetric 指标 N/A
measures List[String] setMesures 指标的测量数据 N/A
dimensions List[String] setDimensionss 维度 N/A
filters List[Filter] setFilters 过滤条件 N/A
intervalInSec Integer setIntervalInSec 数据片的时间间隔 N/A
orderBy String setOrderBy 排序依据 N/A
limit Integer setLimit 返回结果的个数限制 N/A
order String setOrder 排序
  • ASC:升序
  • DESC:降序
securityToken String setSecurityToken STS securityToken 采用 RAM 用户角色模式时需要设置该字段。详情参见借助 RAM 角色实现跨云账号访问资源

Filter 复合字段说明

字段名称 字段类型 设置方法 字段含义 示例值
key String setKey 维度名称 appId
value String setValue 维度值 11

注意:应用监控所有的 Metric 查询中必须在 filters 中添加 pid 条件。

如何获取应用 pid

在控制台左侧导航栏中选择前端监控,然后在前端监控页面单击目标应用名称,进入该应用的总览页面。此时浏览器地址栏中的 URL 即包含应用的 pid,格式为 pid=xxx

由于浏览器进行了编码,除 EDAS 应用之外的其他应用需要对 pid 稍作修改。例如,如果 URL 中包含的 pid

  1. xxx%4074xxx

则需要将 %40 替换为 @,即:

  1. xxx@74xxx

返回参数

返回值为 JSON 串形式,可通过 QueryMetricResponse.getdata() 获取。

字段名称 字段含义 备注
data 数据点 N/A

可查询的前端监控指标

您可以使用 QueryMetric 接口查询前端监控的以下指标。

说明: 已知具体的查询条件时,应将值传入 filters 参数中,用于限定查询结果的范围。如果不知道具体的查询条件,可以将下表中的维度传入 dimensions 参数,从而获得该维度所有可能值的列表。例如,已知一个国家的 ip_country_id,但不知道该国家各个地区的 ip_region_id,则可以将 ip_country_id 传入 filters 参数,并将 ip_region_id 传入 dimensions 参数,即可获得该国家下所有地区的 ip_region_id,您可以进而使用具体的 ip_region_id 进行更精确的查询。

指标 描述 维度 测量数据
webstat.session 会话跟踪 N/A
  • page
  • sid
  • browser
  • load
  • date
  • browser_version
webstat.index 总览
  • ip_country_id
  • ip_region_id
  • detector_browser
  • detector_device
  • detector_os
  • sr(屏幕分辨率)
  • pv
  • uv
webstat.satisfy 满意度
  • page
  • ip_country_id
  • ip_region_id
  • detector_browser
  • detector_device
  • detector_os
  • sr
  • satisfy
webstat.url 访问的 URL
  • page
  • ip_country_id
  • ip_region_id
  • detector_browser
  • detector_device
  • detector_os
  • sr
  • pv
  • uv
webstat.speed 访问速度
  • page
  • ip_country_id
  • ip_region_id
  • detector_browser
  • detector_device
  • detector_os
  • sr
  • avg_fpt
  • avg_ready
  • avg_load
  • avg_dns
  • avg_tcp
  • avg_ssl
  • avg_ttfb
  • avg_trans
  • avg_dom
  • avg_res
  • avg_tti
webstat.stable 错误率排行
  • page
  • ip_country_id
  • ip_region_id
  • detector_browser
  • detector_device
  • detector_os
  • sr
  • rate
  • pv
webstat.errcate 错误聚类排行
  • msg
  • ip_country_id
  • ip_region_id
  • detector_browser
  • detector_device
  • detector_os
  • sr
  • count
webstat.api API 成功率
  • api
  • ip_country_id
  • ip_region_id
  • detector_browser
  • detector_device
  • detector_os
  • sr
  • rate
  • pv
webstat.apimsg API Message 聚类
  • msg
  • ip_country_id
  • ip_region_id
  • detector_browser
  • detector_device
  • detector_os
  • sr
  • count
webstat.apicost API 成功耗时
  • api
  • ip_country_id
  • ip_region_id
  • detector_browser
  • detector_device
  • detector_os
  • sr
  • count
  • avg_time
webstat.apifailtime API 失败耗时
  • api
  • ip_country_id
  • ip_region_id
  • detector_browser
  • detector_device
  • detector_os
  • sr
  • count
  • avg_time
webstat.sum 自定义统计:求和统计
  • key
  • ip_country_id
  • ip_region_id
  • detector_browser
  • detector_device
  • detector_os
  • sr
  • sum_val
  • count
  • uv
webstat.avg 自定义统计:均值统计
  • key
  • ip_country_id
  • ip_region_id
  • detector_browser
  • detector_device
  • detector_os
  • sr
  • avg_val
  • count

示例代码

使用 QueryMetric 接口查询前端监控总览页面的 PV 与 UV 的示例代码如下:

  1. import com.aliyuncs.DefaultAcsClient;
  2. import com.aliyuncs.IAcsClient;
  3. import com.aliyuncs.exceptions.ClientException;
  4. import com.aliyuncs.exceptions.ServerException;
  5. import com.aliyuncs.profile.DefaultProfile;
  6. import com.google.gson.Gson;
  7. import java.util.*;
  8. import com.aliyuncs.arms.model.v20190808.*;
  9. public class ARMSDemo {
  10. public static void main(String[] args) {
  11. DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "<accessKeyId>", "<accessKeySecret>");
  12. IAcsClient client = new DefaultAcsClient(profile);
  13. QueryMetricRequest request = new QueryMetricRequest();
  14. request.setEndTime(1555488869888);
  15. request.setStartTime(1555482869888);
  16. request.setMetric("webstat.index");
  17. List<String> measuresList = new ArrayList<String>();
  18. measuresList.add("pv");
  19. measuresList.add("uv");
  20. request.setMeasuress(measuresList);
  21. List<QueryMetricRequest.Filters> filtersList = new ArrayList<QueryMetricRequest.Filters>();
  22. QueryMetricRequest.Filters filters1 = new QueryMetricRequest.Filters();
  23. filters1.setKey("pid");
  24. filters1.setValue("xxx");
  25. filtersList.add(filters1);
  26. QueryMetricRequest.Filters filters2 = new QueryMetricRequest.Filters();
  27. filters2.setKey("regionId");
  28. filters2.setValue("cn-hangzhou");
  29. filtersList.add(filters2);
  30. request.setFilterss(filtersList);
  31. try {
  32. QueryMetricResponse response = client.getAcsResponse(request);
  33. System.out.println(new Gson().toJson(response));
  34. } catch (ServerException e) {
  35. e.printStackTrace();
  36. } catch (ClientException e) {
  37. System.out.println("ErrCode:" + e.getErrCode());
  38. System.out.println("ErrMsg:" + e.getErrMsg());
  39. System.out.println("RequestId:" + e.getRequestId());
  40. }
  41. }
  42. }
  1. const Core = require('@alicloud/pop-core');
  2. var client = new Core({
  3. accessKeyId: '<accessKeyId>',
  4. accessKeySecret: '<accessKeySecret>',
  5. endpoint: 'http://arms.cn-hangzhou.aliyuncs.com',
  6. apiVersion: '2019-08-08'
  7. });
  8. var params = {
  9. "Measures.1": "pv",
  10. "Measures.2": "uv",
  11. "Filters.1.Key": "pid",
  12. "Filters.1.Value": "xxx",
  13. "Filters.2.Key": "regionId",
  14. "Filters.2.Value": "cn-hangzhou",
  15. "Metric": "webstat.index",
  16. "StartTime": 1555482869888,
  17. "EndTime": 1555488869888
  18. }
  19. var requestOption = {
  20. method: 'POST'
  21. };
  22. client.request('QueryMetric', params, requestOption).then((result) => {
  23. console.log(result);
  24. }, (ex) => {
  25. console.log(ex);
  26. })
  1. package main
  2. import (
  3. "fmt"
  4. "github.com/aliyun/alibaba-cloud-sdk-go/services/arms"
  5. )
  6. func main() {
  7. client, err := arms.NewClientWithAccessKey("cn-hangzhou", "<accessKeyId>", "<accessKeySecret>")
  8. request := arms.CreateQueryMetricRequest()
  9. request.EndTime = "1555488869888"
  10. request.StartTime = "1555482869888"
  11. request.Metric = "webstat.index"
  12. request.Measures = &[]string{"pv", "uv"}
  13. request.Filters = &[]arms.QueryMetricFilters{
  14. {
  15. Key: "pid",
  16. Value: "xxx",
  17. },
  18. {
  19. Key: "regionId",
  20. Value: "cn-hangzhou",
  21. },
  22. }
  23. response, err := client.QueryMetric(request)
  24. if err != nil {
  25. fmt.Print(err.Error())
  26. }
  27. fmt.Printf("response is %#v\n", response)
  28. }
  1. <?php
  2. use AlibabaCloud\Client\AlibabaCloud;
  3. use AlibabaCloud\Client\Exception\ClientException;
  4. use AlibabaCloud\Client\Exception\ServerException;
  5. // Download:https://github.com/aliyun/openapi-sdk-php-client
  6. // Usage:https://github.com/aliyun/openapi-sdk-php-client/blob/master/README-CN.md
  7. AlibabaCloud::accessKeyClient('<accessKeyId>', '<accessKeySecret>')
  8. ->regionId('cn-hangzhou') // replace regionId as you need
  9. ->asGlobalClient();
  10. try {
  11. $result = AlibabaCloud::rpcRequest()
  12. ->product('ARMS')
  13. // ->scheme('https') // https | http
  14. ->version('2019-08-08')
  15. ->action('QueryMetric')
  16. ->method('POST')
  17. ->options([
  18. 'query' => [
  19. 'Measures.1' => 'pv',
  20. 'Measures.2' => 'uv',
  21. 'Filters.1.Key' => 'pid',
  22. 'Filters.1.Value' => 'xxx',
  23. 'Filters.2.Key' => 'regionId',
  24. 'Filters.2.Value' => 'cn-hangzhou',
  25. 'Metric' => 'webstat.index',
  26. 'StartTime' => '1555482869888',
  27. 'EndTime' => '1555488869888',
  28. ],
  29. ])
  30. ->request();
  31. print_r($result->toArray());
  32. } catch (ClientException $e) {
  33. echo $e->getErrorMessage() . PHP_EOL;
  34. } catch (ServerException $e) {
  35. echo $e->getErrorMessage() . PHP_EOL;
  36. }
  1. #!/usr/bin/env python
  2. #coding=utf-8
  3. from aliyunsdkcore.client import AcsClient
  4. from aliyunsdkcore.acs_exception.exceptions import ClientException
  5. from aliyunsdkcore.acs_exception.exceptions import ServerException
  6. from aliyunsdkarms.request.v20190808.QueryMetricRequest import QueryMetricRequest
  7. client = AcsClient('<accessKeyId>', '<accessKeySecret>', 'cn-hangzhou')
  8. request = QueryMetricRequest()
  9. request.set_accept_format('json')
  10. request.set_EndTime(1555488869888)
  11. request.set_StartTime(1555482869888)
  12. request.set_Metric("webstat.index")
  13. request.set_Measuress(["pv","uv"])
  14. request.set_Filterss([
  15. {
  16. "Key": "pid",
  17. "Value": "xxx"
  18. },
  19. {
  20. "Key": "regionId",
  21. "Value": "cn-hangzhou"
  22. }
  23. ])
  24. response = client.do_action_with_exception(request)
  25. # python2: print(response)
  26. print(str(response, encoding='utf-8'))
  1. using System;
  2. using System.Collections.Generic;
  3. using Aliyun.Acs.Core;
  4. using Aliyun.Acs.Core.Exceptions;
  5. using Aliyun.Acs.Core.Profile;
  6. using Aliyun.Acs.ARMS.Model.V20190808;
  7. namespace ARMSDemo
  8. {
  9. class Program
  10. {
  11. static void Main(string[] args)
  12. {
  13. IClientProfile profile = DefaultProfile.GetProfile("cn-hangzhou", "<accessKeyId>", "<accessKeySecret>");
  14. DefaultAcsClient client = new DefaultAcsClient(profile);
  15. var request = new QueryMetricRequest();
  16. request.EndTime = 1555488869888;
  17. request.StartTime = 1555482869888;
  18. request.Metric = "webstat.index";
  19. var measuresList = new List<String>();
  20. measuresList.Add("pv");
  21. measuresList.Add("uv");
  22. request.Measuress = measuresList;
  23. var filtersList = new List<QueryMetricRequest.Filters>();
  24. var filters1 = new QueryMetricRequest.Filters();
  25. filters1.Key = "pid";
  26. filters1.Value = "xxx";
  27. filtersList.Add(filters1);
  28. var filters2 = new QueryMetricRequest.Filters();
  29. filters2.Key = "regionId";
  30. filters2.Value = "cn-hangzhou";
  31. filtersList.Add(filters2);
  32. request.Filterss = filtersList;
  33. try {
  34. var response = client.GetAcsResponse(request);
  35. Console.WriteLine(System.Text.Encoding.Default.GetString(response.HttpResponse.Content));
  36. }
  37. catch (ServerException e)
  38. {
  39. Console.WriteLine(e);
  40. }
  41. catch (ClientException e)
  42. {
  43. Console.WriteLine(e);
  44. }
  45. }
  46. }
  47. }
  1. # gem install aliyunsdkcore
  2. require 'aliyunsdkcore'
  3. client = RPCClient.new(
  4. access_key_id: '<accessKeyId>',
  5. access_key_secret: '<accessKeySecret>',
  6. endpoint: 'https://arms.aliyuncs.com',
  7. api_version: '2019-08-08'
  8. )
  9. response = client.request(
  10. action: 'QueryMetric',
  11. params: {
  12. "Measures.1": "pv",
  13. "Measures.2": "uv",
  14. "Filters.1.Key": "pid",
  15. "Filters.1.Value": "xxx",
  16. "Filters.2.Key": "regionId",
  17. "Filters.2.Value": "cn-hangzhou",
  18. "Metric": "webstat.index",
  19. "StartTime": 1555482869888,
  20. "EndTime": 1555488869888
  21. },
  22. opts: {
  23. method: 'POST'
  24. }
  25. )
  26. print JSON.parse(response.body)