package com.xiaomi.infra.galaxy.metrics.example;
import com.xiaomi.infra.galaxy.metrics.client.MetricsClientFactory;
import com.xiaomi.infra.galaxy.metrics.thrift.Aggregator;
import com.xiaomi.infra.galaxy.metrics.thrift.AlertRule;
import com.xiaomi.infra.galaxy.metrics.thrift.CommonConstants;
import com.xiaomi.infra.galaxy.metrics.thrift.Credential;
import com.xiaomi.infra.galaxy.metrics.thrift.DownSample;
import com.xiaomi.infra.galaxy.metrics.thrift.JudgeService;
import com.xiaomi.infra.galaxy.metrics.thrift.Metric;
import com.xiaomi.infra.galaxy.metrics.thrift.MetricKey;
import com.xiaomi.infra.galaxy.metrics.thrift.MetricsService;
import com.xiaomi.infra.galaxy.metrics.thrift.QueryRequest;
import com.xiaomi.infra.galaxy.metrics.thrift.TimeUnit;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* Copyright 2015, Xiaomi.
* All rights reserved.
* Author: linshangquan@xiaomi.com
*/
public class MetricsDemo {
private static MetricsService.Iface metricsClient;
private static JudgeService.Iface judgeClient;
private static String appKey = ""; // Your AppKey
private static String appSecret = ""; // Your AppSecret
private static String endpoint = "";
private static Credential getCredential(String secretKeyId, String secretKey) {
return new Credential().setSecretKeyId(secretKeyId).setSecretKey(secretKey);
}
public static MetricsService.Iface createMetricsClient(String host) {
Credential credential = getCredential(appKey, appSecret);
MetricsClientFactory clientFactory = new MetricsClientFactory().setCredential(credential);
return clientFactory.newMetricsClient(host + CommonConstants.METRICS_SERVICE_PATH, 50000, 3000);
}
public static JudgeService.Iface createJudgeClient(String host) {
Credential credential = getCredential(appKey, appSecret);
MetricsClientFactory clientFactory = new MetricsClientFactory().setCredential(credential);
return clientFactory.newJudgeClient(host + CommonConstants.JUDGE_SERVICE_PATH, 50000, 3000);
}
public static void main(String[] args) throws Exception {
metricsClient = createMetricsClient(endpoint);
long now = System.currentTimeMillis() / 1000;
String metricName = "test-app.availability";
String [] hosts = {"host1", "host2", "host3"};
for (long time = now; time < now + 20 * 60; time += 60) {
for (String host : hosts) {
Metric metric = new Metric()
.setTimestamp(time)
.setValue(100.0);
MetricKey metricKey = new MetricKey()
.setMetricName(metricName);
metricKey.putToTags("host", host);
metric.setMetricKey(metricKey);
metricsClient.pushMetrics(Arrays.asList(metric));
}
}
DownSample sample = new DownSample()
.setInternal(1)
.setTimeUnit(TimeUnit.MINUTE)
.setAggregator(Aggregator.AVG);
MetricKey metricKey = new MetricKey()
.setMetricName(metricName);
QueryRequest queryRequest = new QueryRequest()
.setStartTime(now)
.setEndTime(now + 20 * 60)
.setMetricKey(metricKey)
.setAggregator(Aggregator.AVG)
.setDownSample(sample);
System.out.println(metricsClient.queryMetric(queryRequest));
}
}