• 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);
            }
        }
  • 相关阅读:
    JDBC加载各种数据库方法和URL
    javascript通用表格验证程序
    javascript缩放图片
    ASP.NET 2.0 中改进的缓存功能
    滚轮改变图片大小
    在IE7关闭窗口,上传图片无法预览,window.status无效问题解决办法
    Sqlserver存储过程和C#分页类简化你的代码
    C#cookie使用
    ASP.NET2.0中控件的简单异步回调
    JavaScript表单验证大全
  • 原文地址:https://www.cnblogs.com/gaojy/p/15230771.html
Copyright © 2020-2023  润新知