【问题标题】:Graph the current duration in second以秒为单位绘制当前持续时间
【发布时间】:2020-01-12 07:24:42
【问题描述】:

我想以秒为单位显示从范围开始到结束的总持续时间。

图表将总持续时间(以秒为单位)作为 Y 轴,将时间作为 X 轴。

它将从 0 秒到 3600 秒开始,持续一小时。

我设法根据 Graphite 系列绘制它,但是当范围太宽时它是不正确的。我猜这与一段时间后的数据清理有关。

【问题讨论】:

  • 查看您当前正在使用的功能可能会有所帮助 - 也许有办法解决这个问题?如果您发现它在进一步缩小时效果不佳,请尝试使用 consolidateBy 功能 - 支持 Graphite 3 年,这是数据显示奇怪的第二个原因 :)(第一个仅适用于 Hosted Graphite,但如果您使用 HG,请查看数据视图,或发送邮件支持,我会看看!)

标签: grafana graphite


【解决方案1】:

Graphite 包含一个名为timeFunction 的函数,它仅以您选择的时间间隔返回图中每个点的时间戳。结合offsetToZero函数,可以画出counts up in standard time increments and starts at 0 regardless of the duration of the graph的线。它看起来像这样:

offsetToZero(timeFunction('duration', 60))

我对此进行了长达 90 天的测试,并使用了各种 maxdataPoint 值,它似乎工作正常。 60 秒是 timeFunction 的默认间隔,但您可以使用任何您喜欢的时间间隔,具体取决于您认为适合仪表板的时间间隔。

如果您有不同版本的 Graphite,但在不同缩放级别下仍然看到值看起来很奇怪,请尝试添加 consolidateBy(max) 以确保在合并数据点时使用最高值而不是平均值.您还可以 consolidateBy(min) - Graphite 数据点代表下一个时间段而不是前一个时间段,因此第一个数据点在数学上可能更正确,具体取决于您的实现。

(注意:数据点合并是因为 Grafana 将 maxDataPoints 值连同其请求一起发送到 Grafana,这样 Graphite 就不会返回图表可以显示的更多数据点。)

【讨论】:

  • 效果很好,谢谢!但是,当我在asPercent 的另一个系列中用作输入时,我在以前的解决方案工作时遇到了错误(总数仍然不正确)。知道为什么吗?
  • 猜测一下,时间生成的序列和你自己的序列没有匹配的区间。 asPercent 函数无法比较具有不同时间戳的数据点,并且无论实际存储方案如何, time 函数都会生成它自己的时间戳。您可以通过更改时间函数的间隔以在您最有可能查看的时间范围内匹配您自己的存储方案来克服这一点。如果您使用 Grafana 来查看它,您可以使用模板变量从您提供的列表中选择不同的时间间隔。
  • 我使用了divideSeries 而不是asPercent,而且效果很好!非常感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-02
  • 2017-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多