sidekiq-worker_stats 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f8ab244409f92bfd80fde17f09555127ae3e401d
4
- data.tar.gz: ba3e9624bb284da62eb5209a473c38a03c264356
3
+ metadata.gz: 7bb6f0d95541e55dced710f53618d681ab08cbcd
4
+ data.tar.gz: 7f6bf13c356f7901f83233afd1f66a2f16211865
5
5
  SHA512:
6
- metadata.gz: cea5b6f54a51edc3fb46939f625a6bc09963e1095f148427fc8bd41178e0de018e2ccb296c98feec7b6335f4ce33ec577dbbf05c387a78cb2e1e50be568d3fa6
7
- data.tar.gz: 4ebd40896692bdb49f78afda8091a6d0af7f2d1df071d83dc69444a9cdab5fbbf3924dfae73a294d95b8b494821ecb46e0c74a33506604323e76c59167dabaf2
6
+ metadata.gz: 05035b2cffb1f1ef7de5f3092c436d260355c27ef70d20e1cd731b48016ff23cf533c538ddf685d62f60b48cc1bb238f4264920ee2bcb155d535caf4db0896ad
7
+ data.tar.gz: a040139ba1722b64264fcebd8c728a10bde02e956d1d0d226688657eb4660cbb08da49612d7eafaf75078d0817a831f5ed7f70f2ec5640239ebc7578ba725dc6
@@ -8,6 +8,7 @@ module Sidekiq
8
8
  attr_reader :jid
9
9
  attr_reader :queue
10
10
  attr_reader :klass
11
+ attr_reader :args
11
12
 
12
13
  attr_reader :start
13
14
  attr_reader :stop
@@ -25,6 +26,7 @@ module Sidekiq
25
26
  @klass = worker.class
26
27
  @pid = ::Process.pid
27
28
  @jid = worker.jid
29
+ @args = msg["args"]
28
30
  @page_size = `getconf PAGESIZE`.to_i
29
31
  start
30
32
  end
@@ -51,6 +53,7 @@ module Sidekiq
51
53
  jid: @jid,
52
54
  queue: @queue,
53
55
  class: @klass,
56
+ args: @args,
54
57
  start: @start,
55
58
  stop: @stop,
56
59
  walltime: @walltime,
@@ -69,7 +72,6 @@ module Sidekiq
69
72
  def memory_measurement
70
73
  @mem = {}
71
74
  mem_sleep = @config.mem_sleep
72
- puts mem_sleep
73
75
  @mem_thr = ::Thread.new do
74
76
  while true do
75
77
  @mem[::Time.now.to_f] = current_memory
@@ -1,5 +1,5 @@
1
1
  module Sidekiq
2
2
  module WorkerStats
3
- VERSION = '0.0.4'.freeze
3
+ VERSION = '0.0.5'.freeze
4
4
  end
5
5
  end
@@ -1,31 +1,53 @@
1
1
  <div class="worker_stats">
2
2
  <h2>Worker Stats</h2>
3
+ <h4>Showing results <%= "#{(@page * @per_page) + 1}" %> to <%= "#{[(@page + 1) * @per_page, @stats_length].min}" %> (Total: <%= "#{@stats_length}" %>)</h4>
4
+ <br>
5
+
6
+ <div style="height: 30px">
7
+ <% if @page > 0 %>
8
+ <div style="float: left;">
9
+ <a href="?page=<%= @page.to_s %>&per_page=<%= @per_page.to_s %>">Previous Page</a>
10
+ </div>
11
+ <% end %>
12
+
13
+ <% if @page < @max_pages %>
14
+ <div style="float: right;">
15
+ <a href="?page=<%= (@page + 2).to_s %>&per_page=<%= @per_page.to_s %>">Next Page</a>
16
+ </div>
17
+ <% end %>
18
+ </div>
3
19
 
4
20
  <div class="worker_stats__container">
5
21
  <div class="worker_stats__table">
6
- <table class="table table-hover table-bordered table-striped table-white live-reload">
22
+ <table class="table table-hover table-bordered table-striped table-white">
7
23
  <thead>
8
24
  <th>Worker</th>
25
+ <th>Arguments</th>
9
26
  <th>Started at</th>
10
27
  <th>Finished at</th>
11
- <th>Runtime</th>
28
+ <th>Runtime (s)</th>
29
+ <th>Start Memory</th>
12
30
  <th>Avg. Memory</th>
13
31
  <th>Peak Memory</th>
14
32
  </thead>
15
33
 
16
34
  <tbody>
17
- <% @workers.each do |key, worker| %>
35
+ <% @workers_stats.each do |key, worker| %>
18
36
  <tr>
19
37
  <td><a href="<%= root_path %>worker_stats/<%= key.to_s %>"><%= worker["class"].to_s %></a></td>
38
+ <td><%= worker["args"] != nil ? worker["args"].join(", ") : "--" %></td>
20
39
  <td><%= Time.at(worker["start"]).strftime "%Y-%m-%d %H:%M:%S" %></td>
21
40
  <td><%= Time.at(worker["stop"]).strftime "%Y-%m-%d %H:%M:%S" %></td>
22
- <td><%= "#{worker["walltime"]} s" %></td>
41
+ <td><%= "#{worker["walltime"].round(4)}" %></td>
42
+ <td><%= "#{worker["mem"][worker["mem"].keys.min] / 1024 / 1024} Mb" %></td>
23
43
  <td><%= "#{(worker["mem"].values.inject(:+) / worker["mem"].count) / 1024 / 1024} Mb" %></td>
24
44
  <td><%= "#{(worker["mem"].values.max / 1024 / 1024)} Mb" %></td>
25
45
  </tr>
26
46
  <% end %>
27
47
  </tbody>
28
48
  </table>
49
+
50
+
29
51
  </div>
30
52
  </div>
31
53
  </div>
@@ -16,6 +16,10 @@
16
16
  <td>Class</td>
17
17
  <td><%= @worker["class"] %></td>
18
18
  </tr>
19
+ <tr>
20
+ <td>Args</td>
21
+ <td><%= @worker["args"] != nil ? @worker["args"].join(", ") : "--" %></td>
22
+ </tr>
19
23
  <tr>
20
24
  <td>Queue</td>
21
25
  <td><%= @worker["queue"] %></td>
@@ -9,14 +9,31 @@ module Sidekiq
9
9
  view_path = File.join(File.expand_path('..', __FILE__), 'views')
10
10
 
11
11
  app.get '/worker_stats' do
12
- @workers = {}
12
+ @page = params["page"].to_i || 1
13
+ @page = @page >= 1 ? @page - 1 : 0
14
+
15
+ @per_page = params["per_page"].to_i || 10
16
+ @per_page = @per_page >= 1 ? @per_page : 10
17
+
18
+ @workers_stats = {}
19
+
13
20
  Sidekiq.redis do |redis|
14
21
  keys = redis.hkeys REDIS_HASH
15
22
  keys.each do |key|
16
23
  worker_stats = redis.hget(REDIS_HASH, key)
17
- @workers[key] = JSON.parse(worker_stats) if worker_stats != nil
24
+ @workers_stats[key] = JSON.parse(worker_stats) if worker_stats != nil
18
25
  end
19
26
  end
27
+ @workers_stats = @workers_stats.sort_by { |k, v| ::Time.at(v["start"]) }.reverse
28
+ @stats_length = @workers_stats.length
29
+
30
+ @max_pages = @workers_stats.length / @per_page
31
+ @page = @page * @per_page < @workers_stats.length ? @page : @max_pages
32
+
33
+ down_limit = @page * @per_page
34
+ up_limit = ((@page + 1) * @per_page) - 1
35
+
36
+ @workers_stats = @workers_stats[down_limit..up_limit] || @workers_stats[0..@per_page-1]
20
37
 
21
38
  render(:erb, File.read(File.join(view_path, 'worker_stats.erb')))
22
39
  end
@@ -24,4 +24,5 @@ Gem::Specification.new do |s|
24
24
 
25
25
  s.add_development_dependency 'minitest', '~> 5.0'
26
26
  s.add_development_dependency 'rack-test', '~> 0.6'
27
+ s.add_development_dependency 'byebug', '~> 3.5'
27
28
  end
@@ -14,7 +14,7 @@ class BasicWorker
14
14
  worker_stats_mem_sleep: 1
15
15
  })
16
16
 
17
- def perform
17
+ def perform(arg1)
18
18
  # Let's use some memory
19
19
  a = []
20
20
  for i in 1..5000000
@@ -56,7 +56,7 @@ class TestMiddleware < Minitest::Test
56
56
 
57
57
  def test_basic_worker_stats_are_saved
58
58
  Sidekiq::Testing.inline! do
59
- BasicWorker.perform_async
59
+ BasicWorker.perform_async("teste")
60
60
  end
61
61
  end
62
62
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekiq-worker_stats
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexandre Jesus
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-11-14 00:00:00.000000000 Z
11
+ date: 2016-11-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sidekiq
@@ -84,6 +84,20 @@ dependencies:
84
84
  - - "~>"
85
85
  - !ruby/object:Gem::Version
86
86
  version: '0.6'
87
+ - !ruby/object:Gem::Dependency
88
+ name: byebug
89
+ requirement: !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - "~>"
92
+ - !ruby/object:Gem::Version
93
+ version: '3.5'
94
+ type: :development
95
+ prerelease: false
96
+ version_requirements: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - "~>"
99
+ - !ruby/object:Gem::Version
100
+ version: '3.5'
87
101
  description: Save and see on the sidekiq dashboard your workers statistics
88
102
  email:
89
103
  - adbjesus@gmail.com