Как правильно переключиться с метрик Dropwizard на микрометр?
У меня есть кусок старого кода, который использует метрики Codahale. Я хотел бы изменить его на микрометр. И я в порядке с переключением простых, у меня есть некоторые проблемы с воспроизведением функциональности некоторых специфических для Codahale объектов.
И я в порядке с переключением простых, у меня есть некоторые проблемы с воспроизведением функциональности некоторых специфических для Codahale объектов. Я не нашел удовлетворительного сравнения в этой области. Я опирался на документацию и статьи, но все равно не повезло. Я не знаю, возможно ли то, что я хочу сделать.
Например, как это будет выглядеть в микрометре?
final CachedGauge<T> g = new CachedGauge<T>(refreshPeriod, TimeUnit.SECONDS) {
@Override
protected T loadValue() {
try {
return provider.call();
} catch (Exception ex) {
throw new RuntimeException("Failed to get cached value for [" + name + "]", ex);
}
}
};
metricRegistry.register("gauge." + fullName, g);
или просто простая струнная мера?
Gauge<String> gauge;
или датчик соотношения?
RatioGauge ratioGauge = new AttendanceRatioGauge(15, 20);
когда я хочу сравнить два длинных значения, например?
1 ответ
Здесь есть 3 вопроса. Все с совершенно разными ответами.
Кэшированный датчик
В микрометре нет эквивалента для кэшированного датчика. Я рекомендую открыть вопрос, запрашивающий его. Это было бы хорошим дополнением. Я бы выступил за это. (Мне даже нужно что-то подобное самому)
Струнный датчик
Все метрики, которые производит микрометр, являются числовыми. Так что для случаев, когда вы хотите выставить строку, добавьте ее в качестве тега.
meterRegistry.gauge("app.version",Tags.of("version",myVersion), this, () -> 1.0)
Коэффициент отношения
Коэффициент отношения будет просто типичным, делая деление самостоятельно. В качестве альтернативы, вы можете представить источники отношений как их собственные счетчики и выполнить деление на стороне платформы метрик. Например, Прометей легко это поддерживает:
class_attendance/class_size