监控数据

更新时间: 2024-01-29 14:43:48

本文介绍如何通过云监控的API调取函数计算的监控数据。如果您需要调取函数计算的监控数据,您可以通过API接口的相关请求参数调取,例如Project、StartTime、EndTime、Dimensions、Period、Metric。

关于API接口说明,请参见API概览

Project

函数计算监控服务指标项的数据都使用相同的Project名称:acs_fc。

使用Java SDK设置代码示例如下:

QueryMetricRequest request = new QueryMetricRequest();
request.setProject("acs_fc");

StartTime和EndTime

云监控的时间参数取值范围使用左开右闭的形式,即(StartTime, EndTime],处于边界StartTime的数据不会被获取,而处于边界EndTime的数据会被查询到。

说明

云监控数据保留时间为31天,设置的StartTime和EndTime的时间间距不能大于31天,31天前的数据是查询不到的。

关于其他时间参数信息,请参见API概览

使用Java SDK设置代码示例如下:

request.setStartTime("2017-04-26 08:00:00");
request.setEndTime("2017-04-26 09:00:00");        

Dimensions

函数计算监控服务根据函数计算资源结构和使用场景,将监控指标分为地域维度、服务维度和函数维度。不同的维度使用的Dimensions参数不同。

  • 地域维度数据的Dimensions设置如下:

    {"region": "${your_region}"}    
  • 服务维度数据的Dimensions设置如下:

    {"region": "${your_region}", "serviceName": "${your_serviceName}"}            
  • 函数维度数据的Dimensions设置如下:

    {"region": "${your_region}", "serviceName": "${your_serviceName}", "functionName": "${your_functionName}"}
说明

Dimensions是一个JSON字符串,函数计算监控指标的Dimensions只有一对Key-Value。使用Java SDK设置代码示例如下:

request.setDimensions("{\"region\":\"your_region\"}");

Period

函数计算监控指标的聚合粒度均为60s。

使用Java SDK设置代码示例如下:

request.setPeriod("60");

Metric

使用Java SDK设置代码示例如下:

request.setMetric("your_metric");

函数计算监控指标参考手册中详细介绍的各项指标项,对应的Metric名称如下表:

指标维度

Metric

指标项对应名称

地域

RegionTotalInvocations

TotalInvocations

RegionBillableInvocations

BillableInvocations

RegionThrottles

Throttles

RegionClientErrors

ClientErrors

RegionServerErrors

ServerErrors

RegionBillableInvocationsRate

BillableInvocations占比

RegionThrottlesRate

Throttles占比

RegionClientErrorsRate

ClientErrors占比

RegionServerErrorsRate

ServerErrors占比

服务

ServiceTotalInvocations

TotalInvocations

ServiceBillableInvocations

BillableInvocations

ServiceThrottles

Throttles

ServiceClientErrors

ClientErrors

ServiceServerErrors

ServerErrors

ServiceBillableInvocationsRate

BillableInvocations占比

ServiceThrottlesRate

Throttles占比

ServiceClientErrorsRate

ClientErrors占比

ServiceServerErrorsRate

ServerErrors占比

函数

FunctionTotalInvocations

TotalInvocations

FunctionBillableInvocations

BillableInvocations

FunctionThrottles

Throttles

FunctionFunctionErrors

FunctionErrors

FunctionClientErrors

ClientErrors

FunctionServerErrors

ServerErrors

FunctionBillableInvocationsRate

BillableInvocations占比

FunctionThrottlesRate

Throttles占比

FunctionFunctionErrorsRate

FunctionErrors占比

FunctionClientErrorsRate

ClientErrors占比

FunctionServerErrorsRate

ServerErrors占比

FunctionAvgDuration

平均Duration

FunctionMaxMemoryUsage

最大内存使用

使用示例

pom.xml示例如下:

...
    <dependencies>
        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-core</artifactId>
            <version>3.1.0</version>
        </dependency>
        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-cms</artifactId>
            <version>5.0.1</version>
        </dependency>
    </dependencies>
...
            

代码示例如下:

import com.alibaba.fastjson.JSONObject;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.cms.model.v20170301.QueryMetricListRequest;
import com.aliyuncs.cms.model.v20170301.QueryMetricListResponse;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.http.FormatType;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;

public class MonitorService {
    public static void main(String[] args) {
        /*
        阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
        建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
        本示例以将AccessKey和AccessSecretKey保存在环境变量中实现身份验证为例。
        运行本示例前请先在本地环境中设置环境变量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET。
        在FC Runtime运行环境下,配置执行权限后,ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET环境变量会被自动设置。
        */
        String accessKey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
        String accessSecretKey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
        IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKey, accessSecretKey);
        IAcsClient client = new DefaultAcsClient(profile);


        QueryMetricListRequest request = new QueryMetricListRequest();
        request.setProject("acs_fc");
        request.setPeriod("60");
        request.setStartTime("2017-04-26 16:20:00");
        request.setEndTime("2017-04-26 16:30:00");
        request.setAcceptFormat(FormatType.JSON);

        try {
            // Region维度JSONObject dim = new JSONObject();
            request.setMetric("RegionTotalInvocations");  // 选择metric。
            dim.put("region", "<your_region>");  // 如: cn-shanghai
            request.setDimensions(dim.toJSONString());
            QueryMetricListResponse response = client.getAcsResponse(request);
            System.out.println(response.getCode());
            System.out.println(response.getMessage());
            System.out.println(response.getRequestId());
            System.out.println(response.getDatapoints());

            // Service维度dim = new JSONObject();
            request.setMetric("ServiceTotalInvocations");  // 选择metric。
            dim.put("region", "<your_region>");
            dim.put("serviceName", "<your_service_name>");
            request.setDimensions(dim.toJSONString());
            response = client.getAcsResponse(request);
            System.out.println(response.getCode());
            System.out.println(response.getMessage());
            System.out.println(response.getRequestId());
            System.out.println(response.getDatapoints());

            // Function维度dim = new JSONObject();
            request.setMetric("FunctionTotalInvocations");  // 选择metric。
            dim.put("region", "<your_region>");
            dim.put("serviceName", "<your_service_name>");
            dim.put("functionName", "<your_function_name>");
            request.setDimensions(dim.toJSONString());
            response = client.getAcsResponse(request);
            System.out.println(response.getCode());
            System.out.println(response.getMessage());
            System.out.println(response.getRequestId());
            System.out.println(response.getDatapoints());
        } catch (ServerException e) {
            e.printStackTrace();
        } catch (ClientException e) {
            e.printStackTrace();
        }
    }
}
阿里云首页 函数计算(旧版) 相关技术圈