All Products
Search
Document Center

Cloud Monitor:Laporkan data pemantauan menggunakan Java SDK (Direkomendasikan)

Last Updated:Jun 17, 2026

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();
                        }
                    });