Cette rubrique explique comment interroger les métriques Function Compute à l'aide de l'API CloudMonitor. Appelez les opérations d'API appropriées et utilisez différents paramètres de requête pour obtenir les données de surveillance de Function Compute. Ces paramètres incluent Project, StartTime, EndTime, Dimensions, Period et Metric.
Pour plus d'informations sur les opérations d'API, consultez Présentation de l'API.
Project
Toutes les métriques Function Compute sont disponibles sous le projet acs_fc.
L'exemple de code suivant montre comment configurer le projet à l'aide du SDK pour Java :
QueryMetricRequest request = new QueryMetricRequest();
request.setProject("acs_fc");
StartTime et EndTime
Dans CloudMonitor, une plage de temps est définie par les paramètres StartTime et EndTime au format (StartTime, EndTime]. La plage exclut StartTime et inclut EndTime.
CloudMonitor conserve les données pendant 31 jours. Par conséquent, la plage entre StartTime et EndTime ne peut pas dépasser 31 jours, et il est impossible d'interroger des données antérieures à cette période.
Pour plus d'informations sur les autres paramètres temporels, consultez Présentation de l'API.
L'exemple de code suivant montre comment configurer le projet à l'aide du SDK pour Java :
request.setStartTime("2024-07-19 08:00:00");
request.setEndTime("2024-07-19 09:00:00");
Dimensions
Le service de surveillance de Function Compute répartit les métriques selon les dimensions région, service et fonction. Chaque dimension utilise un format différent pour la valeur du paramètre Dimensions.
-
Le paramètre Dimensions pour les métriques régionales est au format suivant :
{"region": "${your_region}"} -
Le paramètre Dimensions pour les métriques de fonction est au format suivant :
{"region": "${your_region}", "functionName": "${your_functionName}"}
La valeur du paramètre Dimensions est une chaîne JSON contenant une ou plusieurs paires clé-valeur. L'exemple de code suivant montre comment configurer le projet à l'aide du SDK pour Java :
request.setDimensions("{\"region\":\"your_region\"}");
Period
La granularité de la période d'agrégation pour les métriques Function Compute doit être de 60 secondes.
L'exemple de code suivant montre comment configurer le projet à l'aide du SDK pour Java :
request.setPeriod("60");
Metric
L'exemple de code suivant montre comment configurer le projet à l'aide du SDK pour Java :
request.setMetric("your_metric");
Le tableau suivant répertorie les métriques décrites dans la documentation Function Compute.
Dimension | Metric |
ID de la région. | RegionTotalInvocations |
RegionServerErrors | |
RegionClientErrors | |
RegionFunctionErrors | |
RegionThrottles | |
RegionResourceThrottles | |
RegionConcurrencyLimit | |
RegionConcurrentCount | |
RegionProvisionedCurrentInstance | |
Fonction | 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 |
Exemple :
Le texte suivant présente un exemple de fichier 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>
...
Exemple de code :
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 can be used to access 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 to the environment variables for authentication.
Configure the ALIBABA_CLOUD_ACCESS_KEY_ID and ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variables in your local environment before you run sample code.
In runtimes of Function Compute, 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("2023-08-26 16:20:00");
request.setEndTime("2023-08-26 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());
// Function dimension. dim = new JSONObject();
request.setMetric("FunctionTotalInvocations"); // Specify the metric.
dim.put("region", "<your_region>");
dim.put("serviceName", ""); //The name of a function created in Function Compute 2.0: {serviceName}${functionName}. To obtain metrics, you need to use dim.put("serviceName",{serviceName}). A function created in Function Compute 3.0: {functionName}. To obtain metrics, you need to use 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();
}
}
}