Ответ 1
Dropwizard, используя библиотеку Metrics для всех своих показателей. Metric начало раздела содержит все необходимое, чтобы начать добавлять свои собственные.
Как мне добавить добавление настраиваемых показателей в материал по умолчанию, который Dropwizard предоставляет на порт администратора (8081)? Я не могу найти ничего в документации, кроме добавления проверок работоспособности. Я бы очень хотел включить некоторые статистические данные, извлеченные из MongoDB, и скорее сохранил бы его с ресурсами администратора на 8081, чем создать страницу пользовательских показателей на порту 8080.
Dropwizard, используя библиотеку Metrics для всех своих показателей. Metric начало раздела содержит все необходимое, чтобы начать добавлять свои собственные.
Вот пример. Каждая метрика в этом экземпляре jvm отображается через JMX. Вы также можете регистрировать метрических репортеров, которые будут делать то, что нравится дампу всех метрик для входа в журнал на интервал, или отправить графит на интервал.
//this creates or returns the metrics, basically every metric is only created once and registered in a registry
private final Timer timerCanMakeHold =
Metrics.newTimer(MyClass.class, "METRICNAME", TimeUnit.MILLISECONDS, TimeUnit.SECONDS);
final TimerContext timerContex = timerCanMakeHold.time();
try{
doSomeWork()//this is what you are timing
}finally{
timerContex.stop();
}
Я не тестировал его, но, возможно, это могло бы помочь:
final Graphite graphite = new Graphite(new InetSocketAddress("graphite.url.example", 2003));
MetricRegistry metrics = new MetricRegistry();
GraphiteReporter reporter = GraphiteReporter.forRegistry(metrics)
.convertRatesTo(TimeUnit.SECONDS)
.convertDurationsTo(TimeUnit.MILLISECONDS)
.build(graphite);
reporter.start(1, TimeUnit.SECONDS);
Counter counter = metrics.counter("nameOfCounter");
counter.inc();
Для плюща вы должны добавить это в свой ivy.xml:
<dependency org="io.dropwizard" name="dropwizard-metrics" rev="0.7.1"/>
<dependency org="io.dropwizard" name="dropwizard-metrics-graphite" rev="0.7.1"/>
Если вы поместите это в свой config.yml,
metrics:
reporters:
- type: console
timeZone: UTC
output: stdout
durationUnit: milliseconds
rateUnit: seconds
frequency: 120 seconds
- type: graphite
host: localhost
port: 9090
prefix: test.prefix
вы также можете вызвать MetricsFactory в своем методе запуска:
MetricRegistry metrics = new MetricRegistry();
MetricsFactory mfac = configuration.getMetricsFactory();
mfac.configure(environment.lifecycle(), metrics);
Counter counter = metrics.counter("nameOfCounter");
counter.inc();
counter.inc();
counter.inc();
counter.inc();
counter.inc();
Если вы создаете свой собственный прослушиватель сокетов, вы можете видеть эту строку, входящую каждые xxx секунд:
test.prefix.nameOfCounter.count 5 1411562372
Если вы хотите, чтобы ваши показатели отображались с сервлетом показателей, включенным в ваш проект Dropwizard, вы должны использовать тот же объект MetricRegistry, что и сервлет, и регистрировать в нем свои показатели.
Вы можете получить правильный экземпляр MetricRegistry из среды в вашем приложении; или из объекта Bootstrap, который был передан его методу initilaize во время запуска.
В документации Dropwizard не упоминается область действия MetricRegistry и объектов, которые она содержит. Это означает, что вы просто создаете свой собственный MetricRegistry. Это будет отлично работать для самостоятельного приложения "начало работы", но документ посвящен добавлению показателей к существующему приложению Dropwizard, а не к новому автономному приложению.