metrics的简单介绍

metrics是一种性能指标工具,有很多开源工具使用之来来作为其性能监控,如Hadoop,Kafka,Spark,JStorm等。

metrics使用最主要有三个东西:

  1. Metric Registries
  2. Metrics 度量指标的类型
  3. Metrics Report 数据展示方案

metricsRegistry

MetricRegistry类是Metrics的核心,它是存放应用中所有metrics的容器。也是我们使用 Metrics 库的起点。

每一个 metric 都有它独一无二的名字,Metrics 中使用句点名字,如 com.example.Queue.size。当你在 com.example.Queue 下有两个 metric 实例,可以指定地更具体:com.example.Queue.requests.size 和 com.example.Queue.response.size 。使用MetricRegistry类,可以非常方便地生成名字。

五种Metrics类型

guages

最简单的度量指标,只有一个简单的返回值,或者叫瞬时状态,例如,我们想衡量一个待处理队列中任务的个数。

Counters

Counter 就是计数器,Counter 只是用 Gauge 封装了 AtomicLong 。

Meters

Meter度量一系列事件发生的速率(rate),例如TPS。Meters会统计最近1分钟,5分钟,15分钟,还有全部时间的速率。

Histograms

Histogram统计数据的分布情况。比如最小值,最大值,中间值,还有中位数,75百分位, 90百分位, 95百分位, 98百分位, 99百分位, 和 99.9百分位的值(percentiles)。

Timers

Timer其实是 Histogram 和 Meter 的结合, histogram 某部分代码/调用的耗时, meter统计TPS。

怎么使用暂时不给出代码了,先来看看如何统计接口的tps

Metrics Report

metrics提供了丰富的Report,如JMX、Console、CSV、SLF4J以及图形、HTTP等等

统计接口tps

我采取的办法是使用spring的interceptor与Meters ,Report使用的是ConsoleReport,代码如下

package lew.bing.exp.spr;

import com.codahale.metrics.ConsoleReporter;
import com.codahale.metrics.Meter;
import com.codahale.metrics.Metric;
import com.codahale.metrics.MetricRegistry;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit; /**
* Created by 刘国兵 on 2018/7/14.
*/
public class MetricsInterceptor implements HandlerInterceptor { private Map<String,Meter> metricMap = new HashMap<>();
private MetricRegistry metrics = new MetricRegistry(); public MetricsInterceptor() {
metricMap.put("/",metrics.meter("/"));
ConsoleReporter reporter = ConsoleReporter.forRegistry(metrics)
.convertRatesTo(TimeUnit.SECONDS)
.convertDurationsTo(TimeUnit.MILLISECONDS)
.build();
reporter.start(1, TimeUnit.SECONDS);// 1s报道一次
} @Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String servletPath = request.getServletPath();
if (metricMap.containsKey(servletPath)) {
metricMap.get(servletPath).mark();// 统计tps
}
return true;
} @Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
} @Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
// 可以统计失败以及成功次数
}
}

连续点击浏览器请求接口,控制台打印如下:

18-7-14 18:36:08 ===============================================================

-- Meters ----------------------------------------------------------------------
/
count = 3
mean rate = 0.60 events/second
1-minute rate = 0.60 events/second
5-minute rate = 0.60 events/second
15-minute rate = 0.60 events/second 18-7-14 18:36:09 =============================================================== -- Meters ----------------------------------------------------------------------
/
count = 10
mean rate = 1.67 events/second
1-minute rate = 0.60 events/second
5-minute rate = 0.60 events/second
15-minute rate = 0.60 events/second 18-7-14 18:36:10 =============================================================== -- Meters ----------------------------------------------------------------------
/
count = 15
mean rate = 2.14 events/second
1-minute rate = 0.60 events/second
5-minute rate = 0.60 events/second
15-minute rate = 0.60 events/second 18-7-14 18:36:11 =============================================================== -- Meters ----------------------------------------------------------------------
/
count = 21
mean rate = 2.62 events/second
1-minute rate = 0.60 events/second
5-minute rate = 0.60 events/second
15-minute rate = 0.60 events/second 18-7-14 18:36:12 =============================================================== -- Meters ----------------------------------------------------------------------
/
count = 27
mean rate = 3.00 events/second
1-minute rate = 0.60 events/second
5-minute rate = 0.60 events/second
15-minute rate = 0.60 events/second 18-7-14 18:36:13 =============================================================== -- Meters ----------------------------------------------------------------------
/
count = 33
mean rate = 3.30 events/second
1-minute rate = 1.03 events/second
5-minute rate = 0.69 events/second
15-minute rate = 0.63 events/second 18-7-14 18:36:14 =============================================================== -- Meters ----------------------------------------------------------------------
/
count = 38
mean rate = 3.45 events/second
1-minute rate = 1.03 events/second
5-minute rate = 0.69 events/second
15-minute rate = 0.63 events/second 18-7-14 18:36:15 =============================================================== -- Meters ----------------------------------------------------------------------
/
count = 44
mean rate = 3.66 events/second
1-minute rate = 1.03 events/second
5-minute rate = 0.69 events/second
15-minute rate = 0.63 events/second 18-7-14 18:36:16 =============================================================== -- Meters ----------------------------------------------------------------------
/
count = 50
mean rate = 3.84 events/second
1-minute rate = 1.03 events/second
5-minute rate = 0.69 events/second
15-minute rate = 0.63 events/second 18-7-14 18:36:17 =============================================================== -- Meters ----------------------------------------------------------------------
/
count = 55
mean rate = 3.93 events/second
1-minute rate = 1.03 events/second
5-minute rate = 0.69 events/second
15-minute rate = 0.63 events/second 18-7-14 18:36:18 =============================================================== -- Meters ----------------------------------------------------------------------
/
count = 61
mean rate = 4.06 events/second
1-minute rate = 1.40 events/second
5-minute rate = 0.77 events/second
15-minute rate = 0.66 events/second 18-7-14 18:36:19 =============================================================== -- Meters ----------------------------------------------------------------------
/
count = 67
mean rate = 4.19 events/second
1-minute rate = 1.40 events/second
5-minute rate = 0.77 events/second
15-minute rate = 0.66 events/second 18-7-14 18:36:20 =============================================================== -- Meters ----------------------------------------------------------------------
/
count = 72
mean rate = 4.23 events/second
1-minute rate = 1.40 events/second
5-minute rate = 0.77 events/second
15-minute rate = 0.66 events/second 18-7-14 18:36:21 =============================================================== -- Meters ----------------------------------------------------------------------
/
count = 78
mean rate = 4.33 events/second
1-minute rate = 1.40 events/second
5-minute rate = 0.77 events/second
15-minute rate = 0.66 events/second 18-7-14 18:36:22 =============================================================== -- Meters ----------------------------------------------------------------------
/
count = 83
mean rate = 4.37 events/second
1-minute rate = 1.40 events/second
5-minute rate = 0.77 events/second
15-minute rate = 0.66 events/second 18-7-14 18:36:23 =============================================================== -- Meters ----------------------------------------------------------------------
/
count = 89
mean rate = 4.45 events/second
1-minute rate = 1.73 events/second
5-minute rate = 0.85 events/second
15-minute rate = 0.68 events/second 18-7-14 18:36:24 =============================================================== -- Meters ----------------------------------------------------------------------
/
count = 92
mean rate = 4.38 events/second
1-minute rate = 1.73 events/second
5-minute rate = 0.85 events/second
15-minute rate = 0.68 events/second 18-7-14 18:36:25 =============================================================== -- Meters ----------------------------------------------------------------------
/
count = 92
mean rate = 4.18 events/second
1-minute rate = 1.73 events/second
5-minute rate = 0.85 events/second
15-minute rate = 0.68 events/second 18-7-14 18:36:26 =============================================================== -- Meters ----------------------------------------------------------------------
/
count = 92
mean rate = 4.00 events/second
1-minute rate = 1.73 events/second
5-minute rate = 0.85 events/second
15-minute rate = 0.68 events/second 18-7-14 18:36:27 =============================================================== -- Meters ----------------------------------------------------------------------
/
count = 92
mean rate = 3.83 events/second
1-minute rate = 1.73 events/second
5-minute rate = 0.85 events/second
15-minute rate = 0.68 events/second 18-7-14 18:36:28 =============================================================== -- Meters ----------------------------------------------------------------------
/
count = 92
mean rate = 3.68 events/second
1-minute rate = 1.64 events/second
5-minute rate = 0.85 events/second
15-minute rate = 0.68 events/second 18-7-14 18:36:29 =============================================================== -- Meters ----------------------------------------------------------------------
/
count = 92
mean rate = 3.54 events/second
1-minute rate = 1.64 events/second
5-minute rate = 0.85 events/second
15-minute rate = 0.68 events/second 18-7-14 18:36:30 =============================================================== -- Meters ----------------------------------------------------------------------
/
count = 92
mean rate = 3.41 events/second
1-minute rate = 1.64 events/second
5-minute rate = 0.85 events/second
15-minute rate = 0.68 events/second 18-7-14 18:36:31 =============================================================== -- Meters ----------------------------------------------------------------------
/
count = 92
mean rate = 3.29 events/second
1-minute rate = 1.64 events/second
5-minute rate = 0.85 events/second
15-minute rate = 0.68 events/second 18-7-14 18:36:32 =============================================================== -- Meters ----------------------------------------------------------------------
/
count = 92
mean rate = 3.17 events/second
1-minute rate = 1.64 events/second
5-minute rate = 0.85 events/second
15-minute rate = 0.68 events/second 18-7-14 18:36:33 =============================================================== -- Meters ----------------------------------------------------------------------
/
count = 92
mean rate = 3.07 events/second
1-minute rate = 1.51 events/second
5-minute rate = 0.83 events/second
15-minute rate = 0.68 events/second 18-7-14 18:36:34 =============================================================== -- Meters ----------------------------------------------------------------------
/
count = 92
mean rate = 2.97 events/second
1-minute rate = 1.51 events/second
5-minute rate = 0.83 events/second
15-minute rate = 0.68 events/second 18-7-14 18:36:35 =============================================================== -- Meters ----------------------------------------------------------------------
/
count = 92
mean rate = 2.87 events/second
1-minute rate = 1.51 events/second
5-minute rate = 0.83 events/second
15-minute rate = 0.68 events/second 18-7-14 18:36:36 =============================================================== -- Meters ----------------------------------------------------------------------
/
count = 92
mean rate = 2.79 events/second
1-minute rate = 1.51 events/second
5-minute rate = 0.83 events/second
15-minute rate = 0.68 events/second 18-7-14 18:36:37 =============================================================== -- Meters ----------------------------------------------------------------------
/
count = 92
mean rate = 2.71 events/second
1-minute rate = 1.51 events/second
5-minute rate = 0.83 events/second
15-minute rate = 0.68 events/second 18-7-14 18:36:38 =============================================================== -- Meters ----------------------------------------------------------------------
/
count = 92
mean rate = 2.63 events/second
1-minute rate = 1.39 events/second
5-minute rate = 0.82 events/second
15-minute rate = 0.68 events/second

简单的使用metrics统计tps就介绍到这,metrics还有健康检查,可以用来检测连接数据库是否可用等,感兴趣的同学可以多了解了解。

作者:247609107a39
链接:https://www.jianshu.com/p/f9b911a651ff
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

使用metrics统计接口tps的更多相关文章

  1. 使用awk根据多维度统计系统tps

    业务简单日志格式: [2017-08-28 01:00:00.523]transfer_search,7001045,1708271100083774377,20170827,,,,,,,,,,001 ...

  2. 齐博x1万能数据统计接口

    为何叫万能数据统计接口呢?因为可以调用全站任何数据表的数据总条数,并且可以设置查询条件http://qb.net/index.php/index/wxapp.count.html?table=memb ...

  3. 通信统计接口字段填充内容shell脚本

    现在通信行业上班,最麻烦的就是计算各个协议接口字段填充的内容是否正确.经历了小白似的一个个字段统计在到单个接口所有字段统计,然后到现在的多个接口一次统计.在大大节省了时间的同时,让自己有更充足的时间来 ...

  4. nginx 日志统计接口每个小时访问量

    指定时间段增量统计nginx日志不同接口的访问量: #!/bin/bash#此脚本用于统计nginx日志当前时间15分钟之内不同接口(URL)的访问量统计LOG=/usr/local/nginx/lo ...

  5. awk 按小时 统计接口调用次数

    #统计所有接口总量awk -F ' ' '{a[$7]++} END{for(i in a){print i,a[i] | "sort -r -k 7"}}' accesslog/ ...

  6. 从线上日志统计接口访问量QPS

    这一阵子在面试,连续遇到好几家(大小厂都有)问我的项目线上qps的情况了,说实话,我作为一个大头兵,本来没关注过这个数据,只能含混地给个"大概.也许"的回答. 回来之后,我决定对业 ...

  7. 百度统计接口demo中错误

    百度统计接口中的demo(PHP版本)下载下来配置后运行出错,应该是编写demo时用的php版本比较低吧,作如下几处修改就好了 一:把CURLOPT_SSL_VERIFYHOST的值改为2,因为1版本 ...

  8. springMVC Aspect AOP 接口耗时统计

    在接口开发中,我们通常需要统计接口耗时,为后续接口性能做统计.在springMVC中可以用它的aop来记录日志. 1.在spring配置文件中开启AOP <!--*************** ...

  9. 在网页中运用统计Web Service接口

    (2017-02-10 银河统计) 在"统计随机数及临界值Web Service接口"一文中介绍了常用统计分布四类Web Service接口(随机数.分位数.密度函数和累积分布函数 ...

随机推荐

  1. Eclispe最常用的几个快捷键

    熟练使用快捷键可以在很大程度上提高我们的工作效率,Eclipse的快捷键很多,但是常用的也就那么几个,下面说下Eclispe最常用的几个快捷键: Eclipse的快捷键组合可在Eclipse按下ctr ...

  2. xcode代码提示没了

    defaults write com.apple.dt.XCode IDEIndexDisable 0 https://www.jianshu.com/p/57a14bed9d1b

  3. PostgreSQL 自动输入密码(转)

    原文:https://www.cnblogs.com/litmmp/p/5122534.html 在 Shell 命令行中,使用 postgresql-client 连接 PostgreSQL 数据库 ...

  4. 消息摘要、哈希(hash)、加盐

    hashlib 算法介绍: python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 什么是摘要算法呢?摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度 ...

  5. SybaseIQ上SQL基本使用

    锁定: sp_iqlocks 踢人: 存储过程查找: sybase central里面查询的命令(查找过滤器例如:%table%),Sybase Central/Sybase IQ 15/服务器/xx ...

  6. python frist lesson

    1.print("") 代表打印字符段 2.name2 = name ,然后改变name的赋值,name2的值还是以前name的值,说明name2指向的是内存中name的赋值. 3 ...

  7. iOS UI基础-21 WKWebView

    WKWebView,直接显示网页,需要引入第三方类:https://github.com/marcuswestin/WebViewJavascriptBridge 加上进度条代码,很完美使用 webV ...

  8. UML第一次作业

    一. 用例图:用例图(usecase diagram)是UML用于描述软件功能的图形.用例图包括用例.参与者及其关系,用例图也可以包括注释和约束.程序员要画时序图啥的用其他的比较麻烦,用plantum ...

  9. 使用 Unity 3D 开发游戏的架构设计难点

    Unity 3D 引擎对于开发者来说,入手非常快,因为它采用的是 C# 作为开发语言,这也大大降低了开发者的门槛.但凡只要懂一门编程语言的人都能使用 Unity 3D 引擎开发,另外 Unity 3D ...

  10. 第三章 jQuery事件和动画

    1.什么是事件:事件指的是用于对网页操作的时候,网页做出的一个回应. 2.JQuery中的事件:JQuery事件是对JavaScript事件的封装,常用事件的分类如下:(1)基础事件:window事件 ...