このトピックでは、SDK for Javaを使用してモニタリングデータをレポートする方法について説明します。
SDK for Javaでは、次のいずれかの方法を使用してモニタリングデータを報告できます。
- SDK for Javaを使用して、モニタリングデータを直接報告します。
- SDK for Javaを使用してデータをローカルに集計し、集計データを報告します。
集計期間は60秒または300秒でなければなりません。
SDK for Java のインストール
次のMaven依存関係を追加して、Java用SDKをインストールできます。
<dependency>
<groupId>com.aliyun.openservices</groupId>
<artifactId>aliyun-cms</artifactId>
<version>0.2.4</version>
</dependency>
サンプルコード
次のサンプルコードは、SDK for Javaを使用してモニタリングデータを報告する方法を示しています。
- レポート生データ
CMSClientInit.groupId = 101L;// 共通アプリケーショングループのIDを指定します。 CMSClient cmsClient = new CMSClient(endpoint, accKey, secret);// クライアントを初期化します。 CustomMetricUploadRequest request = CustomMetricUploadRequest.builder() .append(CustomMetric.builder() . setMetricName("testMetric")// メトリックの名前を指定します。 . setGroupId(102L)// アプリケーショングループのIDを指定します。 .setTime(new Date()) . setType(CustomMetric.TYPE_VALUE)// 型を生データに設定します。 . appendValue(MetricAttribute.VALUE, 1f)// 生データを追加します。 キーをMetricAttribute.VALUEに設定します。 . appendDimension("key", "value")// ディメンションを追加します。 . appendDimension("ip", "127.0.0.1")// ディメンションを追加します。 .build()) .build(); CustomMetricUploadResponse response = cmsClient.putCustomMetric(request);// レポートデータ。 System.out.println(JSONObject.toJSONString (レスポンス));
- レポート集計データ
CMSClientInit.groupId = 101L; CMSClient cmsClient = new CMSClient(endpoint, accKey, secret); CustomMetricUploadRequest request = CustomMetricUploadRequest.builder() .append(CustomMetric.builder() . setMetricName("customTest") .setTime(new Date()) . setType(CustomMetric.TYPE_AGG)// タイプを集計データに設定します。 . setPeriod(CustomMetric.PERIOD_1M)// 集計期間を1分に設定します。 . appendDimension("test", "testValue")// ディメンションを追加します。 . appendDimension("dimension", "dimensionValue")// ディメンションを追加します。 . appendValue(MetricAttribute.SUM, 100)// 合計値を追加します。 . appendValue(MetricAttribute.MAX, 20)// 最大値を追加します。 . appendValue(MetricAttribute.MIN, 0.1)// 最小値を追加します。 . appendValue(MetricAttribute.COUNT, 20)// カウントを追加します。 . appendValue(MetricAttribute.AVG, 5)// 平均値を加算する。 . appendValue(MetricAttribute.LAST, 10)// 集計期間の最後のサンプル値を追加します。 . appendValue(MetricAttribute.P50, 10)// 50番目のパーセンタイルの値を追加します。 . appendValue(MetricAttribute.P90, 17)// 90番目のパーセンタイルの値を追加します。 . appendValue(MetricAttribute.P99, 19)// 99番目のパーセンタイルの値を追加します。 .build()) .build(); CustomMetricUploadResponseレスポンス=cmsClient.putCustomMetric (リクエスト); System.out.println(JSONObject.toJSONString (レスポンス));
説明 異なるリージョンのCloud Monitorのエンドポイントの詳細については、「付録3: モニタリングデータをレポートするエンドポイント」をご参照ください。
レスポンスの例
次のコードは、SDK for Javaを使用してモニタリングデータを報告するときに返されるサンプルレスポンスを示しています
。{
"Message": "success",
"RequestId": "E25EE651-9C97-4EFD-AF22-A753B674E8D4" 、
"コード": "200"
}
HTTPステータスコード200は成功を示します。
複数の集計期間の集計データをレポートする
SDK for Javaを使用してデータをローカルに集計し、集計データを報告します。
データ型 | 説明 | 集計値 | メモリ使用量 |
value | 共通値型。The common value type. | LastValue 以外のすべてのプロパティ | 約 4 KB |
gauge | サンプル値。 | LastValue | 4バイト |
meter | 合計とレート。 | 合計とSumPerSecond | 50バイト |
counter | 集計 | SampleCount | 10バイト |
timer | 計算時間。 | SampleCount、CountPerSecond、平均、最大、最小、およびP10からP99 | 約 4 KB |
histogram | ディストリビューション。 | SampleCount、Average、Maximum、Minimum、およびP99へのP10 | 約 4 KB |
説明 メモリ使用量は、1つの集計期間において1つの時系列によって使用されるメモリを示す。
サンプルコード:
// データを初期化します。
CMSClientInit.groupId = 0L;
CMSClient cmsClient = new CMSClient(accKey, secret, endpoint);// クライアントを作成します。
CMSMetricRegistryBuilder builder = new CMSMetricRegistryBuilder();
builder.setCmsClient(cmsClient);
// 2つの集計期間のデータを報告するために使用されるレジストリを作成します。
最終的なMetricRegistry registry = builder.build();
// または、1分の集計期間のデータを報告するために使用されるレジストリを作成します。
final MetricRegistry registry = builder.build(RecordLevel) 。 _60S);
// 値タイプを使用します。
ValueWrapper value = registry.value(MetricName.build("value"));
value.update(6.5);
// メータータイプを使用します。
MeterWrapper meter = registry.meter(MetricName.build("meter"));
meter.update(7.2);
// カウンタータイプを使用します。
CounterWrapper counter = registry.counter(MetricName.build("counter"));
counter.inc(20);
counter.de c(5);
// タイマータイプを使用します。
TimerWrapper timer = registry.timer(MetricName.build("timer"));
timer.update (30, TimeUnit.MILLISECONDS);
// ヒストグラムタイプを使用します。
HistogramWrapper histogram = registry.histogram(MetricName.build("histogram"));
ヒストグラム更新 (20);
// ゲージタイプを使用します。
最終リストリスト=新しいArrayList();
registry.gauge(MetricName.build("gauge")), new Gauge() {
@Override
public Number getValue() {
return list.size();
}
});