簡體   English   中英

度量標准報告自定義

[英]Metrics reporting customization

我們正在使用包含codehale的Metrics庫的dropwizard。 我想使用此庫來報告Java應用程序中的一些指標。 我們有一個自定義指標報告引擎,可以處理內部應用程序發出的指標,但希望指標具有特定的JSON格式。 使Metrics庫以自定義JSON格式報告指標的最佳方法是什么? 這是否需要對Metrics庫進行代碼更改? 或者我是否必須編寫自定義翻譯應用程序?

我在“指標”手冊或谷歌上找不到任何有關自定義報告的信息。 這也讓我想到“這首先是正確的做法嗎?”

歡迎任何建議/想法。 謝謝。

Metrics帶有metrics-json ,它為Jackson提供了兩個可重用的模塊。

這允許將所有度量標准類型和運行狀況檢查序列化為標准的,易於分析的JSON格式。

這是GitHub上的軟件包: https//github.com/dropwizard/metrics/tree/master/metrics-json

您還可以使用度量標准實例中的數據構建自己的JSON數據。

您可以通過HTTP或監視器發送JSON,以便將數據發送到指標引擎。

這是JsonSl4jReporter的一個例子

public class JsonSl4jReporter extends ScheduledReporter {

    private static final Logger logger = LoggerFactory.getLogger(JsonSl4jReporter.class);

    private final ObjectMapper  mapper;

    public static JsonSl4jReporter create(MetricRegistry registry) {
        return new JsonSl4jReporter(registry, MetricFilter.ALL, TimeUnit.SECONDS, TimeUnit.MILLISECONDS);
    }

    private JsonSl4jReporter(MetricRegistry registry, MetricFilter filter, TimeUnit rateUnit, TimeUnit durationUnit) {
        super(registry, "json-sl4j-reporter", filter, rateUnit, durationUnit);
        // from metrics-json
        MetricsModule metricsModule = new MetricsModule(rateUnit, durationUnit, false, filter);
        // jackson mapper
        mapper = new ObjectMapper().registerModule(metricsModule);
        mapper.enable(SerializationFeature.INDENT_OUTPUT);
    }

    @Override
    public void report(SortedMap<String, Gauge> gauges, SortedMap<String, Counter> counters, SortedMap<String, Histogram> histograms, SortedMap<String, Meter> meters, SortedMap<String, Timer> timers) {
        log(gauges);
        log(counters);
        log(histograms);
        log(meters);
        log(timers);
    }

    private void log(Map<String, ?> data){

        if(data.isEmpty()) return;

        try {
            String json = mapper.writeValueAsString(data);
            logger.debug(json);
        } catch (JsonProcessingException e) {
            logger.error(e);
        }
    }

}

如您所見,您只需使用metrics-json中的 MetricModul配置ObjectMapper

暫無
暫無

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

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