метрики для моего API на основе Джерси - PullRequest
6 голосов
/ 29 марта 2012

Я пытаюсь оснастить свой веб-сервис на Джерси Метриками

http://metrics.codahale.com/manual/jersey/

Я не понимаю, как использовать эту библиотеку? Нужно ли что-то добавить в мой файл web.xml?

Спасибо

Ответы [ 3 ]

4 голосов
/ 02 апреля 2012

Чтобы задействовать свой веб-сервис на Джерси, вы должны добавить в приложение модуль metrics-jersey , он содержит класс реализации @Provider (убедитесь, что Джерси его нашел), который позволит вам использовать ресурсы своего Джерси методы с аннотациями @Timed, Metered и ExceptionMetered.

По умолчанию Metrics отчитывается через JMX, поэтому вы можете использовать JConsole для проверки ваших контрольно-измерительных приборов. Как писал Алекс, есть и другие варианты отчетов, но для этого требуется дополнительная настройка или код (вызов метода enable в Reporter). Например, вы можете получать отчеты в JSON по HTTP или же веб-служба отправляет отчеты на сервер мониторинга, такой как Graphite.

0 голосов
/ 30 сентября 2015

Бросай белье и начинай улыбаться.Я получил это работает!

  1. Подключите сервлет.Вам нужно общее место для создания и хранения метрик.Создайте один из них для MetricsRegistry и HealthCheckRegistry:

    public class MetricsServletContextListener extends MetricsServlet.ContextListener {
        public static final MetricRegistry METRIC_REGISTRY = new MetricRegistry();
    
        @Override
        protected MetricRegistry getMetricRegistry() {
            return METRIC_REGISTRY;
        }
    }
    
  2. Установите контекст сервлета с данными в некоторой области запуска:

    sc.getServletContext().setAttribute(
        "com.codahale.metrics.servlets.HealthCheckServlet.registry", 
        healthChecks
    );
    sc.getServletContext().setAttribute(
        "com.codahale.metrics.servlets.MetricsServlet.registry", 
        MetricsServletContextListener.METRIC_REGISTRY
    );
    
  3. URL-адрес: http://blah/blah/metrics/metrics?pretty=true

  4. Создайте одного из этих парней.Это соединяет метрики с Джерси:

     @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);
         }
     }
    
  5. Расскажите об этом Джерси.Поскольку он использует аннотацию @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>
    
  6. И добавить аннотацию @Timed к конечной точке вашего джерси.

0 голосов
/ 29 марта 2012

Как я вижу, вам просто нужно включить metrics lib в путь сборки. В методах веб-сервисов вы просто используете аннотацию @ Timed.

Чтобы увидеть отчеты, вы должны включить понравившийся стиль отчетности - reporters

...