gpt4 book ai didi

java - 保留 Coda Hale 指标信息

转载 作者:可可西里 更新时间:2023-11-01 07:08:03 25 4
gpt4 key购买 nike

我是 Coda Hale Metrics 的新手。我创建了一个示例 spring 应用程序,它具有简单的 RESTful web 服务方法。

我使用了 Coda Hale Metrics 框架提供的 Meter、Timer 和 Counter 工具来跟踪请求数量、请求比率和请求持续时间。目前我使用 Metrics 的 Console Reporter 将这些信息输出到控制台(请在下面找到代码)。

@Override
public void configureReporters(MetricRegistry metricRegistry) {

registerReporter(ConsoleReporter.forRegistry(metricRegistry).build())
.start(30, TimeUnit.SECONDS);
}

我对 Coda Hale Metrics 有几个问题。

(1) 目前Counter显示总数。自服务器启动以来发出的请求。有没有什么办法可以拿到no。在特定报告期间发出的请求数(例如:- 第一个 30 秒的计数 = count1,第二个 30 秒的计数 = count2,等等)

(2) 是否可以使用Timer 获取每个请求的持续时间?目前计时器显示所有正在发出的请求的最小、最大和平均速率。

(3) 是否有可能将这些指标数据保存到外部数据库(例如:- MySQL)中?

下面是我的REST服务方法。

@RequestMapping(value = "/examplerest", method = RequestMethod.GET)
@ResponseBody
@Metered(name="exampleRestMetered")
@Timed(name="exampleRestTimed")
@Counted(name="exampleRestCounted", monotonic=true)
public String exampleRest(
HttpServletResponse response) {

/**
some logics here
*/
}

非常感谢您对此的指导。

谢谢。

最佳答案

1) 有没有什么办法可以得到 no.在特定报告期内提出了多少请求?

不是直接来自柜台。但是,Meter 或 Timer 会输出一个“m1_rate”,它应该是过去一分钟内的调用次数。

通常,我会定期收集计数器的值并针对我的指标数据库编写查询以执行此类分析。

2)该死的。这不是定时器的用途。想一想:您可能会在一个报告窗口内对 Timer 进行数百万次调用。保留所有这些数据会增加内存中计时器的大小和计算其报告值的复杂性。

如果你真的需要每个请求的时间,这是一个日志记录或审计的工作。您还可以记录请求的一些独特识别特征,以帮助您沿各个轴汇总性能。

请注意,您可能能够通过为计时器报告的各种速率和计量器收集一些您正在寻找的情报 w/r/t 收集请求计时。例如,如果您知道最后一分钟发生了 1000 个请求(因为 m1_rate 是 16.6 Hz 或每分钟 1000 个请求)并且您知道第 50 个百分位时间是 10 毫秒,第 99 个百分位时间是 100 毫秒,您可以假设至少有 500 个请求在 10 毫秒或更短时间内完成,并且 10 个或更多请求在 100 毫秒或更长时间内完成。

3) 当然。 DW Reporters 是可插拔的和疯狂的基础,你可以在一天内写一个(假设你找不到一个可接受的公开产品)。

但是在 IMO 中,保存指标的最佳位置是特定于指标的数据库。 DropWizard 包中内置了两个报告器来帮助解决此问题:一个 Ganglia 报告器和一个 Graphite 报告器。

使用其中一种工具的优势在于,它们专为高效存储、检索和应用时间序列数据的函数而构建。考虑一下:你有一个计数器,你想绘制它随时间的变化率。使用 Graphite,您只需用导数 () 和 bam 包装您的调用以绘制值图形,您就得到了比率。我不知道如何在 SQL 中执行该操作,可以理解,SQL 更关注集合而不是系列。

关于java - 保留 Coda Hale 指标信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32397887/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com