Todos os produtos
Search
Central de documentação

Cloud Monitor:Relatar dados de monitoramento com o SDK do Java (Recomendado)

Última atualização: Jun 26, 2026

Use o SDK do Java para relatar dados de monitoramento personalizados ao CloudMonitor, como dados brutos ou agregados localmente.

O SDK do Java oferece os seguintes métodos para relatar dados de monitoramento:

  • Relate dados de monitoramento diretamente ao CloudMonitor.

  • Agregue dados localmente e relate os resultados consolidados.

    O período de agregação é de 60 segundos ou 300 segundos.

Instale o SDK do Java

Para instalar o SDK do Java via Maven, adicione a seguinte dependência:

<dependency>
            <groupId>com.aliyun.openservices</groupId>
            <artifactId>aliyun-cms</artifactId>
            <version>0.2.4</version>
</dependency>

Exemplos de código

Os exemplos a seguir demonstram como relatar dados de monitoramento:

  • Relatar dados brutos

    CMSClientInit.groupId = 101L;// Set the public application group ID.
            CMSClient cmsClient = new CMSClient(endpoint, accKey, secret);// Initialize the client.
            CustomMetricUploadRequest request = CustomMetricUploadRequest.builder()
                    .append(CustomMetric.builder()
                            .setMetricName("testMetric")// Metric name.
                            .setGroupId(102L)// Set the application group ID.
                            .setTime(new Date())
                            .setType(CustomMetric.TYPE_VALUE)// The type is raw value.
                            .appendValue(MetricAttribute.VALUE, 1f)// Raw value. The key can only be this value and cannot be customized.
                            .appendDimension("key", "value")// Add a dimension.
                            .appendDimension("ip", "127.0.0.1")// Add a dimension.
                            .build())
                    .build();
            CustomMetricUploadResponse response = cmsClient.putCustomMetric(request);// Report the data.
            System.out.println(JSONObject.toJSONString(response));
  • Relatar dados agregados

    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)// The type is aggregation.
                            .setPeriod(CustomMetric.PERIOD_1M)// The period is 1 minute.
                            .appendDimension("test", "testValue")// Set a dimension.
                            .appendDimension("dimension", "dimensionValue")// Set a dimension.
                            .appendValue(MetricAttribute.SUM, 100)// Set the sum.
                            .appendValue(MetricAttribute.MAX, 20)// Set the maximum value.
                            .appendValue(MetricAttribute.MIN, 0.1)// Set the minimum value.
                            .appendValue(MetricAttribute.COUNT, 20)// Set the count.
                            .appendValue(MetricAttribute.AVG, 5)// Set the average value.
                            .appendValue(MetricAttribute.LAST, 10)// Set the last value of the period.
                            .appendValue(MetricAttribute.P50, 10)// Set P50.
                            .appendValue(MetricAttribute.P90, 17)// Set P90.
                            .appendValue(MetricAttribute.P99, 19)// Set P99.
                            .build())
                    .build();
            CustomMetricUploadResponse response = cmsClient.putCustomMetric(request);
            System.out.println(JSONObject.toJSONString(response));
Nota

Para consultar os endpoints de serviço do CloudMonitor em cada região, consulte

Endpoints de serviço para relatar dados de monitoramento

.

Exemplo de resposta

Uma solicitação bem-sucedida retorna uma resposta semelhante ao exemplo a seguir:

{
    "Message": "success",
    "RequestId": "E25EE651-9C97-4EFD-AF22-A753B674E8D4",
    "Code": "200"
}

O código de status 200 indica que a solicitação foi processada com sucesso.

Relatório de agregação multiperíodo

O SDK do Java permite agregar dados localmente antes do relatório. A tabela a seguir descreve os tipos de dados compatíveis.

Tipo de dado

Descrição

Valores agregados

Consumo de memória

value

Tipo de valor geral

Todas as propriedades, exceto LastValue

Cerca de 4 KB

gauge

Valor amostrado

LastValue

4 bytes

meter

Soma, taxa

Sum, SumPerSecond

50 bytes

counter

Contagem

SampleCount

10 bytes

timer

Cálculo de tempo

SampleCount, CountPerSecond, Average, Maximum, Minimum, PXX (P10-P99)

Cerca de 4 KB

histogram

Distribuição

SampleCount, Average, Maximum, Minimum, PXX (P10-P99)

Cerca de 4 KB

Nota

Os valores de consumo de memória referem-se a uma única série temporal e a um único período de agregação.

O exemplo a seguir ilustra o uso de cada tipo de dado:

// Initialization
        CMSClientInit.groupId = 0L;
        CMSClient cmsClient = new CMSClient(accKey, secret, endpoint);// Create a client.
        CMSMetricRegistryBuilder builder = new CMSMetricRegistryBuilder();
        builder.setCmsClient(cmsClient);
// Create a registry that includes two aggregation periods.
final MetricRegistry registry = builder.build();
// Or, create a registry that includes only the 1-minute aggregation period.
final MetricRegistry registry = builder.build(RecordLevel._60S);
// Use value.
ValueWrapper value = registry.value(MetricName.build("value"));
value.update(6.5);
// Use meter.
MeterWrapper meter = registry.meter(MetricName.build("meter"));
meter.update(7.2);
// Use counter.
CounterWrapper counter = registry.counter(MetricName.build("counter"));
counter.inc(20);
counter.dec(5);
// Use timer.
TimerWrapper timer = registry.timer(MetricName.build("timer"));
timer.update(30, TimeUnit.MILLISECONDS);
// Use histogram.
HistogramWrapper histogram = registry.histogram(MetricName.build("histogram"));
histogram.update(20);
// Use gauge.
final List list = new ArrayList();
registry.gauge(MetricName.build("gauge"), new Gauge() {
                        @Override
                        public Number getValue() {
                            return list.size();
                        }
                    });