このトピックでは、Cloud Monitor APIを使用してFunction Computeメトリクスをクエリする方法について説明します。 関連するAPI操作を呼び出し、さまざまなリクエストパラメーターを使用して、必要なデータを取得できます。 これらのパラメータには、Project、StartTime、EndTime、Dimensions、Period、およびMetricが含まれます。
プロジェクト
すべてのFunction Computeメトリクスは、acs_fcプロジェクトでクエリに使用できます。
次のサンプルコードは、Java SDKを使用してプロジェクトを設定する方法を示しています。
QueryMetricRequest request = new QueryMetricRequest();
request.setProject("acs_fc");
Time range
Cloud Monitorでは、StartTimeパラメーターとEndTimeパラメーターによって時間範囲が定義されます。 時間範囲は、StartTimeに関して排他的であり、EndTimeに関して包括的である。
時間パラメーターの詳細については、「t14254.html#doc_14254」をご参照ください。
次のサンプルコードは、Java SDKを使用して時間範囲を設定する方法を示しています。
request.setStartTime("2017-04-26 08:00:00");
request.setEndTime("2017-04-26 09:00:00");
ディメンション
Function Computeのモニタリングサービスは、Function Computeメトリクスをリージョン、サービス、および関数ディメンションから分割します。 各ディメンションは、ディメンションパラメーターの値に異なる形式を使用します。
- リージョナルメトリックのディメンションパラメーターは、次の形式です。
{"region": "$ {your_region}"}
- サービスメトリックのDimensionsパラメーターの形式は次のとおりです。
{"region": "$ {your_region}"、"serviceName": "$ {your_serviceName}"}
- 関数メトリックのDimensionsパラメーターは、次の形式です。
{"region": "$ {your_region}"、"serviceName": "$ {your_serviceName}"、"functionName": "$ {your_functionName}"}
request.setDimensions("{\" region\":\" your_region\"}");
期間
Function Computeメトリクスの集計期間の粒度は60秒である必要があります。
次のサンプルコードは、Java SDKを使用して集計期間を設定する方法を示しています。
リクエスト .setPeriod( "60");
メトリック
次のサンプルコードは、Java SDKを使用してメトリックを指定する方法を示しています。
リクエスト .setMetric( "your_metric");
次の表に、Function Computeのドキュメントで説明されているメトリックを示します。
ディメンション | メトリック | 説明 |
---|---|---|
リージョン | RegionTotalInvocations | リージョン内の関数呼び出し要求の総数。 |
RegionBillableInvocations | リージョン内の課金可能な関数呼び出し要求の数。 | |
RegionThrottles | リージョン内のスロットルされた関数呼び出し要求の数。 | |
RegionClientErrors | クライアントエラーが返されたリージョン固有の関数呼び出し要求の数。 | |
RegionServerErrors | サーバーエラーが返されたリージョン固有の関数呼び出し要求の数。 | |
RegionBillableInvocationsRate | リージョン内の課金可能な関数呼び出し要求の割合。 | |
RegionThrottlesRate | リージョン内のスロットルされた関数呼び出し要求の割合。 | |
RegionClientErrorsRate | クライアントのエラーが返されたリージョン固有の関数呼び出し要求の割合。 | |
RegionServerErrorsRate | サーバーエラーが返されるリージョン固有の関数呼び出し要求の割合。 | |
サービス | ServiceTotalInvocations | サービス内の関数呼び出し要求の総数。 |
ServiceBillableInvocations | サービス内の課金可能な関数呼び出し要求の数。 | |
ServiceThrottles | サービス内のスロットル関数呼び出し要求の数。 | |
ServiceClientErrors | クライアントエラーが返されたサービス固有の関数呼び出し要求の数。 | |
ServiceServerErrors | サーバーエラーが返されたサービス固有の関数呼び出し要求の数。 | |
ServiceBillableInvocationsRate | サービス内の関数呼び出しリクエストの課金成功率。 | |
ServiceThrottlesRate | サービス内のスロットルされた関数呼び出し要求の割合。 | |
ServiceClientErrorsRate | クライアントエラーが返されたサービス固有の関数呼び出し要求の割合。 | |
ServiceServerErrorsRate | サーバーエラーが返されたサービス固有の関数呼び出し要求の割合。 | |
機能 | FunctionTotalInvocations | 関数の呼び出し要求の総数。 |
FunctionBillableInvocations | 関数に対する請求可能な呼び出し要求の数。 | |
FunctionThrottles | 関数のスロットリングされた呼び出し要求の数。 | |
FunctionErrors | 関数の実行中に発生したエラーの数。 | |
FunctionClientErrors | クライアントエラーが返された関数呼び出し要求の数。 | |
FunctionServerErrors | サーバーエラーが返された関数呼び出し要求の数。 | |
FunctionBillableInvocationsRate | 関数の請求可能な呼び出し要求の割合。 | |
FunctionThrottlesRate | 関数のスロットル呼び出し要求の割合。 | |
FunctionErrorsRate | 関数の実行でエラーが発生した関数呼び出し要求の割合。 | |
FunctionClientErrorsRate | クライアントエラーが返された関数呼び出し要求の割合。 | |
FunctionServerErrorsRate | サーバーエラーが返された関数呼び出し要求の割合。 | |
FunctionAvgDuration | 60秒間のすべてのリクエストの平均時間。 | |
FunctionMaxMemoryUsage | 集計期間内に関数の呼び出しに使用される最大メモリ。 |
例
次のテキストは、サンプルの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>
...
次のコードは、Cloud Monitor APIからメトリックを要求します。
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) {
IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", "<your_access_key_id>", "<your_access_key_secret>");
IAcsClient client = new DefaultAcsClient(profile);
QueryMetricListRequest request = new QueryMetricListRequest();
request.setProject("acs_fc");
request.setPeriod("60");
request.setStartTime("2017-04-26 16:20:00");
request.setEndTime("2017-04-26 16:30:00");
request.setAcceptFormat(FormatType.JSON);
try {
// Region JSONObject dim = new JSONObject();
request.setMetric("RegionTotalInvocations"); // Specifies a metric.
dim.put("region", "<your_region>"); // For 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());
// Service dim = new JSONObject();
request.setMetric("ServiceTotalInvocations"); // Specifies a metric.
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());
// Function dim = new JSONObject();
request.setMetric("FunctionTotalInvocations"); // Specifies a metric.
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();
}
}
}