[英]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.