调用 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 为 xxx%4074xxx
,则需要将 %40
替换为 @
,即: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 |
|
webstat.index | 总览 |
|
|
webstat.satisfy | 满意度 |
|
|
webstat.url | 访问的 URL |
|
|
webstat.speed | 访问速度 |
|
|
webstat.stable | 错误率排行 |
|
|
webstat.errcate | 错误聚类排行 |
|
|
webstat.api | API 成功率 |
|
|
webstat.apimsg | API Message 聚类 |
|
|
webstat.apicost | API 成功耗时 |
|
|
webstat.apifailtime | API 失败耗时 |
|
|
webstat.sum | 自定义统计:求和统计 |
|
|
webstat.avg | 自定义统计:均值统计 |
|
|
示例代码
使用 QueryMetric 接口查询前端监控总览页面的 PV 与 UV 的示例代码如下:
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.profile.DefaultProfile;
import com.google.gson.Gson;
import java.util.*;
import com.aliyuncs.arms.model.v20190808.*;
public class ARMSDemo {
public static void main(String[] args) {
DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "<accessKeyId>", "<accessKeySecret>");
IAcsClient client = new DefaultAcsClient(profile);
QueryMetricRequest request = new QueryMetricRequest();
request.setEndTime(1555488869888);
request.setStartTime(1555482869888);
request.setMetric("webstat.index");
List<String> measuresList = new ArrayList<String>();
measuresList.add("pv");
measuresList.add("uv");
request.setMeasuress(measuresList);
List<QueryMetricRequest.Filters> filtersList = new ArrayList<QueryMetricRequest.Filters>();
QueryMetricRequest.Filters filters1 = new QueryMetricRequest.Filters();
filters1.setKey("pid");
filters1.setValue("xxx");
filtersList.add(filters1);
QueryMetricRequest.Filters filters2 = new QueryMetricRequest.Filters();
filters2.setKey("regionId");
filters2.setValue("cn-hangzhou");
filtersList.add(filters2);
request.setFilterss(filtersList);
try {
QueryMetricResponse response = client.getAcsResponse(request);
System.out.println(new Gson().toJson(response));
} catch (ServerException e) {
e.printStackTrace();
} catch (ClientException e) {
System.out.println("ErrCode:" + e.getErrCode());
System.out.println("ErrMsg:" + e.getErrMsg());
System.out.println("RequestId:" + e.getRequestId());
}
}
}
const Core = require('@alicloud/pop-core');
var client = new Core({
accessKeyId: '<accessKeyId>',
accessKeySecret: '<accessKeySecret>',
endpoint: 'http://arms.cn-hangzhou.aliyuncs.com',
apiVersion: '2019-08-08'
});
var params = {
"Measures.1": "pv",
"Measures.2": "uv",
"Filters.1.Key": "pid",
"Filters.1.Value": "xxx",
"Filters.2.Key": "regionId",
"Filters.2.Value": "cn-hangzhou",
"Metric": "webstat.index",
"StartTime": 1555482869888,
"EndTime": 1555488869888
}
var requestOption = {
method: 'POST'
};
client.request('QueryMetric', params, requestOption).then((result) => {
console.log(result);
}, (ex) => {
console.log(ex);
})
package main
import (
"fmt"
"github.com/aliyun/alibaba-cloud-sdk-go/services/arms"
)
func main() {
client, err := arms.NewClientWithAccessKey("cn-hangzhou", "<accessKeyId>", "<accessKeySecret>")
request := arms.CreateQueryMetricRequest()
request.EndTime = "1555488869888"
request.StartTime = "1555482869888"
request.Metric = "webstat.index"
request.Measures = &[]string{"pv", "uv"}
request.Filters = &[]arms.QueryMetricFilters{
{
Key: "pid",
Value: "xxx",
},
{
Key: "regionId",
Value: "cn-hangzhou",
},
}
response, err := client.QueryMetric(request)
if err != nil {
fmt.Print(err.Error())
}
fmt.Printf("response is %#v\n", response)
}
<?php
use AlibabaCloud\Client\AlibabaCloud;
use AlibabaCloud\Client\Exception\ClientException;
use AlibabaCloud\Client\Exception\ServerException;
// Download:https://github.com/aliyun/openapi-sdk-php-client
// Usage:https://github.com/aliyun/openapi-sdk-php-client/blob/master/README-CN.md
AlibabaCloud::accessKeyClient('<accessKeyId>', '<accessKeySecret>')
->regionId('cn-hangzhou') // replace regionId as you need
->asGlobalClient();
try {
$result = AlibabaCloud::rpcRequest()
->product('ARMS')
// ->scheme('https') // https | http
->version('2019-08-08')
->action('QueryMetric')
->method('POST')
->options([
'query' => [
'Measures.1' => 'pv',
'Measures.2' => 'uv',
'Filters.1.Key' => 'pid',
'Filters.1.Value' => 'xxx',
'Filters.2.Key' => 'regionId',
'Filters.2.Value' => 'cn-hangzhou',
'Metric' => 'webstat.index',
'StartTime' => '1555482869888',
'EndTime' => '1555488869888',
],
])
->request();
print_r($result->toArray());
} catch (ClientException $e) {
echo $e->getErrorMessage() . PHP_EOL;
} catch (ServerException $e) {
echo $e->getErrorMessage() . PHP_EOL;
}
#!/usr/bin/env python
#coding=utf-8
from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.acs_exception.exceptions import ClientException
from aliyunsdkcore.acs_exception.exceptions import ServerException
from aliyunsdkarms.request.v20190808.QueryMetricRequest import QueryMetricRequest
client = AcsClient('<accessKeyId>', '<accessKeySecret>', 'cn-hangzhou')
request = QueryMetricRequest()
request.set_accept_format('json')
request.set_EndTime(1555488869888)
request.set_StartTime(1555482869888)
request.set_Metric("webstat.index")
request.set_Measuress(["pv","uv"])
request.set_Filterss([
{
"Key": "pid",
"Value": "xxx"
},
{
"Key": "regionId",
"Value": "cn-hangzhou"
}
])
response = client.do_action_with_exception(request)
# python2: print(response)
print(str(response, encoding='utf-8'))
using System;
using System.Collections.Generic;
using Aliyun.Acs.Core;
using Aliyun.Acs.Core.Exceptions;
using Aliyun.Acs.Core.Profile;
using Aliyun.Acs.ARMS.Model.V20190808;
namespace ARMSDemo
{
class Program
{
static void Main(string[] args)
{
IClientProfile profile = DefaultProfile.GetProfile("cn-hangzhou", "<accessKeyId>", "<accessKeySecret>");
DefaultAcsClient client = new DefaultAcsClient(profile);
var request = new QueryMetricRequest();
request.EndTime = 1555488869888;
request.StartTime = 1555482869888;
request.Metric = "webstat.index";
var measuresList = new List<String>();
measuresList.Add("pv");
measuresList.Add("uv");
request.Measuress = measuresList;
var filtersList = new List<QueryMetricRequest.Filters>();
var filters1 = new QueryMetricRequest.Filters();
filters1.Key = "pid";
filters1.Value = "xxx";
filtersList.Add(filters1);
var filters2 = new QueryMetricRequest.Filters();
filters2.Key = "regionId";
filters2.Value = "cn-hangzhou";
filtersList.Add(filters2);
request.Filterss = filtersList;
try {
var response = client.GetAcsResponse(request);
Console.WriteLine(System.Text.Encoding.Default.GetString(response.HttpResponse.Content));
}
catch (ServerException e)
{
Console.WriteLine(e);
}
catch (ClientException e)
{
Console.WriteLine(e);
}
}
}
}
# gem install aliyunsdkcore
require 'aliyunsdkcore'
client = RPCClient.new(
access_key_id: '<accessKeyId>',
access_key_secret: '<accessKeySecret>',
endpoint: 'https://arms.aliyuncs.com',
api_version: '2019-08-08'
)
response = client.request(
action: 'QueryMetric',
params: {
"Measures.1": "pv",
"Measures.2": "uv",
"Filters.1.Key": "pid",
"Filters.1.Value": "xxx",
"Filters.2.Key": "regionId",
"Filters.2.Value": "cn-hangzhou",
"Metric": "webstat.index",
"StartTime": 1555482869888,
"EndTime": 1555488869888
},
opts: {
method: 'POST'
}
)
print JSON.parse(response.body)
原创文章,作者:网友投稿,如若转载,请注明出处:https://www.cloudads.cn/archives/33583.html