我有几千个时间序列,涵盖了第二个粒度的几年。我想将数据存储在合适的数据库中(即可以很好地扩展并且可以按原始粒度保留所有数据的数据库,例如Druid,openTSDB或类似数据库)。目的是能够在浏览器中查看数据(例如,通过输入时间范围并理想地具有缩放/平移功能)。
要限制我的网络服务器需要处理的数据点数量,我想拥有一些功能,对于Graphite / Grafana来说似乎是开箱即用的(如果我理解正确的话,长期以来就不是一个好选择数据的长期保留): Grafana中的时间序列图将通过查询石墨的聚合来限制数据(例如,缩小时返回30m桶的平均值,放大时显示所有数据)。
现在是问题:
也欢迎反馈有关数据库选择的信息(首选开源)。
答案 0 :(得分:0)
您绝对可以在Graphite中存储多年的数据,您将遇到的问题是Graphite选择要读取的聚合级别的方式是找到覆盖所请求间隔的最高分辨率档案,因此您可以不会自动利用聚合功能来拥有高效的长期图表以及过去一段时间内对原始数据的追溯能力。
解决此问题的一种方法是使用碳聚集器以与输入序列不同的间隔生成多个输出序列,以便您可以使用my.metric.raw
,my.metric.10min
,my.metric.1hr
,等等。您将其与定义了每个系列的匹配间隔和保留的碳方案相结合,以便my.metric.raw
以1秒的分辨率存储,.1min
以1分钟的存储速率等等。
如果您执行此操作,则可以在Grafana中使用模板变量来选择要从中绘制图形的间隔,因此可以使用选项$aggregation
,{{1}来定义变量raw
}等,并编写您的查询,如10min
。
这将为您提供所需的性能,并具有对原始数据的钻取能力。
也就是说,我们通常会发现,尽管每个人都认为他们想要大量的高粒度的历史数据,但实际上几乎从未使用过它,并且通常是不必要的支出。对于您而言,情况可能并非如此,但在设计系统时请仔细考虑实际用例。
答案 1 :(得分:0)
Axibase时间序列数据库(ATSD)提供了一个内置的图表库,该库可根据浏览器中显示的日期间隔即时执行周期汇总。这受period = auto
设置控制,您可以覆盖此设置以明确设置时间段。当用户放大或缩小时间范围时,聚合周期会自动调整。
以下是实况example和下面的屏幕截图。顺便说一句,“ 1年”图表显示了200万个样本,这些样本是在请求时在服务器上汇总的。聚合不被缓存,这使得该实现可以应对乱序写入。
参考文献: