Topik ini menjelaskan cara melaporkan data pemantauan menggunakan SDK untuk Java.
SDK untuk Java memungkinkan Anda melaporkan data pemantauan dengan salah satu metode berikut:
- Gunakan SDK untuk Java untuk langsung melaporkan data pemantauan.
- Gunakan SDK untuk Java untuk mengumpulkan data secara lokal dan kemudian melaporkan data agregat.
Periode agregasi harus 60 detik atau 300 detik.
Instal SDK untuk Java
Anda dapat menginstal SDK untuk Java dengan menambahkan dependensi Maven berikut:
<dependency>
<groupId>com.aliyun.openservices</groupId>
<artifactId>aliyun-cms</artifactId>
<version>0.2.4</version>
</dependency>Kode contoh
Berikut adalah kode contoh yang menunjukkan cara melaporkan data pemantauan menggunakan SDK untuk Java:
- Melaporkan data mentah
CMSClientInit.groupId = 101L;// Tentukan ID grup aplikasi umum. CMSClient cmsClient = new CMSClient(endpoint, accKey, secret);// Inisialisasi klien. CustomMetricUploadRequest request = CustomMetricUploadRequest.builder() .append(CustomMetric.builder() .setMetricName("testMetric")// Tentukan nama dari data deret waktu. .setGroupId(102L)// Tentukan ID grup aplikasi. .setTime(new Date()) .setType(CustomMetric.TYPE_VALUE)// Atur tipe ke data mentah. .appendValue(MetricAttribute.VALUE, 1f)// Tambahkan data mentah. Atur kunci ke MetricAttribute.VALUE. .appendDimension("key", "value")// Tambahkan dimensi. .appendDimension("ip", "127.0.0.1")// Tambahkan dimensi. .build()) .build(); CustomMetricUploadResponse response = cmsClient.putCustomMetric(request);// Laporkan data. System.out.println(JSONObject.toJSONString(response)); - Melaporkan data agregat
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)// Atur tipe ke data agregat. .setPeriod(CustomMetric.PERIOD_1M)// Atur periode agregasi menjadi 1 menit. .appendDimension("test", "testValue")// Tambahkan dimensi. .appendDimension("dimension", "dimensionValue")// Tambahkan dimensi. .appendValue(MetricAttribute.SUM, 100)// Tambahkan nilai total. .appendValue(MetricAttribute.MAX, 20)// Tambahkan nilai maksimum. .appendValue(MetricAttribute.MIN, 0.1)// Tambahkan nilai minimum. .appendValue(MetricAttribute.COUNT, 20)// Tambahkan jumlah. .appendValue(MetricAttribute.AVG, 5)// Tambahkan nilai rata-rata. .appendValue(MetricAttribute.LAST, 10)// Tambahkan nilai sampel terakhir dari periode agregasi. .appendValue(MetricAttribute.P50, 10)// Tambahkan nilai persentil ke-50. .appendValue(MetricAttribute.P90, 17)// Tambahkan nilai persentil ke-90. .appendValue(MetricAttribute.P99, 19)// Tambahkan nilai persentil ke-99. .build()) .build(); CustomMetricUploadResponse response = cmsClient.putCustomMetric(request); System.out.println(JSONObject.toJSONString(response));
Catatan Untuk informasi lebih lanjut tentang titik akhir Cloud Monitor di berbagai wilayah, lihat Lampiran 3: Titik Akhir untuk Melaporkan Data Pemantauan.
Contoh respons
Berikut adalah kode yang menunjukkan contoh respons yang dikembalikan saat Anda melaporkan data pemantauan menggunakan SDK untuk Java:
{
"Message": "success",
"RequestId": "E25EE651-9C97-4EFD-AF22-A753B674E8D4",
"Code": "200"
}Kode status HTTP 200 menunjukkan keberhasilan.
Melaporkan data agregat dari beberapa periode agregasi
Gunakan SDK untuk Java untuk mengumpulkan data secara lokal dan kemudian melaporkan data agregat.
| Tipe data | Deskripsi | Nilai agregat | Penggunaan memori |
| value | Tipe nilai umum. | Semua properti kecuali LastValue | Sekitar 4 KB |
| gauge | Nilai sampel. | LastValue | 4Byte |
| meter | Jumlah dan laju. | Sum dan SumPerSecond | 50Byte |
| counter | Hitungan | SampleCount | 10Byte |
| timer | Waktu komputasi. | SampleCount, CountPerSecond, Average, Maximum, Minimum, dan P10 hingga P99 | Sekitar 4 KB |
| histogram | Distribusi. | SampleCount, Average, Maximum, Minimum, dan P10 hingga P99 | Sekitar 4 KB |
Catatan Penggunaan memori menunjukkan memori yang digunakan oleh satu deret waktu dalam satu periode agregasi.
Kode contoh:
// Inisialisasi data.
CMSClientInit.groupId = 0L;
CMSClient cmsClient = new CMSClient(accKey, secret, endpoint);// Buat klien.
CMSMetricRegistryBuilder builder = new CMSMetricRegistryBuilder();
builder.setCmsClient(cmsClient);
// Buat registri yang digunakan untuk melaporkan data dari dua periode agregasi.
final MetricRegistry registry = builder.build();
// Sebagai alternatif, buat registri yang digunakan untuk melaporkan data dari satu periode agregasi selama 1 menit.
final MetricRegistry registry = builder.build(RecordLevel. _60S);
// Gunakan tipe value.
ValueWrapper value = registry.value(MetricName.build("value"));
value.update(6.5);
// Gunakan tipe meter.
MeterWrapper meter = registry.meter(MetricName.build("meter"));
meter.update(7.2);
// Gunakan tipe counter.
CounterWrapper counter = registry.counter(MetricName.build("counter"));
counter.inc(20);
counter.dec(5);
// Gunakan tipe timer.
TimerWrapper timer = registry.timer(MetricName.build("timer"));
timer.update(30, TimeUnit.MILLISECONDS);
// Gunakan tipe histogram.
HistogramWrapper histogram = registry.histogram(MetricName.build("histogram"));
histogram.update(20);
// Gunakan tipe gauge.
final List list = new ArrayList();
registry.gauge(MetricName.build("gauge"), new Gauge() {
@Override
public Number getValue() {
return list.size();
}
});