time-series - 将机器状态存储在 Graphite 时间序列上,以便稍后提取 KPI
问题描述
拥有一台发送(不定期)其状态值 0、1、2 的机器,我们将其存储在 Graphite 中。现在状态意味着:
- 0 - 停止
- 1 - 工作
- 2 - 被异常停止
要求提取的 KPI 是经典 KPI:一天或一周中有多少时间处于状态 0、1 或 2?在重新发明轮子之前,我们正在研究计算这些 PKI 的最佳方法,如果在 Graphite(或可能的其他时间序列解决方案)中已经有函数处理求和数据点值只是一个条件的时间。显然,没有存储求和的时间间隔,它是一个数据点和下一个数据点之间经过的时间。
或者是否应该对数据进行预处理以计算时间间隔,然后存储三个数据集,例如:status.working、status.stopped、status.alarm 以及每个存储的特定“事件”何时开始以及持续了多长时间?
还有其他 KPI,例如一天中的警报数量。连续接收两个状态数据点都指示状态“2”,实际上是一个单一的报警条件,必须计为 1。
那么,有没有一种最好的方法来存储这些数据而不进行预处理呢?这听起来是一种常见的模式,但是(我们感到羞耻?)我们还没有发现这个话题得到了很好的探索。
谢谢。
解决方案
推荐阅读
- go - Golang 库不释放内存 [Repost with code]
- gstreamer - GStreamer - 我的环境必须被污染
- html - 为什么我的 HTML 代码在我的 react-native 应用程序中不起作用?
- terraform - Terraform 没有找到我传递的 json 变量
- javascript - 数据可以使用 $scope 从一个视图持久保存到另一个视图吗?
- android - 期望一个 int 但启用了 proguard 的 BOOLEAN
- reactjs - 为来自 OKTA (React SDK) 的授权失败提供自定义逻辑
- python - Python - 将多处理的结果存储在全局数据框中
- mongodb - Mongoose 动态键值对架构
- django - 如何在 Django 中针对不同的数据库运行迁移?