【问题标题】:Annotations in grails with Dropwizard metrics not working带有 Dropwizard 指标的 grails 中的注释不起作用
【发布时间】:2016-03-01 08:43:43
【问题描述】:

我正在为带有注释的 grails 应用程序配置 dropwizard 指标。使用 metrics-aspectj 插件 (https://github.com/astefanutti/metrics-aspectj)

我在`BuildConfig.groovy'中有以下内容

compile 'io.astefanutti.metrics.aspectj:metrics-aspectj:1.1.0'
compile 'io.dropwizard.metrics:metrics-core:3.1.0'
compile 'io.dropwizard.metrics:metrics-graphite:3.1.2'
compile 'io.dropwizard.metrics:metrics-annotation:3.1.2'

我正在尝试将数据发布到Graphite 服务器,在本地运行。 我用石墨报告器配置了一个控制器,如下所示。当我运行应用程序时它不会报告任何内容,我试图找出我哪里出错了,或者如果有另一种方法(例如使用 spring AOP)请告诉我

import com.codahale.metrics.ConsoleReporter
import com.codahale.metrics.MetricFilter
import com.codahale.metrics.MetricRegistry
import com.codahale.metrics.SharedMetricRegistries
import com.codahale.metrics.annotation.Metered
import com.codahale.metrics.annotation.Timed
import com.codahale.metrics.graphite.Graphite
import com.codahale.metrics.graphite.GraphiteReporter
import io.astefanutti.metrics.aspectj.Metrics

import java.util.concurrent.TimeUnit

@Metrics(registry = "graphiteregistry2")
class GlassdoorController {


    final MetricRegistry registry = new MetricRegistry();

    GlassdoorController() {

        final Graphite graphite = new Graphite(new InetSocketAddress("127.0.0.1", 2003));

        final GraphiteReporter reporter = GraphiteReporter.forRegistry(registry)
                .prefixedWith("grails.example.com")
                .convertRatesTo(TimeUnit.SECONDS)
                .convertDurationsTo(TimeUnit.MILLISECONDS)
                .filter(MetricFilter.ALL)
                .build(graphite);
        reporter.start(1, TimeUnit.SECONDS);

        ConsoleReporter reporter1 = ConsoleReporter.forRegistry(registry)
                .convertRatesTo(TimeUnit.SECONDS)
                .convertDurationsTo(TimeUnit.MILLISECONDS)
                .build();
        reporter1.start(5, TimeUnit.SECONDS)

        SharedMetricRegistries.add("graphiteregistry2",registry);
        log.info(SharedMetricRegistries.getOrCreate("graphiteregistry2"));
    }

    @Metered(name  = "reviewspage")
    @Timed(name = "reviewspagetimed")
    def reviews() {

        //business logic

    }

【问题讨论】:

  • 你能看到 2003 年从应用程序传入的任何 tcpflow 数据吗?
  • AFAIF,ConsoleReporterGraphiteReporter 应该打印相同的数据,当ConsoleReporter 打印一些内容时我得到空行

标签: grails aop dropwizard metrics graphite


【解决方案1】:

查看您的代码,我发现了一个不同之处:

reporter.start(1, TimeUnit.SECONDS);
// ...
reporter1.start(5, TimeUnit.SECONDS)

这意味着您的 Graphite 报告器每秒触发一次,但控制台报告器仅每 5 秒触发一次。可能您的测试程序在这 5 秒结束之前就已经存在。因此,您可以在 main() 方法中添加 Thread.sleep(6000) 或减少控制台报告器的报告间隔以匹配 Graphite 报告器。我试过了,它有效。 ;-)

06.03.16 12:22:59 ==============================================================

-- Meters ----------------------------------------------------------------------
de.scrum_master.app.GlassdoorController.reviewspage
             count = 1
         mean rate = 0,20 events/second
     1-minute rate = 0,20 events/second
     5-minute rate = 0,20 events/second
    15-minute rate = 0,20 events/second

-- Timers ----------------------------------------------------------------------
de.scrum_master.app.GlassdoorController.reviewspagetimed
             count = 1
         mean rate = 0,20 calls/second
     1-minute rate = 0,20 calls/second
     5-minute rate = 0,20 calls/second
    15-minute rate = 0,20 calls/second
               min = 0,01 milliseconds
               max = 0,01 milliseconds
              mean = 0,01 milliseconds
            stddev = 0,00 milliseconds
            median = 0,01 milliseconds
              75% <= 0,01 milliseconds
              95% <= 0,01 milliseconds
              98% <= 0,01 milliseconds
              99% <= 0,01 milliseconds
            99.9% <= 0,01 milliseconds

【讨论】:

  • 你是否让它在 grails 中工作,我已经让它在纯 java 上工作,但在 grails 上没有,如果你让它在 grails 上工作,请告诉我
  • 我不使用 Grails,但可以使用纯 Java 重现症状。您是否调查过长​​时间跨度是否可能是问题所在?我无法想象如果它与 Graphite 一起工作但不能在控制台上工作,Gradle 或 Groovy 应该是问题所在。我怀疑问题出在键盘前面。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-20
  • 2017-08-08
相关资源
最近更新 更多