之前在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. Highcharts 多个Y轴动态刷新数据

    效果图: js代码: $(function() { $(document).ready(function() { Highcharts.setOptions({ global: { useUTC: f ...

  2. jquery开发的”天才笨笨碰“游戏

    前段时间湖南卫视的快乐大本营里有一款“天才笨笨碰”游戏非常火.这款游戏主要是考选手的声母联想词语的能力. 小篇在看完这个节目后用jquery制作了“天才笨笨碰”网页游戏.先上效果图: 游戏规则: 1. ...

  3. js使用正则替换掉所有的“”

    需求,使用bootstrap 的 summernote上传图片,转换成文件流,上传给后台,上传用json传送,不能有“” content = content.replace(/\"/ig,& ...

  4. RecyclerView 输出的和排版的不一样

    遇到过这样一种情况,就是RecyclerView加载出来的和看到Android Studio里的不一样 原因是: @Override public ViewHolder onCreateViewHol ...

  5. C#2.0 Socket套接字编程之实例初探 200

    首先从原理上解释一下采用Socket接口的网络通讯,这里以最常用的C/S模式作为范例,首先,服务端有一个进程(或多个进程)在指定的端口等待客户来连接,服务程序等待客户的连接信息,一旦连接上之后,就可以 ...

  6. VBA中数据库导出数据到Excel注意事项

    Sub ReadDBData() On Error GoTo ErrorHand Dim dbHelper As New dbHelper Dim sqlSQL As String Dim rs As ...

  7. CentOS防SYN攻击

    netstat -anp |awk '{print $6}'|sort|uniq -c |sort -rn 172 ESTABLISHED 59 CONNECTED 589 SYN_RECV 15 S ...

  8. Git 环境设置(安装)

    在使用Git之前,必须安装它,并做一些基本配置的变化.下面是步骤在Ubuntu和CentOS Linux安装 Git 客户端. Git客户端安装 如果使用的是GNU/ Linux 发行版Debian基 ...

  9. 详解Github的.gitignore忽略文件+.gitignore不生效解决方案+生产配置大奉送

    详解Github的.gitignore忽略文件+.gitignore不生效解决方案+生产配置大奉送 Git中有一个非常重要的一个文件-----.gitignore 今天给大家免费送一个.gitigno ...

  10. apk签名打包时报master password is required to unlock the password database.错误,或者signtrue versions无法勾选,以及Error:Execution failed for task ':app:lintVitalRelease'.

    1.如果在签名时android studio报"Master password is required to unlock the password database.The passwor ...