Anda dapat menggunakan Java SDK untuk melaporkan data Pemantauan kustom ke CloudMonitor, baik dalam bentuk data mentah maupun data yang telah diagregasi secara lokal.
Java SDK mendukung metode berikut untuk melaporkan data pemantauan:
- Melaporkan data pemantauan langsung ke CloudMonitor.
- Mengagregasi data secara lokal, lalu melaporkan hasil agregasinya.
Periode agregasi adalah 60 detik atau 300 detik.
Instal Java SDK
Untuk menginstal Java SDK menggunakan Maven, tambahkan dependensi berikut:
<dependency>
<groupId>com.aliyun.openservices</groupId>
<artifactId>aliyun-cms</artifactId>
<version>0.2.4</version>
</dependency>Contoh kode
Contoh berikut menunjukkan cara melaporkan data pemantauan:
- Melaporkan data mentah
CMSClientInit.groupId = 101L;// Tetapkan ID kelompok aplikasi publik. CMSClient cmsClient = new CMSClient(endpoint, accKey, secret);// Inisialisasi client. CustomMetricUploadRequest request = CustomMetricUploadRequest.builder() .append(CustomMetric.builder() .setMetricName("testMetric")// Nama metrik. .setGroupId(102L)// Tetapkan ID kelompok aplikasi. .setTime(new Date()) .setType(CustomMetric.TYPE_VALUE)// Jenisnya adalah nilai mentah. .appendValue(MetricAttribute.VALUE, 1f)// Nilai mentah. Kunci hanya boleh bernilai ini dan tidak dapat dikustomisasi. .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)// Jenisnya adalah agregasi. .setPeriod(CustomMetric.PERIOD_1M)// Periode adalah 1 menit. .appendDimension("test", "testValue")// Tetapkan dimensi. .appendDimension("dimension", "dimensionValue")// Tetapkan dimensi. .appendValue(MetricAttribute.SUM, 100)// Tetapkan jumlah total. .appendValue(MetricAttribute.MAX, 20)// Tetapkan nilai maksimum. .appendValue(MetricAttribute.MIN, 0.1)// Tetapkan nilai minimum. .appendValue(MetricAttribute.COUNT, 20)// Tetapkan jumlah sampel. .appendValue(MetricAttribute.AVG, 5)// Tetapkan nilai rata-rata. .appendValue(MetricAttribute.LAST, 10)// Tetapkan nilai terakhir periode. .appendValue(MetricAttribute.P50, 10)// Tetapkan P50. .appendValue(MetricAttribute.P90, 17)// Tetapkan P90. .appendValue(MetricAttribute.P99, 19)// Tetapkan P99. .build()) .build(); CustomMetricUploadResponse response = cmsClient.putCustomMetric(request); System.out.println(JSONObject.toJSONString(response));
Catatan Untuk Titik akhir layanan Cloud Monitor di setiap Wilayah, lihat Titik akhir layanan untuk pelaporan data pemantauan.
Contoh respons
Permintaan yang berhasil mengembalikan respons seperti contoh berikut:
{
"Message": "success",
"RequestId": "E25EE651-9C97-4EFD-AF22-A753B674E8D4",
"Code": "200"
}Kode status 200 menunjukkan bahwa permintaan berhasil.
Pelaporan agregasi multi-periode
Anda dapat menggunakan Java SDK untuk mengagregasi data secara lokal sebelum melaporkannya. Tabel berikut menjelaskan tipe data yang didukung.
| Tipe data | Deskripsi | Nilai agregasi | Konsumsi memori |
| value | Tipe nilai umum | Semua properti kecuali LastValue | Sekitar 4 KB |
| gauge | Nilai yang diambil sampelnya | LastValue | 4 byte |
| meter | Jumlah total, laju | Jumlah total, Jumlah per detik | 50 byte |
| counter | Jumlah sampel | SampleCount | 10 byte |
| timer | Perhitungan waktu | SampleCount, CountPerSecond, Average, Maximum, Minimum, PXX (P10-P99) | Sekitar 4 KB |
| histogram | Distribusi | SampleCount, Average, Maximum, Minimum, PXX (P10-P99) | Sekitar 4 KB |
Catatan Nilai konsumsi memori tersebut berlaku untuk satu deret waktu dan satu periode agregasi.
Contoh berikut menunjukkan cara menggunakan setiap tipe data:
// Inisialisasi
CMSClientInit.groupId = 0L;
CMSClient cmsClient = new CMSClient(accKey, secret, endpoint);// Buat client.
CMSMetricRegistryBuilder builder = new CMSMetricRegistryBuilder();
builder.setCmsClient(cmsClient);
// Buat registri yang mencakup dua periode agregasi.
final MetricRegistry registry = builder.build();
// Atau, buat registri yang hanya mencakup periode agregasi 1 menit.
final MetricRegistry registry = builder.build(RecordLevel._60S);
// Gunakan value.
ValueWrapper value = registry.value(MetricName.build("value"));
value.update(6.5);
// Gunakan meter.
MeterWrapper meter = registry.meter(MetricName.build("meter"));
meter.update(7.2);
// Gunakan counter.
CounterWrapper counter = registry.counter(MetricName.build("counter"));
counter.inc(20);
counter.dec(5);
// Gunakan timer.
TimerWrapper timer = registry.timer(MetricName.build("timer"));
timer.update(30, TimeUnit.MILLISECONDS);
// Gunakan histogram.
HistogramWrapper histogram = registry.histogram(MetricName.build("histogram"));
histogram.update(20);
// Gunakan gauge.
final List list = new ArrayList();
registry.gauge(MetricName.build("gauge"), new Gauge() {
@Override
public Number getValue() {
return list.size();
}
});