之前在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的功能包能够參考使用手冊

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

  1. 【Graphite】使用dropwizard.metrics向Graphite中写入指标项数据

    graphite 定时向Graphite中写入指标项数据,指标项模拟个数3000个 使用的类库 官方文档   dropwizard的github地址 Metric官方文档 metrics.dropwi ...

  2. 服务监控 | 彻底搞懂Dropwizard Metrics一篇就够了

    Metrics是一个提供服务性能检测工具的Java类库,它提供了功能强大的性能指标工具库用于度量生产环境中的各关键组件性能. 度量类型 Metrics提供了以下几种基本的度量类型: Gauge:用于提 ...

  3. Java Metrics工具介绍

    目录 简介 快速入门 Maven配置 MetricRegistry Gauge Meter Counter Histgram Timer Reporter 更多用法 参考资料 简介 Metric是一个 ...

  4. metrics实践 (metrics-spring)

    这里主要介绍metrics与spring集成的使用方式. 1  添加maven依赖 <dependency> <groupId>com.ryantenney.metrics&l ...

  5. Metrics

    系统开发到一定的阶段,线上的机器越来越多,就需要一些监控了,除了服务器的监控,业务方面也需要一些监控服务.Metrics作为一款监控指标的度量类库,提供了许多工具帮助开发者来完成自定义的监控工作. 举 ...

  6. 微服务监控之一:Metrics让微服务运行更透明

    摘要 让微服务运行状态清晰可见. 嘉宾演讲视频回顾及PPT:http://t.cn/R8b6i85 Metrics是什么 直译是“度量”,不同的领域定义有所区别,在微服务领域中的定义: “对微服务的某 ...

  7. HBase 监控 | HBase Metrics 初探(一)

    前言:对于任意一个系统而言,做好监控都是非常重要的,HBase也不例外.经常,我们会从JMX中获取相关指标来做展示.对HBase进行监控,那这些指标是怎么生成的呢?如果你想自定义自己的监控指标又该怎么 ...

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

    将metrics report给graphite(carbon-relay) 一.代码 1.pom.xml <!-- metrics-graphite --> <dependency ...

  9. 第三十五章 metrics(3)- codahale-metrics基本使用

    <!-- metrics --> <dependency> <groupId>io.dropwizard.metrics</groupId> <a ...

随机推荐

  1. HTML 学习笔记一

    一.学习HTML有什么用? 可以写网页,也就是网站上的一个页面. 二.HTML 代码是写给谁看的? HTML代码是给浏览器看的,当然,强大的人类也能看得懂,如果你觉得不累的话. 三.HTML的结构 & ...

  2. java基础篇---网络编程(UDP程序设计)

    UDP程序设计 在TCP的索引操作都必须建立可靠地连接,这样一来肯定会浪费大量的系统性能,为了减少这种开销,在网络中又提供了另外一种传输协议---UDP,不可靠的连接,这种协议在各个聊天工具中被广泛的 ...

  3. ubuntu 安装 mkfs.ubifs

    ubi 文件系统的制作需要 mkfs.ubifs 工具 但是又没有直接的 sudo apt-get install , 只能通过以下方式 sudo apt-get install mtd-utils

  4. [dts]AM4378的dts中配置和数据手册映射关系

    最近在设置AM4378 GPIO的时候产生了困惑 如何设置GPIO为output_pullup, output_pulldown, input_pullup, input_pulldown, high ...

  5. Go学习笔记 - 关于Java、Python、Go编程思想的不同

    ***看了两周七牛团队翻译的<Go语言程序设计>,基本上领略到了Go语言的魅力.学习一个语言,语法什么的任何人都是很容易学会,难就难在充分领略到这门编程语言的思想.*** ## 面向对象 ...

  6. sqoop 从sqlserver2008 导入数据到hadoop

    今天终于开始上手导入数据到hadoop了,哈哈,过程蛮崎岖的,和官方文档的还不太一样. OK,let's go!试验对象是我第一个名为ST_Statistics的一张表,我要把我表里的数据导入到hdf ...

  7. mongoDB 删除集合后,空间不释放

    mongoDB 删除集合后,空间不释放,添加新集合,没有重新利用之前删除集合所空出来的空间,也就是数据库大小只增不减. 方法有: 1.导出导入 dump & restore 2.修复数据库 r ...

  8. Should I expose asynchronous wrappers for synchronous methods?

    Lately I've received several questions along the lines of the following, which I typically summarize ...

  9. iOS 基础入门--Bull' Eye 小游戏 

      说明   Bull's Eye小游戏是http://www.raywenderlich.com/store/ios-apprentice里非常酷的入门demo 跟着该教程一步步做下来便有了 ...

  10. Linux的内存管理

    Linux的内存管理,实际上跟windows的内存管理有很相像的地方,都是用虚拟内存这个的概念,说到这里不得不骂MS,为什么在很多时候还有很大的物理内存的时候,却还是用到了pagefile. 所以才经 ...