11

Dropwizardが管理ポート(8081)で提供するデフォルトのものにカスタムメトリックを追加するにはどうすればよいですか?ヘルスチェックを追加する以外に、ドキュメントには何も見つかりません。MongoDBから取得したいくつかの統計情報を組み込みたいので、ポート8080でカスタムメトリックページを作成するよりも、8081の管理リソースに保持したいと思います。

4

4 に答える 4

5

Dropwizardは、すべてのメトリックにメトリックライブラリを使用しています。Metricの「はじめに」セクションには、独自の追加を開始するために必要なすべてのものがあります。

于 2013-03-26T13:17:03.517 に答える
4

これが例です。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();
        }
于 2013-04-17T21:08:32.763 に答える
4

Dropwizardプロジェクトに含まれているメトリクスサーブレットにメトリクスを表示する場合は、サーブレットが使用したものと同じMetricRegistryオブジェクトを使用して、メトリクスを登録する必要があります。

アプリケーションの環境から正しいMetricRegistryインスタンスを取得できます。または、起動時にinitilaizeメソッドに渡されたBootstrapオブジェクトから。

Dropwizardのドキュメントには、MetricRegistryのスコープとそれに含まれるオブジェクトについての記載がありません。これは、独自のMetricRegistryを作成することを意味します。これは、スタンドアロンの「はじめに」アプリケーションでは問題なく機能しますが、このドキュメントは、新しいスタンドアロンアプリケーションではなく、既存のDropwizardアプリケーションにメトリックを追加することに関するものです。

于 2016-07-18T23:33:25.227 に答える
3

私はそれをテストしていませんが、おそらくこれは役立つかもしれません:

    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の場合、これを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

runメソッドで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
于 2014-09-18T07:53:02.070 に答える