Topik ini menjelaskan cara mengambil data pemantauan untuk Function Compute menggunakan Operasi API Cloud Monitor. Untuk mengambil data tersebut, Anda harus menentukan parameter seperti Project, StartTime, EndTime, Dimensions, Period, dan Metric.
Untuk informasi selengkapnya tentang Operasi API, lihat Ikhtisar API.
Project
Semua metrik pemantauan untuk Function Compute menggunakan nama project yang sama: acs_fc.
Kode berikut menunjukkan contoh cara mengatur project menggunakan kit pengembangan perangkat lunak (SDK) Java:
QueryMetricRequest request = new QueryMetricRequest();
request.setProject("acs_fc");StartTime dan EndTime
Rentang waktu untuk parameter waktu Cloud Monitor merupakan interval terbuka di kiri dan tertutup di kanan, yang direpresentasikan sebagai (StartTime, EndTime]. Artinya, data pada batas StartTime tidak disertakan, sedangkan data pada batas EndTime akan disertakan.
Periode retensi data Cloud Monitor adalah 31 hari. Interval waktu antara StartTime dan EndTime tidak boleh melebihi 31 hari. Data yang lebih lama dari 31 hari tidak dapat diambil.
Untuk informasi selengkapnya tentang parameter waktu lainnya, lihat Ikhtisar API.
Kode berikut menunjukkan contoh konfigurasi SDK Java:
request.setStartTime("2024-07-19 08:00:00");
request.setEndTime("2024-07-19 09:00:00"); Dimensions
Berdasarkan struktur sumber daya dan skenario Function Compute, metrik pemantauan dikategorikan ke dalam dimensi region, layanan, dan fungsi. Parameter `Dimensions` dikonfigurasi secara berbeda untuk setiap dimensi.
Atur parameter `Dimensions` untuk data tingkat region sebagai berikut:
{"region": "${your_region}"}Atur parameter `Dimensions` untuk data tingkat fungsi sebagai berikut:
{"region": "${your_region}", "functionName": "${your_functionName}"}
Dimensions adalah string JSON yang berisi satu atau beberapa pasangan kunci-nilai untuk merepresentasikan dimensi pemantauan yang berbeda. Kode berikut menunjukkan contoh cara mengatur dimensions menggunakan SDK Java:
request.setDimensions("{\"region\":\"your_region\"}");Period
Granularitas agregasi untuk semua metrik pemantauan Function Compute adalah 60 detik.
Contoh kode berikut menunjukkan cara mengonfigurasi SDK Java:
request.setPeriod("60");Metric
Contoh kode berikut menunjukkan cara menggunakan SDK Java:
request.setMetric("your_metric");Tabel berikut menjelaskan nama `Metric` yang sesuai dengan metrik pemantauan untuk Function Compute.
Dimensi metrik | Metrik |
Region | RegionTotalInvocations |
RegionServerErrors | |
RegionClientErrors | |
RegionFunctionErrors | |
RegionThrottles | |
RegionResourceThrottles | |
RegionConcurrencyLimit | |
RegionConcurrentCount | |
RegionProvisionedCurrentInstance | |
Function | 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 |
Contoh penggunaan
Kode berikut menunjukkan contoh 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 berikut menunjukkan contoh implementasi:
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 untuk Akun Alibaba Cloud memberikan akses penuh ke semua Operasi API. Gunakan pengguna Resource Access Management (RAM) untuk akses API atau O&M harian.
Jangan menyimpan ID AccessKey dan Rahasia AccessKey Anda dalam kode proyek. Hal ini dapat menyebabkan kebocoran AccessKey dan membahayakan keamanan semua resource di akun Anda.
Contoh ini menunjukkan cara menggunakan Variabel lingkungan untuk menyimpan AccessKey dan Rahasia AccessKey Anda untuk verifikasi identitas.
Sebelum menjalankan contoh ini, atur Variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET di lingkungan lokal Anda.
Di lingkungan runtime Function Compute, Variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET diatur 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("2023-08-26 16:20:00");
request.setEndTime("2023-08-26 16:30:00");
request.setAcceptFormat(FormatType.JSON);
try {
// Dimensi Region
JSONObject dim = new JSONObject();
request.setMetric("RegionTotalInvocations"); // Pilih metrik.
dim.put("region", "<your_region>"); // Misalnya, 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 Function
dim = new JSONObject();
request.setMetric("FunctionTotalInvocations"); // Pilih metrik.
dim.put("region", "<your_region>");
// Untuk fungsi yang dibuat di FC 2.0, namanya adalah {serviceName}${functionName}. Untuk mendapatkan metrik, atur dim.put("serviceName",{serviceName}). Untuk fungsi yang dibuat di FC 3.0, namanya adalah {functionName}. Untuk mendapatkan metrik, atur dim.put("serviceName","").
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());
System.out.println(response.getDatapoints());
} catch (ServerException e) {
e.printStackTrace();
} catch (ClientException e) {
e.printStackTrace();
}
}
}