Метрики Dropwizard в графите

У нас есть несколько конечных точек API, созданных с помощью Jersey с настройкой web.xml, а не настройкой конфигурации ресурса. Мы хотим получать и отображать метрики для всех запросов для каждой конечной точки, включая все различные коды ответов. До сих пор я создал класс, который расширяет InstrumentedFilterContextListener и содержит репортер Graphite.

В web.xml я добавил следующие блоки, чтобы заставить работать отчет:

<listener>
    <listener-class>metrics.MyInstrumentedFilterContextListener</listener-class>
</listener>


<filter>
    <filter-name>testFilter</filter-name>
    <filter-class>com.codahale.metrics.servlet.InstrumentedFilter</filter-class>
    <init-param>
        <param-name>name-prefix</param-name>
        <param-value>testEndpoint</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>testFilter</filter-name>
    <url-pattern>/api/testEP1/*</url-pattern>
</filter-mapping>
enter code here

<filter>
    <filter-name>testFilter2</filter-name>
    <filter-class>com.codahale.metrics.servlet.InstrumentedFilter</filter-class>
    <init-param>
        <param-name>name-prefix</param-name>
        <param-value>testEndpoint2</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>testFilter2</filter-name>
    <url-pattern>/api/testEP2/*</url-pattern>
</filter-mapping>

Таким образом, с помощью вышеуказанного конфига и класса ниже я получаю некоторую информацию в Graphite Dashboard:

public class MyInstrumentedFilterContextListener extends InstrumentedFilterContextListener {
public static MetricRegistry METRIC_REGISTRY = new MetricRegistry();

static {

    final Graphite graphite = new Graphite(new InetSocketAddress("localhost", 8080));
    final GraphiteReporter reporter = GraphiteReporter.forRegistry(METRIC_REGISTRY)
            .prefixedWith("API.Metrics")
            .convertRatesTo(TimeUnit.SECONDS)
            .convertDurationsTo(TimeUnit.MILLISECONDS)

            .build(graphite);
    reporter.start(10, TimeUnit.SECONDS);
}

@Override
protected MetricRegistry getMetricRegistry() {
    return METRIC_REGISTRY;
}
}

Моя проблема на данный момент заключается в том, что из того, что я могу сказать, это в основном метрики, связанные с машиной, процессор, память и т. Д., Которые регистрируются, а не такие вещи, как количество запросов ok, error или not found для конечных точек, которые я сопоставил. Я проверил, что запросы прослушиваются моим классом слушателей, добавив также ConsoleReporter, чтобы я мог видеть увеличение всех подсчетов для разных запросов. Итак, мой вопрос, наконец, как мне увидеть все те же данные метра и таймера в графите? Есть ли какие-то дополнительные настройки, которые я должен установить, или что-то, чтобы получить эти данные, или данные просто называют что-то совершенно другое в Graphite?

1 ответ

Решение

Проблема заключалась в том, что сокет, указанный в этой строке, был неправильным, но единственный способ найти сокет состоял в том, чтобы использовать netstat, и в моем случае он оказался 22033:

final Graphite graphite = new Graphite(new InetSocketAddress("localhost", 8080));

Это могло быть указано в каком-то файле в графите, но я не нашел упоминания в какой-либо документации.

Другие вопросы по тегам