dropwizard metrics - 基本使用介绍

之前在healthcheck中介绍了怎样通过metrics lib往系统中增加一些简单的健康侦測。如今讲讲dropwizard metrics更重要的部分。记录系统的度量信息。

dropwizard提供了多种度量方式:最简单记数counter,复杂点的实用于计算时间分布的histogram,用于计算速率的meter,以及同一时候有histogram和meter功能的timer。有兴趣能够去看看实现细节,类非常少,非常easy读懂。

Metrics的报告方式和healthcheck非常相似。库自生提供的各种报告渠道。

也能够非常easy自己扩展。

Metrics提供了各种包,能够帮助简化开发。当中metrics-servlet能够直接把metrics和healthcheck的信息在web request里面展示出来。

接下来给个使用的样例。对Web应用的请求进行度量,然后通过AdminServlet获取metrics和healthcheck信息。

  • 在maven中导入须要的包
 <dependency>
            <groupId>io.dropwizard.metrics</groupId>
            <artifactId>metrics-core</artifactId>
            <version>${metrics.version}</version>
        </dependency>
        <dependency>
            <groupId>io.dropwizard.metrics</groupId>
            <artifactId>metrics-servlets</artifactId>
            <version>${metrics.version}</version>
        </dependency>
        <dependency>
            <groupId>io.dropwizard.metrics</groupId>
            <artifactId>metrics-json</artifactId>
            <version>${metrics.version}</version>
        </dependency>
        <dependency>
            <groupId>io.dropwizard.metrics</groupId>
            <artifactId>metrics-healthchecks</artifactId>
            <version>${metrics.version}</version>
        </dependency>
  • 创建用来注冊metrics和healtcheck的servlet
public class HealthCheckServletContextListener extends HealthCheckServlet.ContextListener{

    public static final HealthCheckRegistry HEALTH_CHECK_REGISTRY = new HealthCheckRegistry();

    @Override
    protected HealthCheckRegistry getHealthCheckRegistry() {
        return HEALTH_CHECK_REGISTRY;
    }
}
public class MetricsServletContextListener extends MetricsServlet.ContextListener {

    public static final MetricRegistry METRIC_REGISTRY = new MetricRegistry();

    @Override
    protected MetricRegistry getMetricRegistry() {
        return METRIC_REGISTRY;
    }

}
  • 在Spring Web action中创建timer。增加到MetricsServletContextListener的MetricRegistery中,对每一个方法開始调用time得到context,结束运行context.stop
    private final Timer executions = MetricsServletContextListener.METRIC_REGISTRY.timer(MetricRegistry.name(SignupController.class, "executions"));

    @Autowired
    private UserService userService;

    @RequestMapping(method = RequestMethod.POST)
    public String register(@Valid User user, BindingResult bindingResult, RedirectAttributes redirectAttributes) {
        final Timer.Context context = executions.time();
        if (bindingResult.hasErrors()) {
            redirectAttributes.addFlashAttribute("user", user);
            redirectAttributes.addFlashAttribute(BindingResult.MODEL_KEY_PREFIX + "user", bindingResult);
            context.stop();
            return "redirect:/";
        }
        try {
            userService.registerUser(user);
            redirectAttributes.addFlashAttribute("username", user.getUsername());
            return "redirect:/";
        } catch (UserExistsException e) {
            return "redirect:/";
        } finally {
            context.stop();
        }
    }
  • 在Web.xml中配置AdminServlet訪问路径,配置2个listener
    <listener>
        <listener-class>com.cloud.demo.HealthCheckServletContextListener </listener-class>
</listener>
<listener>
        <listener-class>com.cloud.demo.MetricsServletContextListener</listener-class>
</listener>
    <servlet>
        <servlet-name>metrics</servlet-name>
        <servlet-class>com.codahale.metrics.servlets.AdminServlet
        </servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>metrics</servlet-name>
        <url-pattern>/metrics/*</url-pattern>
    </servlet-mapping>

这样就能够通过/metrics/healthcheck或者/metrics/metrics查看系统度量数据。

记住:系统度量最重要的是要分析系统中须要什么样的度量信息。技术实现反而不是那么重要。

很多其它dropwizard的功能包能够參考使用手冊

时间: 2024-10-23 05:59:35

dropwizard metrics - 基本使用介绍的相关文章

dropwizard metrics - healthchecks

系统监控一直都是很重要的内容,可以让应用主动通知你系统现在的允许状况.Java世界里面dropwizard提供了系统监控的功能,个人觉得非常好用,主要分为2大块,一块是系统健康监控,一块是系统的运行度量统计.第一篇先介绍健康依赖. 首先在pom文件中加入metrics健康监控包依赖. <!-- metrics start --> <dependency> <groupId>io.dropwizard.metrics</groupId> <artifac

metrics/度量

新blog地址:http://hengyunabc.github.io/about-metrics/ 想要实现的功能 应用可以用少量的代码,实现统计某类数据的功能 统计的数据可以很方便地展示 metrics metrics,按字面意思是度量,指标. 举具体的例子来说,一个web服务器: - 一分钟内请求多少次? - 平均请求耗时多长? - 最长请求时间? - 某个方法的被调用次数,时长? 以缓存为例: - 平均查询缓存时间? - 缓存获取不命中的次数/比例? 以jvm为例: - GC的次数? -

第三十六章 metrics(4)- metrics-graphite

将metrics report给graphite(carbon-relay) 一.代码 1.pom.xml 1 <!-- metrics-graphite --> 2 <dependency> 3 <groupId>io.dropwizard.metrics</groupId> 4 <artifactId>metrics-graphite</artifactId> 5 </dependency> 依托于springboot

Dropwizard与Spring Boot比较

在这篇文章中我们将讨论的Java轻量级框架Dropwizard和Spring Boot的相似性和差异. 首先,这是一个选择自由和速度需要,无论你在Dropwizard和Spring Boot选择哪个,这两个框架自身都显得有点固执己见,他们都坚信约定优于配置,那么是如何固执呢?你会发现,在我们进行比较以后,它们每个都混入了第三方库包,大部分并不是核心功能需要而是出于集成需要.这种牺牲的好处是获得好的性能.下面图中使用白色显示依赖包. Spring的依赖 Spring Boot聚焦于Spring应用

SOA专题---Dropwizard与Spring Boot比较

在这篇文章中我们将讨论的Java轻量级框架Dropwizard和Spring Boot的相似性和差异. 首先,这是一个选择自由和速度需要,无论你在Dropwizard和Spring Boot选择哪个,这两个框架自身都显得有点固执己见,他们都坚信约定优于配置,那么是如何固执呢?你会发现,在我们进行比较以后,它们每个都混入了第三方库包,大部分并不是核心功能需要而是出于集成需要.这种牺牲的好处是获得好的性能.下面图中使用白色显示依赖包. Spring的依赖 Spring Boot聚焦于Spring应用

Java Metrics

Java Metrics Java Metrics是一个功能比较强大的java统计库,它的输出组件也很强大,帮我们做好了: 输出到Ganglia 输出到控制台 输出到JMX 输出Json 详细见:dropwizard.github.io/metrics/ 依赖 添加依赖,如gradle: compile "io.dropwizard.metrics:metrics-core:3.1.0" compile "io.dropwizard.metrics:metrics-gangl

Java程序监控---Metrics

概念 Metrics是一个给JAVA服务的各项指标提供度量工具的包,在JAVA代码中嵌入Metrics代码,可以方便的对业务代码的各个指标进行监控 目前最为流行的 metrics 库是来自 Coda Hale 的 dropwizard/metrics,该库被广泛地应用于各个知名的开源项目中.例如 Hadoop,Kafka,Spark,JStorm 中. 有一些优点: 提供了对Ehcache.Apache HttpClient.JDBI.Jersey.Jetty.Log4J.Logback.JVM

cassandra高级操作之JMX操作

需求场景 项目中有这么个需求:统计集群中各个节点的数据量存储大小,不是记录数. 一开始有点无头绪,后面查看cassandra官方文档看到Monitoring章节,里面说到:Cassandra中的指标使用Dropwizard Metrics库进行管理. 这些指标可以通过JMX查询,也可以使用多个内置和第三方报告插件推送到外部监控系统(Jconsole).那么数据量存储大小是不是也是cassandra的某项指标了? 带着疑问,我通过Jconsole看到了cassandra的一些指标(先启动cassa

MQTT---HiveMQ源码详解(一)概览

面向群体 想自己实现MQTT Broker的朋友 对现有开源的MQTT Broker或多或少有些不满意的朋友 简单介绍 HiveMQ是企业级MQTT Broker,提供高性能.高可用.高扩展.高安全性的企业级服务. 它是纯Java实现的. 官网地址:http://www.hivemq.com 基于它如上的描述,所以后续我们就是基于它的高性能.高可用.高扩展.高安全性这几个特点来分析它的源码. 注意:本篇源码都是基于HiveMQ 3.1.2版本源码讲解. 拓扑图 Single 多个客户端直接与Br