将机器状态存储在石墨时间序列上以便以后提取KPI

问题描述 投票:0回答:1

有一台机器(不定期地)发送其状态值0、1、2,我们将其存储在Graphite中。现在状态表示:

  • 0-停止
  • 1-工作
  • 2--被异常停止

请求提取的KPI是经典的:一天或一周中处于状态0或1或2的时间是多少?在重新发明轮子之前,我们正在寻找计算这些PKI的最佳方法,如果在Graphite(或其他可能的时间序列解决方案)中,已经有函数可以对数据点值只是条件的时间进行求和。显然,不存储求和的时间间隔,它是数据点与下一个数据点之间经过的时间。

或者应该对数据进行预处理以计算时间间隔,然后存储三个数据集,例如:status.working,status.stopped,status.alarm,并且对于每个商店,特定“事件”何时开始以及持续了多少时间?

[还有其他KPI,例如一天中的警报数量。连续接收到两个都指示状态为“ 2”的状态数据点实际上是单个警报情况,必须计为1。

因此,有没有最好的方法来存储此类数据而无需对其进行预处理?听起来这是一种常见的模式,但是(对我们感到羞耻?)我们没有很好地探讨这个主题。

感谢。

time-series graphite kpi
1个回答
0
投票

石墨具有许多可以在这里为您提供帮助的功能。最引人注目的是summarize()函数,您可以在其中传递一种汇总方法(在这种情况下为sum),并以分钟/小时/天/天/周/等为单位的持续时间,看看here

[isNonNull是另一个有用的function:不管值如何,都可以用来确定数据点的存在。

[当您说机器报告值0表示它已停止时-它实际上是发送该值还是什么都不报告?这是一个重要的细节,将对解决方案的最终结果有所影响。

© www.soinside.com 2019 - 2024. All rights reserved.