Metrics埋点监控

时间:2021-09-05
本文章向大家介绍Metrics埋点监控,主要包括Metrics埋点监控使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

Metrics埋点监控

在应用程序中,通常会记录日志以便事后分析,在很多情况下是产生了问题之后,再去查看日志,是一种事后的静态分析。在很多时候,我们可能需要了解整个系统在当前,或者某一时刻运行的情况,比如一个系统后台服务,我们可能需要了解一些实时监控的数据例如

1、每秒钟的请求数是多少(TPS)?

2、平均每个请求处理的时间?

3、请求处理的最长耗时?

4.请求处理的响应的直方图?

5、请求处理正确响应率?

6、等待处理的请求队列长度?

7、查看整个系统的的CPU使用率、内存占用、jvm运行情况;以及系统运行出错率等等一系列的实时数据采集时,最简单的方法就是在系统的入口、出口和关键位置设置埋点,然后将采集到的信息发送到实时监控平台或者存入到缓存和DB中做进一步的分析和展示。

Metrics提供5种基本的度量类型:

Meters 

是一种只能自增的计数器,通常用来度量一系列事件发生的概率。它提供了平均速率,以及指数平滑平均速率,以及采样后的1分钟,5分钟,15分钟的样例。

Gauges 

Gauge是一个最简单的计量,一般用来统计瞬时状态的数据信息

RatioGauge

 作用:度量事件成功率的计算。  例:度量缓存命中率、接口调用率等等。

Counters   

    Counter是Gauge的一个特例,维护一个计数器,可以通过inc()和dec()方法对计数器做修改。使用步骤与Gauge基本类似,在MetricRegistry中提供了静态方法可以直接实例化一个Counter。可以用来度量生产者和消费者之间的关系

Histograms 

  主要使用来统计数据的分布情况, 最大值、最小值、平均值、中位数,百分比(75%、90%、95%、98%、99%和99.9%)。

    例如,需要统计某个页面的请求、接口方法请求的响应时间

Timers

  作用:统计请求的速率和处理时间

  例如:某接口的总在一定时间内的请求总数,平均处理时间

HealthChecks 

  作用:健康检查,用于对系统应用、子模块、关联模块的运行是否正常做检测

  实现过程:

    类A:继承 HealthCheck ,并重写check()方法 ,在check()中调用类B中的被检测方法

    类B:定义一个方法,返回结果是boolean类型。(类B也可以是其它系统中的一个类)

具体案例

https://www.cnblogs.com/MrRightZhao/p/10975107.html

在日志中打印

public static void main(String[] args) throws InterruptedException {
        ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
        Slf4jReporter report = Slf4jReporter.forRegistry(registry) //
                .prefixedWith("region_") //
                .withLoggingLevel(Slf4jReporter.LoggingLevel.INFO) //
                .outputTo(LoggerFactory.getLogger(MetricsTest.class)) //
                .scheduleOn(scheduler) //
                .shutdownExecutorOnStop(scheduler != null) //
                .build();
        report.start(5, TimeUnit.SECONDS);
        Random r = new Random();
        while (true) {
            processHandle(r.nextDouble());
            Thread.sleep(100);
        }
    }

原文地址:https://www.cnblogs.com/gaojy/p/15230771.html