本文為您介紹通過Java SDK上報監控數據的配置方法。
通過Java SDK上報監控數據的方法如下:
- 您可以直接通過Java SDK上報監控數據。
- 您可以先在本地通過Java SDK聚合數據,再通過Java SDK上報監控數據。
聚合周期為60秒或300秒。
安裝Java SDK
通過Maven安裝Java SDK,需要添加的依賴如下:
<dependency>
<groupId>com.aliyun.openservices</groupId>
<artifactId>aliyun-cms</artifactId>
<version>0.2.4</version>
</dependency>
代碼示例
通過Java SDK方式上報監控數據的代碼示例如下:
- 上報原始數據
CMSClientInit.groupId = 101L;//設置公共的應用分組ID。 CMSClient cmsClient = new CMSClient(endpoint, accKey, secret);//初始化client。 CustomMetricUploadRequest request = CustomMetricUploadRequest.builder() .append(CustomMetric.builder() .setMetricName("testMetric")//指標名稱。 .setGroupId(102L)//設置應用分組ID。 .setTime(new Date()) .setType(CustomMetric.TYPE_VALUE)//類型為原始值。 .appendValue(MetricAttribute.VALUE, 1f)//原始值,key只能是該value,不能自定義。 .appendDimension("key", "value")//添加維度。 .appendDimension("ip", "127.0.0.1")//添加維度。 .build()) .build(); CustomMetricUploadResponse response = cmsClient.putCustomMetric(request);//上報數據。 System.out.println(JSONObject.toJSONString(response));
- 上報聚合數據
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)//設置P50。 .appendValue(MetricAttribute.P90, 17)//設置P90。 .appendValue(MetricAttribute.P99, 19)//設置P99。 .build()) .build(); CustomMetricUploadResponse response = cmsClient.putCustomMetric(request); System.out.println(JSONObject.toJSONString(response));
說明 云監控各地域的接入地址,請參見上報監控數據的服務地址。
返回示例
通過Java SDK方式上報監控數據的代碼返回示例如下:
{
"Message": "success",
"RequestId": "E25EE651-9C97-4EFD-AF22-A753B674E8D4",
"Code": "200"
}
HTTP狀態碼返回200表示成功。
多周期聚合上報
Java SDK支持在本地先聚合數據,再上報監控數據的功能。
數據類型 | 描述 | 聚合的值 | 內存消耗 |
---|---|---|---|
value | 一般值類型 | 除了LastValue外的所有屬性 | 約4KB |
gauge | 采樣值 | LastValue | 4Byte |
meter | 求和、速率 | Sum、SumPerSecond | 50Byte |
counter | 計數 | SampleCount | 10Byte |
timer | 計算時間 | SampleCount、CountPerSecond、Average、Maximum、Minimum、PXX(P10-P99) | 約4KB |
histogram | 分布 | SampleCount、Average、Maximum、Minimum、PXX(P10-P99) | 約4KB |
說明 內存消耗是單時間序列和單聚合周期。
代碼示例如下:
//初始化
CMSClientInit.groupId = 0L;
CMSClient cmsClient = new CMSClient(accKey, secret, endpoint);//創建client。
CMSMetricRegistryBuilder builder = new CMSMetricRegistryBuilder();
builder.setCmsClient(cmsClient);
//創建registry,包含2個聚合周期。
final MetricRegistry registry = builder.build();
//或創建registry,只創建1分鐘聚合周期。
final MetricRegistry registry = builder.build(RecordLevel._60S);
//使用value。
ValueWrapper value = registry.value(MetricName.build("value"));
value.update(6.5);
//使用meter。
MeterWrapper meter = registry.meter(MetricName.build("meter"));
meter.update(7.2);
//使用counter。
CounterWrapper counter = registry.counter(MetricName.build("counter"));
counter.inc(20);
counter.dec(5);
//使用timer。
TimerWrapper timer = registry.timer(MetricName.build("timer"));
timer.update(30, TimeUnit.MILLISECONDS);
//使用histogram。
HistogramWrapper histogram = registry.histogram(MetricName.build("histogram"));
histogram.update(20);
//使用gauge。
final List list = new ArrayList();
registry.gauge(MetricName.build("gauge"), new Gauge() {
@Override
public Number getValue() {
return list.size();
}
});