使用metrics统计接口tps

摘要:
度量是一种性能指标工具。许多开源工具用于监控其性能,如Hadoop、Kafka、Spark、JStom等。这也是我们使用Metrics库的起点。每个度量都有其唯一的名称。度量使用句点名称,例如com。实例队列大小当您在com下有两个度量实例时。实例队列,您可以更具体地指定它们:com。实例队列请求。尺寸和组件。实例队列响应大小使用MetricRegistry类,可以轻松生成名称。MetersMeter测量一系列事件发生的速率,例如TPS。直方图分布。TimersTimer实际上是直方图和仪表的组合。仪表对直方图的某些代码/调用时间的TPS进行计数。

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》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Eclipse的Debug调试技巧spring security控制session下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

时序数据库InfluxDB使用详解

InfluxDB是一个开源的时序数据库,使用GO语言开发,特别适合用于处理和分析资源监控数据这种时序相关数据。而InfluxDB自带的各种特殊函数如求标准差,随机取样数据,统计数据变化比等,使数据统计和实时分析变得十分方便。在我们的容器资源监控系统中,就采用了InfluxDB存储cadvisor的监控数据。本文对InfluxDB的基本概念和一些特色功能...

unable to recognize "*.yaml": no matches for kind "RoleBinding" in version "rbac.authorization.k8s.io/v1beta1"

问题的原因为资源文件的版本定义过期了。需要修改下 ┌──[root@vms81.liruilongs.github.io]-[~/ansible/metrics/deploy/1.8+] └─$kubectl apply -f . clusterrole.rbac.authorization.k8s.io/system:aggregated-metrics...

使用ast(抽象语法树)在代码中植入埋点

功能说明 在代码执行过程中收集一些日志,但是这个操作是与业务无关的,需要根据运行环境来决定 是否要执行这些操作, 一个解决办法: 在代码中加点儿收集日志的标记,比如“注释”,既不会对改变原有代码的结构又能实现功能, 入侵性比较低。 那就需要解释器能识别“注释”并翻译成代码执行了,比如对于以下代码: # -*- encoding: utf-8 -*- me...

Kubernetes 边缘节点抓不到监控指标?试试这个方法!

KubeSphere v3.1.0 通过集成 KubeEdge,将节点和资源的管理延伸到了边缘,也是 KubeSphere 正式支持边缘计算的第一个版本。 笔者也第一时间搭建和试用了边缘节点相关的功能,但是在边缘节点纳管之后遇到了一些监控的小问题,在排查过程中也顺带了解了一下 KubeSphere 对于边缘节点的监控原理,发出来和大家分享,方便其他的开发者...

逻辑回归模型预测股票涨跌

http://www.cnblogs.com/lafengdatascientist/p/5567038.html 逻辑回归模型预测股票涨跌 逻辑回归是一个分类器,其基本思想可以概括为:对于一个二分类(0~1)问题,若P(Y=1/X)>0.5则归为1类,若P(Y=1/X)<0.5,则归为0类。 一、模型概述 1、Sigmoid函数 为了具象化...

Cloudify基本介绍

介绍 Cloudify 是开源的云编排框架,管理应用的整个生命周期,主要功能包括: 应用编排:blueprint,部署和管理 应用维护:工作流,事件和日志管理 可插拔:使用插件垒起来的 标准:基于TOSCA的DSL(领域描述语言) 术语 blueprint:cloudify 用blueprint 来定义应用,blueprint 是应用的逻辑展示,包括...