jersey支持的api的指标

jersey支持的api的指标,jersey,metrics,Jersey,Metrics,我尝试用度量来检测我的Jersey Web服务 我不知道如何使用这个图书馆? 我需要在web.xml文件中添加一些内容吗 谢谢正如我所看到的,您只需要将度量库包含到构建路径中。在web服务方法上,您只需使用annotation@Timed 要查看报告,您必须启用您喜欢的报告样式-要插入Jersey web服务,您必须将模块添加到应用程序中,它包含@Provider实现类(确保Jersey找到它),允许您插入带有@Timed、Metered和ExceptionMetered注释的Jersey r

我尝试用度量来检测我的Jersey Web服务

我不知道如何使用这个图书馆? 我需要在web.xml文件中添加一些内容吗


谢谢

正如我所看到的,您只需要将
度量
库包含到构建路径中。在web服务方法上,您只需使用annotation@Timed


要查看报告,您必须启用您喜欢的报告样式-

要插入Jersey web服务,您必须将模块添加到应用程序中,它包含@Provider实现类(确保Jersey找到它),允许您插入带有@Timed、Metered和ExceptionMetered注释的Jersey resources方法

默认情况下,度量通过JMX报告,因此您可以使用JConsole来验证您的检测。 正如Alex所写,还有其他报告选项,但它需要额外的配置或代码(在报告器上调用
enable
method)。
例如,您可以在中获取报告,或者让您的Web服务将报告发送到Graphite之类的监控服务器。

放下亚麻布,开始您的微笑。我让它工作了

  • 连接servlet。您需要一个通用点来创建和存储度量。为
    MetricsRegistry
    HealthCheckRegistry
    构建其中一个:

    public class MetricsServletContextListener extends MetricsServlet.ContextListener {
        public static final MetricRegistry METRIC_REGISTRY = new MetricRegistry();
    
        @Override
        protected MetricRegistry getMetricRegistry() {
            return METRIC_REGISTRY;
        }
    }
    
  • 在某些启动区域使用数据设置servlet上下文:

    sc.getServletContext().setAttribute(
        "com.codahale.metrics.servlets.HealthCheckServlet.registry", 
        healthChecks
    );
    sc.getServletContext().setAttribute(
        "com.codahale.metrics.servlets.MetricsServlet.registry", 
        MetricsServletContextListener.METRIC_REGISTRY
    );
    
  • 网址是:

  • 创造一个这样的人。这将指标与Jersey挂钩:

     @Provider
     public class TmaticInstrumentedResourceMethodDispatchAdapterWrapper implements ResourceMethodDispatchAdapter {
    
         private InstrumentedResourceMethodDispatchAdapter adapter = null;
    
         public TmaticInstrumentedResourceMethodDispatchAdapterWrapper() {
             adapter = new InstrumentedResourceMethodDispatchAdapter(MetricsServletContextListener.METRIC_REGISTRY);
         }
    
         @Override
         public ResourceMethodDispatchProvider adapt(ResourceMethodDispatchProvider provider) {
             return adapter.adapt(provider);
         }
     }
    
  • 告诉泽西。因为它使用@Provider注释,所以它必须位于可以扫描它的区域中。我必须在此处将我的添加到web.xml,但您可能不必:

    <init-param>
        <param-name>com.sun.jersey.config.property.packages</param-name>
        <param-value>blah.endpoint,blah.utils</param-value>
    </init-param>
    
    
    com.sun.jersey.config.property.packages
    等等。端点,等等
    
  • 并将注释
    @Timed
    添加到jersey端点


  • 是的,我想我理解同样的事情,但我在输出上看不到任何东西……你启用了console reporter吗?尝试console reporter以确保整个工作正常。使用console reporter,我在tomcat的日志文件中有一个输出,但没有任何指标,只有一行===个字符。thnik我错过了一些web.xml配置,但不确定它是否能正常工作,但这并不容易,我必须在web.xml中为init param com.sun.jersey.config.property.packages添加包com.yammer.metrics.jersey,然后我添加了servlet,我有一个json输出和stats yay!@Provider的实现是什么?我们如何将它连接起来?