Class: CpuLoad

Inherits:
ApplicationModel show all
Defined in:
app/models/cpu_load.rb

Class Method Summary collapse

Methods inherited from ApplicationModel

group_format

Class Method Details

.average_load(start_time, minutes) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'app/models/cpu_load.rb', line 4

def self.average_load(start_time, minutes)
  data = where(created_at: start_time..)
    .group_by_time(minutes)
    .pluck(
      Arel.sql("datetime(#{group_format(minutes)}, 'unixepoch') as period"),
      Arel.sql("ROUND(AVG(one_minute), 2) as avg_one"),
      Arel.sql("ROUND(AVG(five_minutes), 2) as avg_five"),
      Arel.sql("ROUND(AVG(fifteen_minutes), 2) as avg_fifteen")
    )

  one = data.to_h { |period, one, _, _| [period, one] }
  five = data.to_h { |period, _, five, _| [period, five] }
  fifteen = data.to_h { |period, _, _, fifteen| [period, fifteen] }
  [
    {name: "1 minute", data: one},
    {name: "5 minutes", data: five},
    {name: "15 minutes", data: fifteen}
  ]
end