Este tópico descreve como consultar métricas do Function Compute por meio da API do CloudMonitor. Chame as operações de API relevantes e use diferentes parâmetros de solicitação para obter os dados de monitoramento do Function Compute. Esses parâmetros incluem Project, StartTime, EndTime, Dimensions, Period e Metric.
Para obter mais informações sobre as operações de API, consulte Visão geral da API.
Project
Todas as métricas do Function Compute estão disponíveis para consulta no projeto acs_fc.
O exemplo de código a seguir mostra como configurar o projeto com o SDK for Java:
QueryMetricRequest request = new QueryMetricRequest();
request.setProject("acs_fc");
StartTime e EndTime
No CloudMonitor, os parâmetros StartTime e EndTime definem um intervalo de tempo no formato (StartTime, EndTime]. O intervalo exclui o valor de StartTime e inclui o valor de EndTime.
O CloudMonitor retém dados por 31 dias. Por esse motivo, o intervalo entre StartTime e EndTime não pode exceder 31 dias, e não é possível consultar dados anteriores a esse período.
Para obter mais informações sobre outros parâmetros de tempo, consulte Visão geral da API.
O exemplo de código a seguir mostra como configurar o projeto com o SDK for Java:
request.setStartTime("2024-07-19 08:00:00");
request.setEndTime("2024-07-19 09:00:00");
Dimensions
O serviço de monitoramento do Function Compute divide as métricas nas dimensões de região, serviço e função. Cada dimensão utiliza um formato diferente para o valor do parâmetro Dimensions.
-
O parâmetro Dimensions para métricas regionais segue este formato:
{"region": "${your_region}"} -
Para métricas de função, o parâmetro Dimensions adota o seguinte formato:
{"region": "${your_region}", "functionName": "${your_functionName}"}
O valor do parâmetro Dimensions é uma string JSON que contém um ou mais pares chave-valor. O exemplo de código a seguir mostra como configurar o projeto com o SDK for Java:
request.setDimensions("{\"region\":\"your_region\"}");
Period
A granularidade do período de agregação das métricas do Function Compute deve ser de 60 segundos.
O exemplo de código a seguir mostra como configurar o projeto com o SDK for Java:
request.setPeriod("60");
Metric
O exemplo de código a seguir mostra como configurar o projeto com o SDK for Java:
request.setMetric("your_metric");
A tabela a seguir lista as métricas descritas na documentação do Function Compute.
Dimension | Metric |
ID da região. | RegionTotalInvocations |
RegionServerErrors | |
RegionClientErrors | |
RegionFunctionErrors | |
RegionThrottles | |
RegionResourceThrottles | |
RegionConcurrencyLimit | |
RegionConcurrentCount | |
RegionProvisionedCurrentInstance | |
Função | 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 |
Exemplo:
O texto a seguir mostra um exemplo de arquivo 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>
...
Código de exemplo:
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();
}
}
}