簡體   English   中英

如何在不使用 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)作為我的指標后端和可視化平台。 我在 localhost 8125 上使用帶有 Statsd 插件的 Telegraf。問題是我的應用程序沒有向系統發送任何指標。 但是,我編寫了一個簡單的 Spring Boot 應用程序,將相關指標推送到我的儀表板。 另外,做一個echo "api.msgs.ok:10|c" | nc -C -w 1 -u localhost 8125 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)放在最后,指標就可以正常發布了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM