我正在滚动以下内容:
- 导轨 3.2.9
- 海图
- 状态机
我有一组不规则的数据,代表了数百个 linux 机器的状态变化。每个盒子每两分钟检查一次中央 ping 服务器。
每次设备心跳时,ping 服务器都会检查设备的当前状态是否为离线,如果是,则将状态更改为在线,并将心跳表的在线列设置为 true,并插入发生这种情况的时间。
在 ping 服务器上,我们有一个每 5 分钟运行一次 rake 任务的 cron。这会发现所有设备的心跳小于现在的时间减去 5 分钟。
如果发现设备离线,则将设备状态设置为离线,并用最后一次心跳的时间和 0 标记到心跳表。
我们已经这样做了一段时间,这似乎是一种有效的方式来存储正常运行时间数据,而无需每 5 分钟为 500 台设备创建一行。
该表看起来有点像这样:
+---------------------+--------+--------+
| created_at | dev_id | online |
+---------------------+--------+--------+
| 2012-10-08 16:29:16 | 2345 | 0 |
| 2012-11-21 16:40:22 | 2345 | 1 |
| 2012-11-03 19:15:00 | 2345 | 0 |
| 2012-11-08 09:15:01 | 2345 | 1 |
| 2012-11-08 09:18:03 | 2345 | 0 |
| 2012-11-09 17:57:22 | 2345 | 1 |
| 2012-12-09 13:57:23 | 2345 | 0 |
| 2012-12-09 14:57:25 | 2345 | 1 |
| 2012-12-09 15:00:30 | 2345 | 0 |
| 2012-12-09 15:57:31 | 2345 | 1 |
| 2012-12-09 16:07:35 | 2345 | 0 |
| 2012-12-09 16:37:38 | 2345 | 1 |
| 2012-12-09 17:57:40 | 2345 | 0 |
+---------------------+--------+--------+
按照 Ryan Bate 在 Highcharts 上的精彩Railscast,我可以创建一个不规则间隔的数据折线图。
图表和数据系列
按照这个例子:
http://www.highcharts.com/demo/spline-irregular-time
并使用这样的数据系列:
= @devices.heartbeats.map { |o| o.online == true ? 1 : 0 }
它很好地绘制了折线图。
我被困在哪里
图表在最后一次签入时完成,我需要图表显示现在的一个点。在 Ryan 的示例中,如果没有值,他会将零映射到日期。我无法翻译这部分。
我正在尝试实现类似于堆栈条形图的图形,但无法对数据进行排序。
http://www.highcharts.com/demo/bar-stacked
如何格式化我的查询,以便我获取直到现在的数据以及每个单独的点,以便我可以创建这样的图表?