Metrics 简介

news/2025/3/4 23:59:05/

本文目录

1 Metric Registry

2 Reporter

3 Metric

4 Snapshot 数据快照

5 完整示例代码


 

1 Metric Registry

存放所有Metrics的容器,以Name-Metric(Key-Value)形式维护其中的Metric对象。

 

2 Reporter

定期将Metric Registry对象发送至监控服务器,即定期将其中存放的所有Metric对象发送给监控服务器。

 

3 Metric

3.1 Gauge/RatioGauge 数值/比率

gauge.getValue()

获取数值

 

gauge.getRatio()

获取比率

 

3.2 Counter 计数

counter.inc()

增加1次

 

counter.inc(long n)

增加n次

 

counter.dec()

减少1次

 

counter.dec(long n)

减少n次

 

counter.getCount()

获取当前次数

 

3.3 Meter 频率

meter.mark()

记录1次

 

meter.mark(long n)

记录n次

 

meter.getCount()

自创建Meter时起,一共mark多少次;

 

meter.getMeanRate()

自创建Meter时起,平均每秒mark多少次;

 

meter.getOne/Five/FifteenMinuteRate()

最近1/5/15分钟,每秒mark的指数加权移动平均值;

 

3.4 Histogram 统计数据

histogram.update(int/long n)

增加一个n值记录

 

histogram.getCount()

获取记录总个数

 

histogram.getSnapshot()

获取当前快照

 

3.5 Timer 计时(Meter+ Histogram)

Context ctx = timer.time()

开始计时

 

ctx.stop()

结束计时,记录1次,增加一个计时值记录;

内部:meter.mark() + histogram.update(time)

 

timer.update(long duration, TimeUnit unit)

记录1次,增加一个计时值duration记录,单位由unit指定;

 

timer.getCount/getMeanRate/getOne/Five/FifteenMinuteRate()

详见Meter对应方法

 

timer.getSnapshot()

获取当前快照

 

4 Snapshot 数据快照

snapshot.size()

获取记录总个数

 

snapshot.getValues()

获取记录数组

 

snapshot.getValue(double quantile)

获取指定百分位记录值

 

snapshot.getMin/Max/Median/Mean()

获取其中最小值/最大值/中位值/平均值

 

snapshot.get75/95/98/99/999thPercentile()

获取75/95/98/99/99.9百分位记录值

 

5 完整示例代码

public static void main(String[] args) {// 创建 Metric Registry 对象MetricRegistry registry = new MetricRegistry();// 创建 Reporter 并绑定 Metric Registry 对象(本示例:创建一个控制台Reporter)ConsoleReporter reporter = ConsoleReporter.forRegistry(registry).build();// 定期将 Metric Registry 对象内容发送至监控服务器(本示例:发送至控制台)reporter.start(5, TimeUnit.SECONDS);// 模拟一群玩家final Set<Object> players = new HashSet<>();// Gauge : 获取玩家数量// 每次Report时,当场计算(获取)当前玩家的数量。registry.register("gauge", new Gauge<Integer>() {@Overridepublic Integer getValue() {return players.size();}});// Counter : 计数玩家数量// 每次Report时,通过counter.getCount()方法,直接得到当前玩家的数量。Counter counter = registry.counter("counter");// 新加入1个玩家counter.inc();// 新加入10个玩家counter.inc(10);// 离开1个玩家counter.dec();// 离开5个玩家counter.dec(5);// Meter : 计算击杀频率// 每次Report时,会通过相应的方法,得到总击杀数/平均每秒击杀数/近1分钟内平均每秒击杀数等。Meter meter = registry.meter("meter");// 发生一次击杀meter.mark();// Histograms : 统计每场击杀数量// SlidingTimeWindowReservoir表示仅统计近期某一段时间的数据(示例中指定为近7天的数据)Histogram histogram = new Histogram(new SlidingTimeWindowReservoir(7, TimeUnit.DAYS));registry.register("histogram", histogram);// 完成一场比赛并击杀33次histogram.update(33);// 完成一场比赛并击杀17次histogram.update(17);// Timer : 统计每场游戏时间// SlidingTimeWindowReservoir表示仅统计近期某一段时间的数据(示例中指定为近7天的数据)Timer timer = new Timer(new SlidingTimeWindowReservoir(7, TimeUnit.DAYS));registry.register("timer", timer);// 新一场游戏开始Context ctx = timer.time();// 游戏结束:场次增加1次,记录本场游戏时间。ctx.stop();
}

 


http://www.ppmy.cn/news/464667.html

相关文章

SiteMesh简介

Web.xml中的写法&#xff1a; <!-- Sitemesh filter --><filter><filter-name>sitemeshFilter</filter-name><filter-class>com.opensymphony.sitemesh.webapp.SiteMeshFilter</filter-class></filter><filter-mapping><fi…

Medium是什么

罗振宇关于时间机器的解读中提到&#xff0c;人类还没有能力做出时间机器&#xff0c;让人们可以回到过去或者穿越未来&#xff0c;但是&#xff0c;在某种特殊条件下&#xff0c;却可以得到跟乘坐时间机器一样的效果&#xff0c;比如学习&#xff0c;学习是一种获得前人的经验…

SiteMesh

SiteMesh项目简介 OS(OpenSymphony)的SiteMesh是一个用来在JSP中实现页面布局和装饰&#xff08;layout and decoration&#xff09; 的框架组件&#xff0c;能够帮助网站开发人员较容易实现页面中动态内容和静态装饰外观的分离。Sitemesh是由一个基于Web页面布局、装饰以及与…

R语言批量裁剪栅格数据

在R语言中&#xff0c;你可以使用raster包来批量裁剪栅格数据。以下是一个简单的示例代码&#xff1a; library(raster) # 设置裁剪区域 clip_area <- extent(xmin, xmax, ymin, ymax) # 根据实际情况设置裁剪区域的坐标范围 # 批量读取栅格数据 files <- list.files(…

计网复习

时延 总时延 排队时延 处理时延 传输时延 传播时延 1. 排队时延分组在路由器的输入队列和输出队列中排队等待的时间&#xff0c;取决于网络当前的通信量&#xff08;输入队列用于排队进入路由器&#xff0c;输出队列用于路由器处理完决定往哪转发后排队发出去&#xff09;。…

2021最常见的网络原理面试题【好文收藏】

推荐视频&#xff1a; 腾讯游戏面试必问的UDP可靠性设计 腾讯T2.3亲身经历分享&#xff0c;腾讯offer的获取之路及linux后台开发学习路线 c/c linux服务器开发学习地址&#xff1a;c/c linux后台服务器高级架构师 1.如何理解 URI&#xff1f; URI, 全称为(Uniform Resourc…

「转发」乡村振兴项目最全实施流程,堪称教科书

值不值得开发&#xff1f; 一、清查开发条件 乡村现有土地、房屋、产业、自然人文等资源&#xff0c;和所在区位、经济、社会等内外部基本条件&#xff0c;决定了项目地开发的核心导向。 乡村项目开发条件6大清查方向 [1]经济发展基础 i 产业基础&#xff1a;现有核心产业及其他…

乡村振兴项目最全实施流程

乡村项目打造的成功关键在于能够创造长足、健康的经济效益&#xff0c;因而具备一定特色产业的村镇&#xff0c;或具备优良的资源、管理、环境、人才、文化、技术等方面的优势的村镇&#xff0c;更加具备发力基础&#xff0c;能够相对容易地通过产业链整合、产业结构升级&#…