如何在不使用 Spring 或 Spring Boot 的情况下使用 Micrometer 在 TICK 堆栈上收集指标?
How to use Micrometer for metrics collection on TICK stack without using Spring or Spring Boot?
我正在使用纯 Java 编写应用程序,而没有使用 Spring/SpringBoot 或任何其他框架。我使用 TICK 堆栈(Telegraf、Influx、Chronograf 和 Kapacitor)作为我的指标后端和可视化平台。我在本地主机 8125 上使用带有 Statsd 插件的 Telegraf。问题是我的应用程序没有向系统发送任何指标。但是,我编写了一个简单的 Spring 启动应用程序,它将相关指标推送到我的仪表板。此外,执行 echo "api.msgs.ok:10|c" | nc -C -w 1 -u localhost 8125
也会将指标推送到我的仪表板。
我正在尝试 运行 的示例代码在这里:
import io.micrometer.statsd.StatsdConfig;
import io.micrometer.statsd.StatsdFlavor;
import io.micrometer.statsd.StatsdMeterRegistry;
import java.util.Properties;
public class TestMicrometer {
public static void main(String[] args) throws InterruptedException{
Properties properties = new Properties();
//properties.put("statsd.host","127.0.0.1");
//properties.put("statsd.port","8125");
StatsdConfig config = new StatsdConfig() {
//Will use localhost 8125 if get returns null always
@Override
public String get(String k) {
/*
System.out.println("Key " +k+ " is called");
if (k.equals("statsd.host")){
System.out.println("The host is "+properties.getProperty(k));
}
return properties.getProperty(k);
*/
return null;
}
@Override
public StatsdFlavor flavor() {
return StatsdFlavor.TELEGRAF;
}
};
MeterRegistry registry = new StatsdMeterRegistry(config, Clock.SYSTEM);
Counter.builder("loop.counter.test").description("TOTAL_LOOP_COUNTER").tags("LOOP.COUNTER","SAMPLE.LOOP.METER").register(registry).increment();
Metrics.addRegistry(registry);
for (int i = 0; i < 50; i++) {
Metrics.counter("loop.counter.test").increment();
}
}
}
任何帮助将不胜感激:)
StatsD 指标的发布是异步的,这个例子终止得太快了。在最后放一个 Thread.sleep(1000)
,指标就可以正常发布了。
我正在使用纯 Java 编写应用程序,而没有使用 Spring/SpringBoot 或任何其他框架。我使用 TICK 堆栈(Telegraf、Influx、Chronograf 和 Kapacitor)作为我的指标后端和可视化平台。我在本地主机 8125 上使用带有 Statsd 插件的 Telegraf。问题是我的应用程序没有向系统发送任何指标。但是,我编写了一个简单的 Spring 启动应用程序,它将相关指标推送到我的仪表板。此外,执行 echo "api.msgs.ok:10|c" | nc -C -w 1 -u localhost 8125
也会将指标推送到我的仪表板。
我正在尝试 运行 的示例代码在这里:
import io.micrometer.statsd.StatsdConfig;
import io.micrometer.statsd.StatsdFlavor;
import io.micrometer.statsd.StatsdMeterRegistry;
import java.util.Properties;
public class TestMicrometer {
public static void main(String[] args) throws InterruptedException{
Properties properties = new Properties();
//properties.put("statsd.host","127.0.0.1");
//properties.put("statsd.port","8125");
StatsdConfig config = new StatsdConfig() {
//Will use localhost 8125 if get returns null always
@Override
public String get(String k) {
/*
System.out.println("Key " +k+ " is called");
if (k.equals("statsd.host")){
System.out.println("The host is "+properties.getProperty(k));
}
return properties.getProperty(k);
*/
return null;
}
@Override
public StatsdFlavor flavor() {
return StatsdFlavor.TELEGRAF;
}
};
MeterRegistry registry = new StatsdMeterRegistry(config, Clock.SYSTEM);
Counter.builder("loop.counter.test").description("TOTAL_LOOP_COUNTER").tags("LOOP.COUNTER","SAMPLE.LOOP.METER").register(registry).increment();
Metrics.addRegistry(registry);
for (int i = 0; i < 50; i++) {
Metrics.counter("loop.counter.test").increment();
}
}
}
任何帮助将不胜感激:)
StatsD 指标的发布是异步的,这个例子终止得太快了。在最后放一个 Thread.sleep(1000)
,指标就可以正常发布了。