`
k19421
  • 浏览: 69968 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

spring集成dropwizard metrics

    博客分类:
  • java
阅读更多

dropwizard metrics是一个非常有用的监控工具

我用他来做远程接口的调用次数,响应时间监控,项目是基于spring的,怎么把metrics集成进来呢

话不多少,直接上代码

1、在pom.xml中添加依赖

        <dependency>
            <groupId>com.ryantenney.metrics</groupId>
            <artifactId>metrics-spring</artifactId>
            <version>3.1.3</version>
        </dependency>
        <dependency>
            <groupId>io.dropwizard.metrics</groupId>
            <artifactId>metrics-servlets</artifactId>
            <version>3.1.2</version>
        </dependency>

 2、添加一个spring的配置文件,让spring能读取到

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:metrics="http://www.ryantenney.com/schema/metrics"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                        http://www.springframework.org/schema/beans/spring-beans.xsd
                        http://www.ryantenney.com/schema/metrics
                        http://www.ryantenney.com/schema/metrics/metrics.xsd ">
    <!-- Creates a MetricRegistry bean -->
    <metrics:metric-registry id="metricRegistry" />

    <!-- Creates a HealthCheckRegistry bean (Optional) -->
    <metrics:health-check-registry id="health" />

    <!-- Registers BeanPostProcessors with Spring which proxy beans and capture metrics -->
    <!-- Include this once per context (once in the parent context and in any subcontexts) -->
    <metrics:annotation-driven metric-registry="metricRegistry" />

    <!-- 将registry注入到ServletContextAttribute中
         AdminServlet需要使用到这两个属性-->
    <bean
            class="org.springframework.web.context.support.ServletContextAttributeExporter">
        <property name="attributes">
            <map>
                <entry key="com.codahale.metrics.servlets.MetricsServlet.registry">
                    <ref bean="metricRegistry" />
                </entry>
                <entry key="com.codahale.metrics.servlets.HealthCheckServlet.registry">
                    <ref bean="health" />
                </entry>
            </map>
        </property>
    </bean>
</beans>

 3、在web.xml中添加servlet配置,方便通过servlet直接读取统计到的数据

<servlet>
        <servlet-name>AdminServlet</servlet-name>
        <servlet-class>com.codahale.metrics.servlets.AdminServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>AdminServlet</servlet-name>
        <url-pattern>/dropwizard/*</url-pattern>
    </servlet-mapping>

 4、在需要监控的方法上面加上类似@Timed的注解

5、打开浏览器,输入localhost:8080/dropwizard就可以看到一个监控菜单了

(网络有点扯淡,上传不了图片了)

6、默认他的方法耗时的单位是秒,执行频率是次/秒,如果需要修改成毫秒,次/分钟,需要在web.xml中添加如下配置

    <context-param>
        <param-name>com.codahale.metrics.servlets.MetricsServlet.durationUnit</param-name>
        <param-value>MILLISECONDS</param-value>
    </context-param>
    <context-param>
        <param-name>com.codahale.metrics.servlets.MetricsServlet.rateUnit</param-name>
        <param-value>MINUTES</param-value>
    </context-param>

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics