2

私は以下を転がしています:

  • レール 3.2.9
  • ハイチャート
  • ステートマシン

何百もの Linux ボックスの状態の変化を表す不規則なデータ セットがあります。各ボックスは 2 分ごとに中央の 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

このようなグラフを作成できるように、クエリをフォーマットして、現在までのデータと個々のポイントを取得するにはどうすればよいですか?

4

0 に答える 0