すべてのプロダクト
Search
ドキュメントセンター

Function Compute:モニタリングデータ

最終更新日:Sep 29, 2024

このトピックでは、CloudMonitor APIを使用してFunction Computeのモニタリングデータをクエリする方法について説明します。 API操作を呼び出し、Project、StartTime、EndTime、ディメンション、期間、メトリックなどの関連するリクエストパラメーターを設定して、Function Computeのモニタリングデータを取得できます。

API操作の詳細については、「関数別の操作の一覧」をご参照ください。

プロジェクト

すべてのFunction Computeメトリクスは、acs_fcプロジェクトでクエリに使用できます。

次のサンプルコードは、Java SDKの例を示しています。

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

StartTime と EndTime

CloudMonitorでは、(StartTime, EndTime) フォームのStartTimeパラメーターとEndTimeパラメーターによって時間範囲が定義されます。 時間範囲は、StartTimeに関して排他的であり、EndTimeに関して包括的である。

説明

CloudMonitorは31日間データを保持します。 このため、StartTimeとEndTimeの間の時間範囲は31日を超えることはできず、31日前より前のデータを照会することはできません。

その他の時間パラメーターの詳細については、「関数別の操作のリスト」をご参照ください。

次のサンプルコードは、Java SDKの例を示しています。

request.setStartTime("2024-07-19 08:00:00");
request.setEndTime("2027-07-19 09:00:00");        

ディメンション

Function Computeのモニタリングメトリックは、function Computeのリソース構造と使用シナリオに基づいて、リージョン、サービス、および関数のディメンションに分類されます。 ディメンションパラメーターを使用してディメンションを指定できます。

  • 次のコードスニペットは、リージョンディメンションのディメンションの形式を示しています。

    {"region": "${your_region}"}    
  • 次のコードスニペットは、サービスディメンションのディメンションの形式を示しています。

    {"region": "${your_region}", "serviceName": "${your_serviceName}"}            
  • 次のコードスニペットは、関数ディメンションのディメンションの形式を示しています。

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

Dimensionsの値はJSON文字列です。 Function Computeモニタリングメトリックのディメンションに含まれるキーと値のペアは1つだけです。 次のサンプルコードは、Java SDKの例を示しています。

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

期間

Function Computeメトリクスの集計期間の粒度は60秒です。

次のサンプルコードは、Java SDKの例を示しています。

request.setPeriod("60");

メトリック

次のサンプルコードは、Java SDKの例を示しています。

request.setMetric("your_metric");

次の表に、Function Computeのドキュメントで説明されているメトリックを示します。

寸法

メトリック

リージョン

RegionTotalInvocations

RegionServerErrors

RegionClientErrors

RegionFunctionErrors

RegionThrottles

RegionResourceThrottles

RegionConcurrencyLimit

RegionConcurrentCount

RegionProvisionedCurrentInstance

サービス

ServiceTotalInvocations

ServiceServerErrors

ServiceClientErrors

ServiceFunctionErrors

ServiceThrottles

ServiceResourceThrottles

ServiceProvisionedCurrentInstance

機能

FunctionTotalInvocations

FunctionProvisionInvocations

FunctionHTTPStatus2xx

FunctionHTTPStatus3xx

FunctionHTTPStatus4xx

FunctionHTTPStatus5xx

FunctionServerErrors

FunctionClientErrors

FunctionFunctionErrors

FunctionConcurrencyThrottles

FunctionResourceThrottles

FunctionAvgDuration

FunctionP90Duration

FunctionP99Duration

FunctionMaxDuration

FunctionLatencyAvg

FunctionMemoryLimitMB

FunctionMaxMemoryUsage

FunctionOndemandInstanceQuota

FunctionOndemandActiveInstance

FunctionProvisionedCurrentInstance

FunctionEnqueueCount

FunctionDequeueCount

FunctionAsyncMessageLatencyAvg

FunctionAsyncMessageLatencyMax

FunctionAsyncEventExpiredDropped

FunctionDestinationErrors

FunctionDestinationSucceed

FunctionAsyncMessagesBacklog

FunctionAsyncMessagesInProcess

FunctionMaxConcurrentRequests

FunctionAvgConcurrentRequests

FunctionvCPUQuotaCores

FunctionMaxvCPUCores

FunctionAvgvCPUCores

FunctionMaxvCPUUtilization

FunctionAvgvCPUUtilization

FunctionRXBytesPerSec

FunctionTXBytesPerSec

FunctionMemoryLimitMB

FunctionMaxMemoryUsageMB

FunctionAvgMemoryUsageMB

FunctionMaxMemoryUtilization

FunctionAvgMemoryUtilization

FunctionGPUMemoryLimitMB

FunctionGPUMaxMemoryUsage

FunctionGPUMemoryUsagePercent

FunctionGPUSMPercent

FunctionGPUEncoderPercent

FunctionGPUDecoderPercent

例:

次のサンプルコードは、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) {
        /*
        The AccessKey pair of an Alibaba Cloud account has permissions on all API operations. Using these credentials to perform operations in Function Compute is a high-risk operation. We recommend that you use a RAM user to call API operations or perform routine O&M. 
        We recommend that you do not save AccesKey pairs (AccessKey IDs and AccessKey secrets) in your project code. Otherwise, the AccessKey pairs may be leaked and the security of all resources in your account may be compromised. 
        In this example, the AccessKey pair is saved in environment variables for authentication. 
        Configure the ALIBABA_CLOUD_ACCESS_KEY_ID and ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variables in your on-premises environment before you run sample code. 
        In Function Compute runtimes, the ALIBABA_CLOUD_ACCESS_KEY_ID and ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variables are automatically configured after you configure the execution permissions. 
        */
        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("2024-07-19 16:20:00");
        request.setEndTime("2024-07-19 16:30:00");
        request.setAcceptFormat(FormatType.JSON);

        try {
            // Region dimension. JSONObject dim = new JSONObject();
            request.setMetric("RegionTotalInvocations");  // Specify the metric. 
            dim.put("region", "<your_region>");  //Example: 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 dimension. dim = new JSONObject();
            request.setMetric("ServiceTotalInvocations");  // Specify the 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 dimension. dim = new JSONObject();
            request.setMetric("FunctionTotalInvocations");  // Specify the 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();
        }
    }
}