CloudMonitor API を使用して、Function Compute のメトリックをプログラムでクエリします。すべてのリクエストには、以下の 6 つのパラメーターが必要です:Project、StartTime、EndTime、Dimensions、Period、および Metric。API の完全なリファレンスについては、「機能別オペレーション一覧」をご参照ください。
前提条件
開始する前に、以下の条件を満たしていることを確認してください。
Function Compute にアクセスできる Alibaba Cloud アカウント
プロジェクトに CloudMonitor Java SDK の依存関係が追加されていること(「依存関係」を参照)
AccessKey 認証情報を環境変数として保存済みであること(
ALIBABA_CLOUD_ACCESS_KEY_IDおよびALIBABA_CLOUD_ACCESS_KEY_SECRET)必要な権限を持つ RAM ユーザーが設定済みであること(API 呼び出しでは root アカウントの認証情報を使用しないでください)
パラメーター
Project
すべての Function Compute メトリックは acs_fc プロジェクト — CloudMonitor 上における Function Compute の名前空間 — に属します。
request.setProject("acs_fc");StartTime および EndTime
時間範囲は半開区間で指定します:(StartTime, EndTime]。StartTime は排他的(含まれず)、EndTime は包括的(含まれる)です。
CloudMonitor では、31 日分のデータが保持されます。StartTime と EndTime の間隔は 31 日を超えてはならず、31 日より古いデータはクエリできません。
request.setStartTime("2024-07-19 16:20:00");
request.setEndTime("2024-07-19 16:30:00");その他の時間関連パラメーターの詳細については、「機能別オペレーション一覧」をご参照ください。
Dimensions
Function Compute のメトリックは、リソース階層(リージョン、サービス、関数)に対応する 3 つのディメンションで構成されています。クエリ対象となるデータの範囲に応じて、適切なディメンションを選択してください。
| ディメンション | 使用するケース | 形式 |
|---|---|---|
| リージョン | 特定のリージョン内のすべてのリソースを集計したデータをクエリする場合 | {"region": "${your_region}"} |
| サービス | 特定のサービスに絞り込んでクエリする場合 | {"region": "${your_region}", "serviceName": "${your_serviceName}"} |
| 関数 | 特定の関数のメトリックのみを抽出する場合 | {"region": "${your_region}", "serviceName": "${your_serviceName}", "functionName": "${your_functionName}"} |
Dimensions の値は JSON 文字列です。例:
request.setDimensions("{\"region\":\"your_region\"}");Period
Function Compute メトリックの集計期間は固定で 60 秒です。
request.setPeriod("60");Metric
メトリック名を文字列として指定します。例:
request.setMetric("FunctionTotalInvocations");メトリックのディメンション | メトリック |
リージョン | 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 | |
FunctionDestinationSucceeded | |
FunctionAsyncMessagesBacklogV2 | |
FunctionAsyncMessagesInProcess | |
FunctionMaxConcurrentRequests | |
FunctionAvgConcurrentRequests | |
FunctionvCPUQuotaCores | |
FunctionMaxvCPUCores | |
FunctionAvgvCPUCores | |
FunctionMaxvCPUUtilization | |
FunctionAvgvCPUUtilization | |
FunctionRXBytesPerSec | |
FunctionTXBytesPerSec | |
FunctionMemoryLimitMB | |
FunctionMaxMemoryUsageMB | |
FunctionAvgMemoryUsageMB | |
FunctionMaxMemoryUtilization | |
FunctionAvgMemoryUtilization | |
FunctionGPUMemoryLimitMB | |
FunctionGPUMaxMemoryUsage | |
FunctionGPUMemoryUsagePercent | |
FunctionGPUSMPercent | |
FunctionGPUEncoderPercent | |
FunctionGPUDecoderPercent |
利用可能なメトリック
以下の一覧表には、ディメンション別にグループ化された 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 |
FunctionMaxConcurrentRequests |
FunctionAvgConcurrentRequests |
FunctionOndemandInstanceQuota |
FunctionOndemandActiveInstance |
FunctionProvisionedCurrentInstance |
実行時間およびレイテンシ
| メトリック |
|---|
FunctionAvgDuration |
FunctionP90Duration |
FunctionP99Duration |
FunctionMaxDuration |
FunctionLatencyAvg |
メモリ
| メトリック |
|---|
FunctionMemoryLimitMB |
FunctionMaxMemoryUsage |
FunctionMaxMemoryUsageMB |
FunctionAvgMemoryUsageMB |
FunctionMaxMemoryUtilization |
FunctionAvgMemoryUtilization |
vCPU
| メトリック |
|---|
FunctionvCPUQuotaCores |
FunctionMaxvCPUCores |
FunctionAvgvCPUCores |
FunctionMaxvCPUUtilization |
FunctionAvgvCPUUtilization |
ネットワーク
| メトリック |
|---|
FunctionRXBytesPerSec |
FunctionTXBytesPerSec |
GPU
| メトリック |
|---|
FunctionGPUMemoryLimitMB |
FunctionGPUMaxMemoryUsage |
FunctionGPUMemoryUsagePercent |
FunctionGPUSMPercent |
FunctionGPUEncoderPercent |
FunctionGPUDecoderPercent |
非同期呼び出し
| メトリック |
|---|
FunctionEnqueueCount |
FunctionDequeueCount |
FunctionAsyncMessagesBacklog |
FunctionAsyncMessagesInProcess |
FunctionAsyncMessageLatencyAvg |
FunctionAsyncMessageLatencyMax |
FunctionAsyncEventExpiredDropped |
FunctionDestinationErrors |
FunctionDestinationSucceed |
サンプル
以下の完全なサンプルでは、Java SDK を使用して、3 つのディメンション(リージョン、サービス、関数)すべてにわたるメトリックをクエリします。
依存関係
以下の依存関係を 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 ID および AccessKey Secret をソースコード内にハードコードせず、
// 環境変数として保存してください。
// Function Compute のランタイムでは、実行権限を設定後にこれらの環境変数が自動的に設定されます。
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 {
JSONObject dim = new JSONObject();
// リージョンディメンション:リージョン全体の集計メトリック。
request.setMetric("RegionTotalInvocations");
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());
// サービスディメンション:特定のサービスにスコープを限定したメトリック。
dim = new JSONObject();
request.setMetric("ServiceTotalInvocations");
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());
// 関数ディメンション:特定の関数のメトリック。
dim = new JSONObject();
request.setMetric("FunctionTotalInvocations");
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();
}
}
}以下のプレースホルダーを実際の値に置き換えてください。
| プレースホルダー | 説明 | 例 |
|---|---|---|
<your_region> | Function Compute リソースがデプロイされているリージョン ID | cn-shanghai |
<your_service_name> | Function Compute サービスの名前 | my-service |
<your_function_name> | 関数の名前 | my-function |
次のステップ
機能別オペレーション一覧 — CloudMonitor API の完全なリファレンス