美文网首页
Dropwizard-Metric学习

Dropwizard-Metric学习

作者: 望山不是山 | 来源:发表于2018-12-25 11:05 被阅读0次

    Metrics 指标

    1.Meter TPS计算器

    meter是用来测量随时间推移的事件速率(例如:TPS、QPS)。这个指标能反应系统当前的处理能力,帮助我们判断资源是否已经不足。Meters本身是一个自增计数器。除了平均速率,meter还追踪了1、5和15分钟的移动平均值。
    应用运行的过程中,在console中反馈的信息:

    -- Meters ----------------------------------------------------------------------
    request
                 count = 21055
             mean rate = 133.35 events/second
         1-minute rate = 121.66 events/second
         5-minute rate = 36.99 events/second
        15-minute rate = 13.33 events/second
    

    Gauges 度量

    除了Metrics提供的几个度量类型,我们可以通过Gauges完成自定义的度量类型。比方说很简单的,我们想看我们缓存里面的数据大小,就可以自己定义一个Gauges。

    public class QueueManager {
        private final Queue queue;
    
        public QueueManager(MetricRegistry metrics, String name) {
            this.queue = new Queue();
            metrics.register(MetricRegistry.name(QueueManager.class, name, "size"),
                             new Gauge<Integer>() {
                                 @Override
                                 public Integer getValue() {
                                     return queue.size();
                                 }
                             });
        }
    }
    

    这样Metrics就会一直监控Queue的大小。

    Counter 计数器

    Counter的本质就是一个AtomicLong实例,可以增加或者减少值,可以用它来统计队列中Job的总数。

    private final Counter pendingJobs = metrics.counter(name(QueueManager.class, "pending-jobs"));
    
    public void addJob(Job job) {
        pendingJobs.inc();
        queue.offer(job);
    }
    
    public Job takeJob() {
        pendingJobs.dec();
        return queue.take();
    }
    

    Histogram 直方图数据

    直方图是一种非常常见的统计图表,Metrics通过这个Histogram这个度量类型提供了一些方便实时绘制直方图的数据。直方图度量流中的数据大小,例如

    private final Histogram responseSizes = metrics.histogram(name(RequestHandler.class, "response-sizes"));
    
    public void handleRequest(Request request, Response response) {
        // etc
        responseSizes.update(response.getContent().length);
    }
    

    直方图会度量reponses中的字节大小

    -- Histograms ------------------------------------------------------------------
    response-sizes
                 count = 21051
                   min = 0
                   max = 9
                  mean = 4.55
                stddev = 2.88
                median = 4.00
                  75% <= 7.00
                  95% <= 9.00
                  98% <= 9.00
                  99% <= 9.00
                99.9% <= 9.00
    

    Timer 计时器

    Timer是一个Meter和Histogram的组合。这个度量单位可以比较方便地统计请求的速率和处理时间。对于接口中调用的延迟等信息的统计就比较方便了。如果发现一个方法的RPS(请求速率)很低,而且平均的处理时间很长,那么这个方法八成出问题了。
    获取一个Timer

    @Bean
    public Timer responses(MetricRegistry metrics) {
        return metrics.timer("executeTime");
    }
    

    在需要统计信息的位置使用这样的代码:

    final Timer.Context context = responses.time();
    try {
        // handle request
    } finally {
        context.stop();
    }
    

    console中就会实时返回这个Timer的信息:

    -- Timers ----------------------------------------------------------------------
    executeTime
                 count = 21061
             mean rate = 133.39 calls/second
         1-minute rate = 122.22 calls/second
         5-minute rate = 37.11 calls/second
        15-minute rate = 13.37 calls/second
                   min = 0.00 milliseconds
                   max = 0.01 milliseconds
                  mean = 0.00 milliseconds
                stddev = 0.00 milliseconds
                median = 0.00 milliseconds
                  75% <= 0.00 milliseconds
                  95% <= 0.00 milliseconds
                  98% <= 0.00 milliseconds
                  99% <= 0.00 milliseconds
                99.9% <= 0.01 milliseconds
    

    数据流向图

    Referer

    dropwizard metric
    JVM上的实时监控类库

    相关文章

      网友评论

          本文标题:Dropwizard-Metric学习

          本文链接:https://www.haomeiwen.com/subject/xwpxlqtx.html