このトピックでは、CloudMonitor APIを使用して、CloudMonitorでモニタリングされているAlibaba Cloudサービスのモニタリングデータを照会する方法について説明します。
大企業には、独自のO&Mおよび監視システムがあります。 ビジネスをAlibaba Cloudに移行する際には、クラウドリソースのモニタリングデータを既存のシステムに統合する必要があります。 さまざまなAlibaba Cloudサービスのモニタリングデータをモニタリングシステムに統合する前に、このトピックを参照してCloudMonitor APIを使用してデータを照会できます。
メトリックデータを照会するためのAPI操作
CloudMonitorは、メトリックデータを照会するための次のAPI操作を提供します。
CloudMonitorでサポートされているAlibaba Cloudサービスのクエリに使用される操作。 詳細については、「DescribeProjectMeta」をご参照ください。
各Alibaba Cloudサービスでサポートされているメトリックのクエリに使用される操作。 詳細については、「DescribeMetricMetaList」をご参照ください。
Alibaba Cloudサービスとメトリックによるモニタリングデータのクエリに使用される操作。 詳細については、「DescribeMetricList」および「DescribeMetricLast」をご参照ください。
以下の点にご注意ください。
DescribeMetricListおよびDescribeMetricLast操作を使用すると、すべてのインスタンスの特定のメトリックのデータをクエリできます。 複数のスレッドを作成して、一度に複数のメトリクスのモニタリングデータをクエリできます。 または、1つのスレッドを作成して、複数のメトリクスのモニタリングデータを1つずつ取得することもできます。
DescribeMetricList操作は1秒あたり最大20クエリ (QPS) をサポートしますが、DescribeMetricLast操作は最大30 QPSをサポートします。
DescribeMetricLast操作は、定期的に最新のモニタリングデータを取得する必要があるシナリオに適用できます。 時間枠は、自動的に前方にスライドします。 各ウィンドウについて、最新のレコードが検索される。
サービスがモニタリングデータをCloudMonitorに報告するまでに時間がかかる場合があります。 遅延はサービスによって異なります。 DescribeMetricLast操作を呼び出して最新のデータを照会する場合は、時間枠を5〜10分延長することを推奨します。
CloudMonitorは、数秒ごとに7日間取得したデータと、数分ごとに31日間取得したデータを保持します。
すべてのインスタンスの集計データをクエリする場合、Dimensionsパラメーターを指定する必要はありません。
例:
次の例は、DescribeMetricLast操作を呼び出して最新のモニタリングデータを照会し、DescribeMetricList操作を呼び出して指定した時間範囲のモニタリングデータを照会する方法を示しています。
com.aliyuncs.DefaultAcsClientをインポートします。com.aliyuncs.IAcsClientをインポートします。com.aliyuncs.exceptions.ClientExceptionをインポートします。com.aliyuncs.exceptions.ServerExceptionをインポートします。com.aliyuncs.profile.DefaultProfileをインポートします。com.google.gson.Gsonをインポートします。java.util.* をインポートします。com.aliyuncs.cms.mo del.v20190101をインポートします。*;
/**
* DescribeMetricList操作を呼び出して、指定された時間範囲内の指定されたインスタンスのモニタリングデータを照会できます。
* DescribeMetricList操作は、一度に複数のインスタンスのモニタリングデータを照会できます。
* 指定した時間範囲内の複数のインスタンスのモニタリングデータをクエリするには、これらのインスタンスをクエリに指定します。 一度に最大10個のインスタンスを指定できます。
* 指定された時間範囲でモニタリングデータを照会します。
* /
public class DescribeMetricList {
public static void main(String[] args) {
DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
IAcsClient client = new DefaultAcsClient(profile);
DescribeMetricListRequest request = new DescribeMetricListRequest();
// DescribeMetricMetaListおよびDescribeProjectMeta操作を呼び出して、名前空間とメトリックを照会できます。
request.setNamespace("acs_ecs_dashboard");
request.setMetricName("cpu_total");
// Periodパラメーターは60に設定され、60秒ごとに監視データを取得することを指定します。 Periodパラメーターの値は、メトリックによって異なります。 ほとんどのメトリックの期間は、デフォルトで60秒に設定されています。
リクエスト .setPeriod( "60");
// 各ページで返されるエントリの数。 クエリごとに最大1,000のエントリを返すことができます。
request.setLength("1000");
// クエリする時間範囲の先頭。
request.setStartTime("2019-07-22 11:00:00");
// クエリする時間範囲の終わり。
request.setEndTime("2019-07-22 12:00:00");
// Dimensionsパラメーターを設定して、モニタリングデータをフィルタリングします。 値には、JSON配列またはJSONオブジェクトを指定できます。
request.setDimensions("[{\" instanceId\":\" i-8vb ******\"}]");
try {
DescribeMetricListResponse response = client.getAcsResponse(request);
System.out.println(new Gson().toJson(response));
} catch (ServerException e) {
e.printStackTrace();
} catch (ClientException e) {
System.out.println("ErrCode:" + e.getErrCode());
System.out.println("ErrMsg:" + e.getErrMsg());
System.out.println("RequestId:" + e.getRequestId());
}
}
}
import com.aliyuncs.DefaultAcsClient;
com.aliyuncs.IAcsClientをインポートします。com.aliyuncs.exceptions.ClientExceptionをインポートします。com.aliyuncs.exceptions.ServerExceptionをインポートします。com.aliyuncs.profile.DefaultProfileをインポートします。com.google.gson.Gsonをインポートします。java.util.* をインポートします。com.aliyuncs.cms.mo del.v20190101をインポートします。*;
/**
* 最新のモニタリングデータを照会します。
**/
パブリッククラスDescribeMetricLast {
public static void main(String[] args) {
DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
IAcsClient client = new DefaultAcsClient(profile);
DescribeMetricLastRequest request = new DescribeMetricLastRequest();
// DescribeMetricMetaListおよびDescribeProjectMeta操作を呼び出して、名前空間とメトリックを照会できます。
request.setNamespace("acs_ecs_dashboard");
request.setMetricName("cpu_total");
// Dimensionsパラメーターを設定して、モニタリングデータをフィルタリングします。 値には、JSON配列またはJSONオブジェクトを指定できます。
request.setDimensions("[{\" instanceId\":\" i-8vb6p *****\"}]");
// 各ページで返されるエントリの数。 クエリごとに最大1,000のエントリを返すことができます。
request.setLength("1000");
// クエリする時間範囲の先頭。
request.setStartTime("2019-07-22 11:00:00");
// クエリする時間範囲の終わり。
request.setEndTime("2019-07-22 12:00:00");
リクエスト .setPeriod( "60");
try {
DescribeMetricLastResponseレスポンス=client.getAcsResponse (リクエスト);
System.out.println(new Gson().toJson(response));
} catch (ServerException e) {
e.printStackTrace();
} catch (ClientException e) {
System.out.println("ErrCode:" + e.getErrCode());
System.out.println("ErrMsg:" + e.getErrMsg());
System.out.println("RequestId:" + e.getRequestId());
}
}
}