【发布时间】:2011-07-04 10:20:12
【问题描述】:
我正在一个平面文件中收集一些系统数据,格式如下:
YYYY-MM-DD-HH24:MI:SS DD1 DD2 DD3 DD4
其中 DD1-DD4 是四项数据。 该文件的一个示例是这样的:
2011-02-01-13:29:53 16 8 7 68
2011-02-01-13:29:58 13 8 6 110
2011-02-01-13:30:03 26 25 1 109
2011-02-01-13:30:08 13 12 1 31
2011-02-01-13:30:14 192 170 22 34
2011-02-01-13:30:19 16 16 0 10
2011-02-01-13:30:24 137 61 76 9
2011-02-01-13:30:29 452 167 286 42
2011-02-01-13:30:34 471 177 295 11
2011-02-01-13:30:39 502 192 309 10
该文件超过 200 万行,每五秒有一个数据点。
我需要将这些数据绘制成图表,以便从中获得意义。
我的尝试
目前我已经尝试使用各种 unix 工具(awk、sed 等)使用 gnuplot 和 rrdtool。这两种方法都有效,但每次我想以不同的方式查看数据时,似乎都需要大量的切碎和重新切割数据。 我的直觉是 rrdtool 是正确的方法,但目前我正在努力将数据足够快地输入其中,部分原因是我必须将时间戳转换为 Unix 纪元。我的理解也是,如果我决定想要一个新的聚合粒度,我必须重建 rrd(这对于实时收集是有意义的,但不是这样的追溯加载)。这些事情让我觉得我可能使用了错误的工具。
将数据收集到平面文件是固定的 - 例如,我无法将集合直接通过管道传输到 rrdtool。
我的问题
我希望人们对制作图表的最佳方式提出意见。我有这些要求:
- 应该尽可能快地创建图表(不仅仅是渲染,还要设置渲染)
- 它应该尽可能灵活 - 我需要处理图表才能工作 找出数据的最佳粒度(5 秒可能太细了)
- 它应该能够在必要时聚合 (MAX/AVG/etc)
- 它应该是可重复的,新的数据文件进来时
- 理想情况下,我希望能够将 DD1 与 DD2 或上周的 DD1 与本周的 DD1 叠加
- Unix 或 Windows,不管。不过更喜欢 *nix :-)
有什么建议吗?
【问题讨论】:
-
我添加了 R 标签,因为 Kodner 在海滩。 (混蛋)
-
谢谢大家的回答,好像只能接受一个但是都很好!
-
@RobinMoffatt 你的问题怎么不是固执己见而我的呢?您专门提出了与我类似的问题,但您投票结束了我的问题。 stackoverflow.com/questions/65071679/…抱歉不知道其他引起注意的方法
标签: r graph gnuplot flat-file rrdtool