私たちにはリソース設定の設定ではなくweb.xml設定でJerseyで作成された複数のAPIエンドポイントがあります。 すべての異なる応答コードを含む各エンドポイントのすべての要求のメトリックをキャプチャして表示する必要があります。 これまでは、InstrumentedFilterContextListenerを拡張し、その中にGraphiteレポーターを持つクラスを作成しました。GraphiteのDropwizardメトリック
<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>
したがって、上記の設定と私はグラファイトダッシュボードにいくつかの情報を取得しています下のクラスで:
私は、報告作業を取得するには、以下のブロックを追加したweb.xmlに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;
}
}
私の問題は、大部分がマシン関連のメトリック、CPU、メモリなどで、キャプチャされていて、エンドポイントのOK、エラー、または見つからないリクエストの数などではないことです私はマップしました。 ConsoleReporterを追加することで、要求がリスナークラスによって取得されていることをテストしました。これにより、さまざまなリクエストの数が増えています。 私の質問は、最後に、どのようにGraphiteで同じMeterとTimerのデータをすべて表示するのでしょうか?私はこのデータを取得するために何か設定する必要があるか、何か別の設定があるのですか、または単にGraphiteで全く異なるものと呼ばれるデータですか?