问题标签 [codahale-metrics]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
743 浏览

java - 在 Spring Boot 中导出指标

spring boot 在/metrics端点中显示所有可能的指标。另一方面,它在内部使用指标导出器。例如,当您添加 dropwizard 指标(当前事实上的标准?)时,它会自动注册,但并非所有 spring-boot 指标都导出到 dropwizard。为了拥有更多/所有指标,必须手动注册不同的指标集。它必须与 spring-boot 对/metrics端点所做的并行维护。

所以问题是:应该如何正确完成?我应该使用指标导出器并为数十个微服务中的每一个维护它还是Collection<PublicMetrics>/metrics端点使用并由 spring 维护?

0 投票
2 回答
3808 浏览

timer - 如何重置 dropwizard 指标的计时器?

我们正在处理定期传入的消息。我们使用 codahale dropwizard 指标的“计时器”来测量处理它们所需的时间。

我发现有人在这里遇到同样的问题:“呈指数衰减的水库的问题是,如果没有新数据进入,它将一直提供相同的数字。例如,假设你用 5 和 7 更新计时器(然后根本不要放任何东西),那么无论你什么时候看到(即使在 x 小时之后),计时器仍然会显示平均值为 6,这无论如何都不代表最后 5 分钟。所以,它只有在数据一直在到达。”

正如您在深蓝色线中看到的那样: 在此处输入图像描述

但是没有解决它的建议。他们说它不会被实施:https ://github.com/dropwizard/metrics/issues/399

如何正确重置这些计时器,或者我应该如何将其可视化以免混淆?

0 投票
1 回答
3056 浏览

java - 如何每 X 秒重置一次指标?

我正在尝试使用DropWizard Metrics library在我的应用程序上测量应用程序和 jvm 级别的指标。

下面是我的指标类,我在代码中使用它来增加/减少指标。我正在调用下面类incrementdecrement方法来增加和减少指标。

这就是我如何使用上面的TestMetrics类来根据我需要的情况增加指标。下面的方法被多个线程调用。

现在我有另一个类,它每 30 秒运行一次(我为此使用 Quartz 框架),我想从那里打印出所有指标及其计数。一般来说,我会每 30 秒将这些指标发送到其他系统,但现在我将其打印在这里。下面是我的做法。

现在我的问题是:我想每 30 秒重置一次我的所有指标计数。这意味着当我的execute方法打印出指标时,它应该仅打印出 30 秒的指标(对于所有指标),而不是从程序运行时开始打印整个持续时间。

有什么方法可以让我的所有指标只计算 30 秒。计算过去 30 秒内发生的任何事情。

0 投票
1 回答
463 浏览

java - 在 Graphite 中显示 Java Metrics 结果

我已经设置了一个 Graphite 服务器,我正在尝试将我的 Java 指标打印到 Graphite UI 中。Graphite 已启动并正在运行,因为我可以在 localhost 中看到它的 Web UI。我使用下面的代码将我的指标结果重定向到石墨控制台。

但是 Web UI 上什么也没有出现。我在这里做错了什么?我需要为石墨指定任何其他配置吗?安装石墨后,我没有添加任何配置。任何帮助将不胜感激。

0 投票
1 回答
1603 浏览

metrics - 使用带有 codahale 计数器数据的石墨函数每分钟聚合计数

我们现在的生态系统是石墨/grafana,我们使用 codahale 指标 java 库。

我定义了一个计数器

并在每次请求命中我们的应用程序时增加

我们用 codahale 观察到的是,counter sa cumalative value...当我们查看 grafana 中的原始数据时,它是在一段时间内增加的值

我在石墨中使用什么功能,以便我可以获得每分钟的请求数

我试过这个

还有这个

似乎不对,有人可以建议推荐的方法是什么,如果我们可以让 codahale 在递增而不是累积计数时只发送原始数据

0 投票
0 回答
503 浏览

java - 是什么导致这 15 分钟的减速?

除了 Spring 的@Transactional注释之外,还有什么东西会导致这 15 分钟的大幅减速吗?

编辑在最后添加信息。

我有一个 web 应用程序,它偶尔会执行非常缓慢。网站的部分内容由动态 json 驱动。大多数时候,该网站运行良好。我想强调这个事实:网站并不总是很慢。该站点始终在运行,但没有多大用处。有时,由于 json 请求未返回,该站点似乎睡着了并且无法正确显示。如果我打开站点的其他选项卡/窗口,我会快速响应静态资源的请求。任何需要数据库数据的请求都会挂起。如果我让浏览器保持打开状态并去吃午饭——当我回来时,网站就恢复正常了。一旦站点“唤醒”,它将在一天的剩余时间里继续以正常速度工作。

为了找出这种奇怪的缓慢行为的原因,我开始使用 Dropwizard/Codahale Metrics 库。

我已经为网站的大部分后端添加了指标。我最近观察到缓慢的行为,我正试图找出原因。

我相信 Spring 的@Transactional注释偶尔会为方法调用增加 931 秒。我意识到,如果属实,减速不是由于 Spring 的错误或编码不佳,而可能是我的错误配置。这些数字似乎太远了(15 分钟?),我需要 stackoverflow 的帮助。
4个问题:

  1. 有没有其他方法可以解释这些数据点?
  2. 我正在做的事情真的很愚蠢,可能会导致这种放缓吗?
  3. 为了查明减速的原因,我还应该添加其他指标吗?
  4. 最后,如果所有时间都花在了@Transactional,您对如何解决它有什么建议吗?

我今天早上捕获了这些指标,但减速事件发生在几天前。“最大值”是我特别关心的。

Controller 层调用 Service 层,Service 层调用 Dao 层。

从上面的指标来看,控制器层很慢,服务层也很慢,但 Dao 层很快。

问题是服务层并没有真正做任何事情——除非@Transactional注释减慢它的速度,否则它变慢是没有意义的。

@M。Deinum 解释说 getDao() 方法的计数为 0,因为 Spring AOP 代理只拦截外部调用。

控制器层:

服务层:

道层:

弹簧配置:

JDBC:

新细节:

根据 M. Deinum 的建议,我将连接池更改为使用 HikariCP。我将最大池大小增加到 30 个连接。

我还创建了以下 InstrumentedTransactionManager 类,以将计时器添加到 Springs @Transactional 使用的 TransactionManager:

最后,我向 Springs @Async 注解使用的 Executor 添加了指标,以尝试识别线程池问题。

自从进行上述更改以来,我没有观察到生产速度缓慢,但没有证据并不是没有证据......

0 投票
2 回答
1314 浏览

java - 如何在 GraphiteReporter 中添加自定义 MetricFilter 以仅发送选定的 metricd

我已经在我的应用程序中实现了 Dropwizard 指标。我正在使用以下代码向 Graphite 发送指标。

我想添加自定义 MetricFilter,这样就不会将所有指标发送到 Graphite,而只会发送几个特定的​​指标。

例如。最大值、平均值、最小值、平均值。

请发布 MetricFilter 使用情况。

0 投票
2 回答
592 浏览

dropwizard - 石墨指标显示错误的结果

我正在使用 Graphite 和 Codahale 来记录我的 java 服务器的指标。我有一个看起来像这样的块代码:

当我查看今天的事件计数(每个计时器也是一个计数器)时,我发现我们每分钟大约有数百次点击计数,这意味着每小时几千次。当我扩大日期范围以包括昨天时,我看到结果在数百万范围内,我不知道为什么。

结果显示在对度量进行 nonNegativeDerivative 操作之后

今天的结果:

今天

根据昨天的结果:

在此处输入图像描述

0 投票
0 回答
880 浏览

java - 如何从微服务聚合 dropwizard 指标并将它们发送到 logstash(ELK)

我想汇总一些指标。在我的监控应用程序中,我使用 HTTP 请求向所有微服务发送请求。微服务(在其他 JVM 中)报告指标,使用 dropwizard 和执行器,它运行良好,

在 for 循环中,我会这样调用:

然后前端使用 JsonNode,但现在我想重用保存的 JsonNode 将它们发送到 logstash 并避免请求所有微服务的新时间。

我可以为当前 JVM 中的当前 metricRegistry 制作一个 Slf4jReporter,但是如何与我在 HTTP 请求中寻址的远程 JVM 做同样的事情?我想注入我保存的所有 JsonNode :-/

我的记录器“指标”连接到 logstash appender 并且可以工作。

0 投票
1 回答
625 浏览

dropwizard - 如何获取 dropwizard 指标 web ui

我正在尝试为 dropwizard 指标提供一些 Web 用户界面。检查了 Graphite 和 Ganglia,但我还需要可以轻松安装在 Windows 和 linux 上的东西。无法配置 metrics-watcher,因为我的应用程序中的指标是动态的。还配置了 jclawson/metrics-ui,但没有发现 ui 吸引人。如果有任何其他可以轻松集成的来源,请建议我。