Topik ini menjelaskan cara meminta data pemantauan Function Compute menggunakan API CloudMonitor. Anda dapat memanggil operasi API dan mengonfigurasi parameter permintaan seperti Proyek, StartTime, EndTime, Dimensions, Period, dan Metric untuk mendapatkan data pemantauan Function Compute.
Untuk informasi lebih lanjut tentang operasi API, lihat Daftar Operasi Berdasarkan Fungsi.
Proyek
Semua metrik Function Compute tersedia untuk diperiksa di bawah proyek acs_fc.
Contoh kode berikut menunjukkan implementasi menggunakan Java SDK:
QueryMetricRequest request = new QueryMetricRequest();
request.setProject("acs_fc");StartTime dan EndTime
Di CloudMonitor, rentang waktu ditentukan oleh parameter StartTime dan EndTime dalam format (StartTime, EndTime]. Rentang waktu bersifat eksklusif terhadap StartTime dan inklusif terhadap EndTime.
CloudMonitor menyimpan data selama 31 hari. Oleh karena itu, rentang waktu antara StartTime dan EndTime tidak boleh melebihi 31 hari, dan data yang lebih lama dari 31 hari tidak dapat diperiksa.
Untuk informasi lebih lanjut tentang parameter waktu lainnya, lihat Daftar Operasi Berdasarkan Fungsi.
Contoh kode berikut menunjukkan implementasi menggunakan Java SDK:
request.setStartTime("2024-07-19 08:00:00");
request.setEndTime("2024-08-19 08:00:00"); Dimensions
Metrik pemantauan Function Compute dikategorikan ke dalam dimensi wilayah, layanan, dan fungsi berdasarkan struktur sumber daya dan skenario penggunaan Function Compute. Anda dapat menentukan dimensi menggunakan parameter Dimensions.
Potongan kode berikut menunjukkan format Dimensions dalam dimensi wilayah:
{"region": "${your_region}"}Potongan kode berikut menunjukkan format Dimensions dalam dimensi layanan:
{"region": "${your_region}", "serviceName": "${your_serviceName}"}Potongan kode berikut menunjukkan format Dimensions dalam dimensi fungsi:
{"region": "${your_region}", "serviceName": "${your_serviceName}", "functionName": "${your_functionName}"}
Nilai Dimensi adalah string JSON. Satu atau lebih pasangan kunci-nilai terkandung dalam Dimensi untuk metrik pemantauan yang berbeda. Contoh kode berikut memberikan contoh untuk Java SDK:
request.setDimensions("{\"region\":\"your_region\"}");Period
Granularitas periode agregasi untuk metrik Function Compute adalah 60 detik.
Contoh kode berikut menunjukkan implementasi menggunakan Java SDK:
request.setPeriod("60");Metric
Contoh kode berikut menunjukkan implementasi menggunakan Java SDK:
request.setMetric("your_metric");Tabel berikut mencantumkan metrik yang dijelaskan dalam dokumentasi Function Compute.
Dimensi | Metric |
Wilayah | RegionTotalInvocations |
RegionServerErrors | |
RegionClientErrors | |
RegionFunctionErrors | |
RegionThrottles | |
RegionResourceThrottles | |
RegionConcurrencyLimit | |
RegionConcurrentCount | |
RegionProvisionedCurrentInstance | |
Layanan | ServiceTotalInvocations |
ServiceServerErrors | |
ServiceClientErrors | |
ServiceFunctionErrors | |
ServiceThrottles | |
ServiceResourceThrottles | |
ServiceProvisionedCurrentInstance | |
Fungsi | 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 |
Contoh:
Kode contoh berikut menunjukkan file 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>
...
Kode contoh:
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) {
/*
Pasangan AccessKey dari akun Alibaba Cloud memiliki izin untuk semua operasi API. Menggunakan kredensial ini untuk melakukan operasi di Function Compute adalah operasi berisiko tinggi. Kami merekomendasikan Anda menggunakan pengguna RAM untuk memanggil operasi API atau melakukan pemeliharaan rutin.
Kami merekomendasikan agar Anda tidak menyimpan pasangan AccessKey (ID AccessKey dan Rahasia AccessKey) dalam kode proyek Anda. Jika tidak, pasangan AccessKey mungkin bocor dan keamanan semua sumber daya di akun Anda dapat terganggu.
Dalam contoh ini, pasangan AccessKey disimpan dalam variabel lingkungan untuk otentikasi.
Konfigurasikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET di lingkungan lokal Anda sebelum menjalankan kode contoh.
Di runtime Function Compute, variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET dikonfigurasi secara otomatis setelah Anda mengonfigurasi izin eksekusi.
*/
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 {
// Dimensi wilayah. JSONObject dim = new JSONObject();
request.setMetric("RegionTotalInvocations"); // Tentukan metrik.
dim.put("region", "<your_region>"); // Contoh: 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());
// Dimensi layanan. dim = new JSONObject();
request.setMetric("ServiceTotalInvocations"); // Tentukan metrik.
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());
// Dimensi fungsi. dim = new JSONObject();
request.setMetric("FunctionTotalInvocations"); // Tentukan metrik.
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();
}
}
}