2017-06-07 10 views
1

私たちにはリソース設定の設定ではなく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で全く異なるものと呼ばれるデータですか?

答えて

0

問題は、この行で指定されたソケットが正しくなかったということでしたが、ソケットを見つけるための唯一の方法は、netstatコマンドを使用していた、それは私の場合は22033になってしまっ:

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

これは、指定されている可能性がありますグラファイト内のいくつかのファイルでは、私はそれがすべてのドキュメントに記載されて見つけることができませんでした。

関連する問題