このトピックでは、CloudMonitor API を使用して Function Compute メトリックをクエリする方法について説明します。関連する API 操作を呼び出し、異なるリクエストパラメーターを使用して、Function Compute のモニタリングデータを取得できます。これらのパラメーターには、Project、StartTime、EndTime、Dimensions、Period、および Metric が含まれます。
API 操作の詳細については、「関数別の操作リスト」をご参照ください。
Project
すべての Function Compute メトリックは、acs_fc プロジェクトでクエリできます。
次のサンプルコードは、SDK for Java を使用してプロジェクトを設定する方法を示しています。
QueryMetricRequest request = new QueryMetricRequest();
request.setProject("acs_fc"); // プロジェクトを acs_fc に設定StartTime and EndTime
CloudMonitor では、時間範囲は (StartTime, EndTime] 形式の StartTime パラメーターと EndTime パラメーターによって定義されます。時間範囲は StartTime を除き、EndTime を含みます。
CloudMonitor はデータを 31 日間保持します。このため、StartTime と EndTime の間の時間範囲は 31 日を超えることはできず、31 日より前のデータはクエリできません。
その他の時間パラメーターの詳細については、「関数別の操作リスト」をご参照ください。
次のサンプルコードは、SDK for Java を使用してプロジェクトを設定する方法を示しています。
request.setStartTime("2024-07-19 08:00:00"); // 開始時間を設定
request.setEndTime("2024-07-19 09:00:00"); // 終了時間を設定Dimensions
Function Compute のモニタリングサービスは、リージョン、サービス、および関数ディメンションの観点から Function Compute メトリックを分割します。各ディメンションは、Dimensions パラメーターの値に異なる形式を使用します。
リージョンメトリックの Dimensions パラメーターは、次の形式です。
{"region": "${お使いのリージョン}"}関数メトリックの Dimensions パラメーターは、次の形式です。
{"region": "${your_region}", "functionName": "${your_functionName}"} // 関数ディメンションを設定
Dimensions パラメーターの値は、1 つ以上のキーと値のペアを含む JSON 文字列です。次のサンプルコードは、SDK for Java を使用してプロジェクトを設定する方法を示しています。
request.setDimensions("{\"region\":\"your_region\"}"); // ディメンションを設定Period
Function Compute メトリックの集計期間の粒度は 60 秒である必要があります。
次のサンプルコードは、SDK for Java を使用してプロジェクトを設定する方法を示しています。
request.setPeriod("60"); // 期間を 60 秒に設定Metric
次のサンプルコードは、SDK for Java を使用してプロジェクトを設定する方法を示しています。
request.setMetric("your_metric"); // メトリックを設定次の表に、Function Compute ドキュメントに記載されているメトリックを示します。
Dimension | Metric |
リージョン ID | RegionTotalInvocations |
RegionServerErrors | |
RegionClientErrors | |
RegionFunctionErrors | |
RegionThrottles | |
RegionResourceThrottles | |
RegionConcurrencyLimit | |
RegionConcurrentCount | |
RegionProvisionedCurrentInstance | |
関数 | 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 |
Example:
次のテキストは、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) {
/*
Alibaba Cloud アカウントの AccessKey ペアを使用して、すべての API 操作にアクセスできます。これらの認証情報を使用して Function Compute で操作を実行することは、リスクの高い操作です。 API 操作の呼び出しや日常の O&M の実行には、RAM ユーザーを使用することをお勧めします。
プロジェクトコードに AccesKey ペア (AccessKey ID と AccessKey シークレット) を保存しないことをお勧めします。そうしないと、AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが侵害される可能性があります。
この例では、認証のために AccessKey ペアが環境変数に保存されています。
サンプルコードを実行する前に、ローカル環境で ALIBABA_CLOUD_ACCESS_KEY_ID および ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数を設定します。
Function Compute のランタイムでは、実行権限を設定した後、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("2023-08-26 16:20:00"); // 開始時間を設定
request.setEndTime("2023-08-26 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()); // リクエスト ID を出力
System.out.println(response.getDatapoints()); // データポイントを出力
// 関数ディメンション dim = new JSONObject();
request.setMetric("FunctionTotalInvocations"); // メトリックを指定します。
dim.put("region", "<your_region>"); // リージョンを設定
dim.put("serviceName", ""); // Function Compute 2.0 で作成された関数の名前: {serviceName}${functionName}。メトリックを取得するには、dim.put("serviceName",{serviceName}) を使用する必要があります。 Function Compute 3.0 で作成された関数: {functionName}。メトリックを取得するには、dim.put("serviceName","") を使用する必要があります。
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()); // リクエスト ID を出力
System.out.println(response.getDatapoints()); // データポイントを出力
} catch (ServerException e) {
e.printStackTrace();
} catch (ClientException e) {
e.printStackTrace();
}
}
}