定时向Graphite中写入指标项数据,指标项模拟个数3000个
官方文档
dropwizard的github地址
Metric官方文档
metrics.dropwizard的GitHub地址
<dependency>
<groupId>io.dropwizard.metrics</groupId>
<artifactId>metrics-core</artifactId>
<version>${dropwizard.metrics.version}</version>
</dependency>
<dependency>
<groupId>io.dropwizard.metrics</groupId>
<artifactId>metrics-graphite</artifactId>
<version>${dropwizard.metrics.version}</version>
</dependency>
指定Graphite的host和port,默认时,Graphite中的carbon使用2003端口接收数据;
Graphite graphite = new Graphite(new InetSocketAddress("10.144.202.150", 2003));
每个指标项都有一个uuid,3000个uuid代表3000个不同的指标项
final List<String> uuids = Lists.newArrayList();
{
for (int i = 1000; i < 4000; i++) {
String uuid = "aaa" + i + "";
uuids.add(uuid);
}
}
dropwizard.metrics支持5种指标类型,分别为:
我们这里定义Gauge指标,需要实现Gauge接口;
使用metricValue(uuid)方法模拟每个指标项的当前值
/**
* Gauge指标
*/
class GaugeImp implements Gauge<Float> {
String uuid;
public GaugeImp(String uuid) {
this.uuid = uuid;
}
@Override
public Float getValue() {
return metricValue(uuid);
}
}
/**
* 用于模拟指标值
*
* @param uuid
* @return
*/
private float metricValue(String uuid) {
Random random = new Random();
float value = random.nextFloat();
return value;
}
MetricRegistry registry = new MetricRegistry();
// 注册 gauge 指标
for (String uuid : uuids) {
String name = "resource." + uuid + ".size";
registry.register(name, new GaugeImp(uuid));
}
//A reporter which publishes metric values to a Graphite server.
GraphiteReporter reporter = GraphiteReporter.forRegistry(registry)
.prefixedWith("openmetric")
.convertRatesTo(TimeUnit.SECONDS)
.convertDurationsTo(TimeUnit.MILLISECONDS)
.filter(MetricFilter.ALL)
.build(graphite);
// 设置每隔5秒钟,向Graphite中发送一次指标值
reporter.start(5, TimeUnit.SECONDS);






来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70000523/viewspace-3154054/ ,如需转载,请注明出处,否则将追究法律责任。