石墨:显示与先前值的变化

Posted

技术标签:

【中文标题】石墨:显示与先前值的变化【英文标题】:Graphite: show change from previous value 【发布时间】:2012-08-14 02:52:41 【问题描述】:

我将在垃圾收集中花费的时间发送给 Graphite(通过 jmx 从 jvm 获取)。这是一个增加的计数器。他们有办法让 Graphite 每分钟绘制一次变化图表,这样我就可以看到一个图表,显示每分钟在 GC 中花费的时间?

【问题讨论】:

【参考方案1】:

您应该能够使用 Derivative 函数将计数器变为命中率,然后使用 summarise 函数将计数器变为您之后的时间范围。

&target=summarize(derivative(java.gc_time), "1min") # time spent per minute

导数(系列列表)

This is the opposite of the integral function. This is useful for taking a 
running totalmetric and showing how many requests per minute were handled.

&target=derivative(company.server.application01.ifconfig.TXPackets)

每次运行 ifconfig 时,RX 和 TXPacket 都会更高(假设有网络流量。) 通过应用导数函数,您可以了解每分钟发送或接收的数据包,即使您只记录总数。

summarize(seriesList, intervalString, func='sum', alignToFrom=False)

Summarize the data into interval buckets of a certain size.
By default, the contents of each interval bucket are summed together. 
This is useful for counters where each increment represents a discrete event and
retrieving a “per X” value requires summing all the events in that interval.

来源:http://graphite.readthedocs.org/en/0.9.10/functions.html

【讨论】:

我可以使用上面的方法获取每秒的值吗? 问题是如果存储模式设置为每 30 秒存储 1 个数据点,我该怎么做。 另外,如果您的数据有空值,derivative() 在没有帮助的情况下将无法正常工作。您应该添加keepLastValue,例如:derivative(keepLastValue()) 如果您的图表对多个数据系列进行分组,您可以考虑使用nonNegativeDerivative() 而不是derivative(),它会在进程重新启动时过滤掉原本巨大的峰值(即重置为0)。参考http://www.jilles.net/perma/2013/08/22/how-to-do-graphite-derivatives-correctly/

以上是关于石墨:显示与先前值的变化的主要内容,如果未能解决你的问题,请参考以下文章

使用 Combine 和 SwiftUI 显示变化值的最简洁方式是啥?

访问计算的 VueJS 的先前值

js监听输入框值的即时变化onpropertychangeoninput

Python跟踪多列值的变化

如何实时监听 input 和 textarea输入框值的变化

WebView如何 监听url变化