karafka-web 0.1.3 → 0.2.1

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.
Files changed (54) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/CHANGELOG.md +12 -0
  4. data/Gemfile +1 -0
  5. data/Gemfile.lock +23 -11
  6. data/karafka-web.gemspec +2 -2
  7. data/lib/karafka/web/config.rb +5 -0
  8. data/lib/karafka/web/installer.rb +1 -2
  9. data/lib/karafka/web/processing/consumer.rb +2 -1
  10. data/lib/karafka/web/tracking/consumers/contracts/job.rb +1 -0
  11. data/lib/karafka/web/tracking/consumers/contracts/report.rb +1 -0
  12. data/lib/karafka/web/tracking/consumers/listeners/errors.rb +1 -1
  13. data/lib/karafka/web/tracking/consumers/listeners/processing.rb +2 -1
  14. data/lib/karafka/web/tracking/consumers/sampler.rb +9 -3
  15. data/lib/karafka/web/tracking/reporter.rb +2 -1
  16. data/lib/karafka/web/ui/app.rb +5 -0
  17. data/lib/karafka/web/ui/controllers/status.rb +23 -0
  18. data/lib/karafka/web/ui/models/job.rb +4 -0
  19. data/lib/karafka/web/ui/models/process.rb +7 -0
  20. data/lib/karafka/web/ui/models/status.rb +169 -0
  21. data/lib/karafka/web/ui/pro/app.rb +5 -0
  22. data/lib/karafka/web/ui/pro/controllers/status.rb +26 -0
  23. data/lib/karafka/web/ui/pro/views/consumers/_consumer.erb +15 -7
  24. data/lib/karafka/web/ui/pro/views/consumers/consumer/_job.erb +4 -0
  25. data/lib/karafka/web/ui/pro/views/consumers/consumer/_metrics.erb +10 -0
  26. data/lib/karafka/web/ui/pro/views/jobs/_job.erb +4 -0
  27. data/lib/karafka/web/ui/pro/views/shared/_navigation.erb +5 -0
  28. data/lib/karafka/web/ui/views/consumers/_consumer.erb +15 -7
  29. data/lib/karafka/web/ui/views/jobs/_job.erb +4 -0
  30. data/lib/karafka/web/ui/views/shared/_navigation.erb +5 -0
  31. data/lib/karafka/web/ui/views/shared/exceptions/not_found.erb +2 -0
  32. data/lib/karafka/web/ui/views/status/_breadcrumbs.erb +5 -0
  33. data/lib/karafka/web/ui/views/status/_failure.erb +14 -0
  34. data/lib/karafka/web/ui/views/status/_halted.erb +11 -0
  35. data/lib/karafka/web/ui/views/status/_success.erb +11 -0
  36. data/lib/karafka/web/ui/views/status/failures/_connection.erb +7 -0
  37. data/lib/karafka/web/ui/views/status/failures/_initial_state.erb +20 -0
  38. data/lib/karafka/web/ui/views/status/failures/_live_reporting.erb +7 -0
  39. data/lib/karafka/web/ui/views/status/failures/_partitions.erb +19 -0
  40. data/lib/karafka/web/ui/views/status/failures/_state_calculation.erb +8 -0
  41. data/lib/karafka/web/ui/views/status/failures/_topics.erb +20 -0
  42. data/lib/karafka/web/ui/views/status/show.erb +94 -0
  43. data/lib/karafka/web/version.rb +1 -1
  44. data.tar.gz.sig +0 -0
  45. metadata +20 -14
  46. metadata.gz.sig +0 -0
  47. data/lib/karafka/web/ui/views/consumers/consumer/_consumer_group.erb +0 -109
  48. data/lib/karafka/web/ui/views/consumers/consumer/_job.erb +0 -26
  49. data/lib/karafka/web/ui/views/consumers/consumer/_metrics.erb +0 -126
  50. data/lib/karafka/web/ui/views/consumers/consumer/_no_jobs.erb +0 -9
  51. data/lib/karafka/web/ui/views/consumers/consumer/_no_subscriptions.erb +0 -9
  52. data/lib/karafka/web/ui/views/consumers/consumer/_partition.erb +0 -32
  53. data/lib/karafka/web/ui/views/consumers/consumer/_stopped.erb +0 -10
  54. data/lib/karafka/web/ui/views/consumers/consumer/_tabs.erb +0 -20
@@ -12,6 +12,10 @@
12
12
  </td>
13
13
  <td>
14
14
  <code><%= job.consumer %></code>
15
+
16
+ <% job.tags.each do |tag| %>
17
+ <span class="badge bg-info"><%= tag %></span>
18
+ <% end %>
15
19
  </td>
16
20
  <td>
17
21
  <code>#<%= job.type %></code>
@@ -45,6 +45,11 @@
45
45
  Cluster
46
46
  </a>
47
47
  </li>
48
+ <li class="nav-item ms-3">
49
+ <a class="nav-link <%= nav_class(start_with: '/status') %>" href="<%= root_path('status') %>">
50
+ Status
51
+ </a>
52
+ </li>
48
53
  </ul>
49
54
  </div>
50
55
 
@@ -20,6 +20,7 @@
20
20
  </p>
21
21
 
22
22
  <ul class="mb-5 text-start">
23
+ <li>You have visited the <a href="<%= root_path('status') %>">Status</a> page to troubleshoot any potential issues</li>
23
24
  <li>All the topics required by Karafka Web exist</li>
24
25
  <li>You have used <code>bundle exec karafka-web install</code> to initialize the Web UI</li>
25
26
  <li>You have a working connection with your Kafka cluster</li>
@@ -32,6 +33,7 @@
32
33
 
33
34
  <p>
34
35
  <a href="<%= root_path %>" class="btn btn-primary">Go Home</a>
36
+ <a href="<%= root_path('status') %>" class="btn btn-success">Status page</a>
35
37
  </p>
36
38
  </div>
37
39
  </div>
@@ -0,0 +1,5 @@
1
+ <li class="breadcrumb-item">
2
+ <a href="<%= root_path('status') %>">
3
+ Web UI status details
4
+ </a>
5
+ </li>
@@ -0,0 +1,14 @@
1
+ <div class="card border-danger mb-3">
2
+ <div class="card-header text-bg-danger">
3
+ <span>
4
+ <%= title %>
5
+ </span>
6
+
7
+ <span class="float-end">
8
+ <span class="badge text-bg-light">Failure</span>
9
+ </span>
10
+ </div>
11
+ <div class="card-body">
12
+ <%== description %>
13
+ </div>
14
+ </div>
@@ -0,0 +1,11 @@
1
+ <div class="card text-bg-secondary mb-3">
2
+ <div class="card-header">
3
+ <span>
4
+ <%= title %>
5
+ </span>
6
+
7
+ <span class="float-end">
8
+ <span class="badge text-bg-light">Halted</span>
9
+ </span>
10
+ </div>
11
+ </div>
@@ -0,0 +1,11 @@
1
+ <div class="card text-bg-success mb-3">
2
+ <div class="card-header">
3
+ <span>
4
+ <%= title %>
5
+ </span>
6
+
7
+ <span class="float-end">
8
+ <span class="badge text-bg-light">Successful</span>
9
+ </span>
10
+ </div>
11
+ </div>
@@ -0,0 +1,7 @@
1
+ <p>
2
+ Web UI was not able to establish a connection with the Kafka cluster.
3
+ </p>
4
+
5
+ <p class="mb-0">
6
+ Please make sure that Web UI can reach Kafka.
7
+ </p>
@@ -0,0 +1,20 @@
1
+ <p>
2
+ The initial state for the Web UI was not created.
3
+ </p>
4
+
5
+ <p>
6
+ It means that the <code>bundle exec karafka-web install</code> was not executed or failed.
7
+ </p>
8
+
9
+ <p>
10
+ To fix this, you can either:
11
+ </p>
12
+
13
+ <ul>
14
+ <li>Run <code>bundle exec karafka-web install</code></li>
15
+ <li>Run at least one Karafka consumer process</li>
16
+ </ul>
17
+
18
+ <p class="mb-0">
19
+ Any of the above, when successful, will bootstrap the initial state.
20
+ </p>
@@ -0,0 +1,7 @@
1
+ <p>
2
+ There are no Karafka consumer processes actively reporting to the Web UI.
3
+ </p>
4
+
5
+ <p class="mb-0">
6
+ If you are sure you are running at least one <code>karafka server</code> instance, please make sure that it can report to the <code><%= Karafka::Web.config.topics.consumers.reports %></code> topic.
7
+ </p>
@@ -0,0 +1,19 @@
1
+ <p>
2
+ Both
3
+ <code><%= Karafka::Web.config.topics.consumers.states %></code>
4
+ and
5
+ <code><%= Karafka::Web.config.topics.consumers.reports %></code>
6
+ topics need to be configured with <strong>exactly</strong> one partition.
7
+ </p>
8
+
9
+ <p>
10
+ Your current setup contains the following:
11
+ </p>
12
+
13
+ <ul class="mb-0">
14
+ <% details.each do |name, details| %>
15
+ <li>
16
+ <code><%= name %> </code> with <code><%= details[:partitions] %> </code> partitions.
17
+ </li>
18
+ <% end %>
19
+ </ul>
@@ -0,0 +1,8 @@
1
+ <p>
2
+ None of the <code>karafka server</code> processes is subscribed to handle the
3
+ <code><%= Karafka::Web.config.topics.consumers.reports %></code> topic data aggregations.
4
+ </p>
5
+
6
+ <p class="mb-0">
7
+ If you are limiting the topics you consume using the <a href="https://karafka.io/docs/CLI/#limiting-consumer-groups-used-per-process" target="_blank">limiting API</a>, please include the Karafka Web consumer group and the <code><%= Karafka::Web.config.topics.consumers.reports %></code> topic.
8
+ </p>
@@ -0,0 +1,20 @@
1
+ <p>
2
+ Web UI requires the following topics to exist:
3
+ </p>
4
+
5
+ <ul>
6
+ <% details.each do |name, details| %>
7
+ <li>
8
+ <code><%= name %></code> - <%= details[:present] ? 'Exists' : 'Missing' %>
9
+ </li>
10
+ <% end %>
11
+ </ul>
12
+
13
+ <p>
14
+ Please ensure all those topics exist and are accessible to your Karafka user.
15
+ </p>
16
+
17
+ <p class="mb-0">
18
+ You can read more about their setup and configuration
19
+ <a href="https://karafka.io/docs/Web-UI-Getting-Started/" target="_blank">here</a>.
20
+ </p>
@@ -0,0 +1,94 @@
1
+ <%== view_title('Web UI status details') %>
2
+
3
+ <div class="container mb-5">
4
+ <div class="row">
5
+ <div class="col-lg-10 offset-md-1">
6
+
7
+ <%==
8
+ partial(
9
+ "status/#{@status.connection.to_s}",
10
+ locals: {
11
+ title: 'Connection to Kafka',
12
+ description: partial('status/failures/connection')
13
+ }
14
+ )
15
+ %>
16
+
17
+ <%==
18
+ partial(
19
+ "status/#{@status.topics.to_s}",
20
+ locals: {
21
+ title: 'Topics presence',
22
+ description: partial(
23
+ 'status/failures/topics',
24
+ locals: {
25
+ details: @status.topics.details
26
+ }
27
+ )
28
+ }
29
+ )
30
+ %>
31
+
32
+ <%==
33
+ partial(
34
+ "status/#{@status.partitions.to_s}",
35
+ locals: {
36
+ title: 'Partitions count',
37
+ description: partial(
38
+ 'status/failures/partitions',
39
+ locals: {
40
+ details: @status.partitions.details
41
+ }
42
+ )
43
+ }
44
+ )
45
+ %>
46
+
47
+ <%==
48
+ partial(
49
+ "status/#{@status.initial_state.to_s}",
50
+ locals: {
51
+ title: 'Initial state presence',
52
+ description: partial(
53
+ 'status/failures/initial_state',
54
+ locals: {
55
+ details: @status.initial_state.details
56
+ }
57
+ )
58
+ }
59
+ )
60
+ %>
61
+
62
+ <%==
63
+ partial(
64
+ "status/#{@status.live_reporting.to_s}",
65
+ locals: {
66
+ title: 'Live reporting',
67
+ description: partial(
68
+ 'status/failures/live_reporting',
69
+ locals: {
70
+ details: @status.live_reporting.details
71
+ }
72
+ )
73
+ }
74
+ )
75
+ %>
76
+
77
+ <%==
78
+ partial(
79
+ "status/#{@status.state_calculation.to_s}",
80
+ locals: {
81
+ title: 'State calculation subscription',
82
+ description: partial(
83
+ 'status/failures/state_calculation',
84
+ locals: {
85
+ details: @status.state_calculation.details
86
+ }
87
+ )
88
+ }
89
+ )
90
+ %>
91
+
92
+ </div>
93
+ </div>
94
+ </div>
@@ -3,6 +3,6 @@
3
3
  module Karafka
4
4
  module Web
5
5
  # Current gem version
6
- VERSION = '0.1.3'
6
+ VERSION = '0.2.1'
7
7
  end
8
8
  end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: karafka-web
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Maciej Mensfeld
@@ -35,7 +35,7 @@ cert_chain:
35
35
  Qf04B9ceLUaC4fPVEz10FyobjaFoY4i32xRto3XnrzeAgfEe4swLq8bQsR3w/EF3
36
36
  MGU0FeSV2Yj7Xc2x/7BzLK8xQn5l7Yy75iPF+KP3vVmDHnNl
37
37
  -----END CERTIFICATE-----
38
- date: 2023-02-14 00:00:00.000000000 Z
38
+ date: 2023-02-24 00:00:00.000000000 Z
39
39
  dependencies:
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: erubi
@@ -57,7 +57,7 @@ dependencies:
57
57
  requirements:
58
58
  - - ">="
59
59
  - !ruby/object:Gem::Version
60
- version: 2.0.29
60
+ version: 2.0.33
61
61
  - - "<"
62
62
  - !ruby/object:Gem::Version
63
63
  version: 3.0.0
@@ -67,7 +67,7 @@ dependencies:
67
67
  requirements:
68
68
  - - ">="
69
69
  - !ruby/object:Gem::Version
70
- version: 2.0.29
70
+ version: 2.0.33
71
71
  - - "<"
72
72
  - !ruby/object:Gem::Version
73
73
  version: 3.0.0
@@ -77,7 +77,7 @@ dependencies:
77
77
  requirements:
78
78
  - - ">="
79
79
  - !ruby/object:Gem::Version
80
- version: 2.0.10
80
+ version: 2.0.12
81
81
  - - "<"
82
82
  - !ruby/object:Gem::Version
83
83
  version: 3.0.0
@@ -87,7 +87,7 @@ dependencies:
87
87
  requirements:
88
88
  - - ">="
89
89
  - !ruby/object:Gem::Version
90
- version: 2.0.10
90
+ version: 2.0.12
91
91
  - - "<"
92
92
  - !ruby/object:Gem::Version
93
93
  version: 3.0.0
@@ -199,6 +199,7 @@ files:
199
199
  - lib/karafka/web/ui/controllers/requests/params.rb
200
200
  - lib/karafka/web/ui/controllers/responses/data.rb
201
201
  - lib/karafka/web/ui/controllers/routing.rb
202
+ - lib/karafka/web/ui/controllers/status.rb
202
203
  - lib/karafka/web/ui/helpers/application_helper.rb
203
204
  - lib/karafka/web/ui/lib/hash_proxy.rb
204
205
  - lib/karafka/web/ui/lib/paginate_array.rb
@@ -210,6 +211,7 @@ files:
210
211
  - lib/karafka/web/ui/models/process.rb
211
212
  - lib/karafka/web/ui/models/processes.rb
212
213
  - lib/karafka/web/ui/models/state.rb
214
+ - lib/karafka/web/ui/models/status.rb
213
215
  - lib/karafka/web/ui/models/topic.rb
214
216
  - lib/karafka/web/ui/pro/app.rb
215
217
  - lib/karafka/web/ui/pro/controllers/cluster.rb
@@ -220,6 +222,7 @@ files:
220
222
  - lib/karafka/web/ui/pro/controllers/health.rb
221
223
  - lib/karafka/web/ui/pro/controllers/jobs.rb
222
224
  - lib/karafka/web/ui/pro/controllers/routing.rb
225
+ - lib/karafka/web/ui/pro/controllers/status.rb
223
226
  - lib/karafka/web/ui/pro/views/consumers/_breadcrumbs.erb
224
227
  - lib/karafka/web/ui/pro/views/consumers/_consumer.erb
225
228
  - lib/karafka/web/ui/pro/views/consumers/_counters.erb
@@ -282,14 +285,6 @@ files:
282
285
  - lib/karafka/web/ui/views/consumers/_consumer.erb
283
286
  - lib/karafka/web/ui/views/consumers/_counters.erb
284
287
  - lib/karafka/web/ui/views/consumers/_summary.erb
285
- - lib/karafka/web/ui/views/consumers/consumer/_consumer_group.erb
286
- - lib/karafka/web/ui/views/consumers/consumer/_job.erb
287
- - lib/karafka/web/ui/views/consumers/consumer/_metrics.erb
288
- - lib/karafka/web/ui/views/consumers/consumer/_no_jobs.erb
289
- - lib/karafka/web/ui/views/consumers/consumer/_no_subscriptions.erb
290
- - lib/karafka/web/ui/views/consumers/consumer/_partition.erb
291
- - lib/karafka/web/ui/views/consumers/consumer/_stopped.erb
292
- - lib/karafka/web/ui/views/consumers/consumer/_tabs.erb
293
288
  - lib/karafka/web/ui/views/consumers/index.erb
294
289
  - lib/karafka/web/ui/views/errors/_breadcrumbs.erb
295
290
  - lib/karafka/web/ui/views/errors/_detail.erb
@@ -315,6 +310,17 @@ files:
315
310
  - lib/karafka/web/ui/views/shared/_pagination.erb
316
311
  - lib/karafka/web/ui/views/shared/exceptions/not_found.erb
317
312
  - lib/karafka/web/ui/views/shared/exceptions/pro_only.erb
313
+ - lib/karafka/web/ui/views/status/_breadcrumbs.erb
314
+ - lib/karafka/web/ui/views/status/_failure.erb
315
+ - lib/karafka/web/ui/views/status/_halted.erb
316
+ - lib/karafka/web/ui/views/status/_success.erb
317
+ - lib/karafka/web/ui/views/status/failures/_connection.erb
318
+ - lib/karafka/web/ui/views/status/failures/_initial_state.erb
319
+ - lib/karafka/web/ui/views/status/failures/_live_reporting.erb
320
+ - lib/karafka/web/ui/views/status/failures/_partitions.erb
321
+ - lib/karafka/web/ui/views/status/failures/_state_calculation.erb
322
+ - lib/karafka/web/ui/views/status/failures/_topics.erb
323
+ - lib/karafka/web/ui/views/status/show.erb
318
324
  - lib/karafka/web/version.rb
319
325
  homepage: https://karafka.io
320
326
  licenses:
metadata.gz.sig CHANGED
Binary file
@@ -1,109 +0,0 @@
1
- <div class="row mb-4">
2
- <div class="col-sm-12">
3
- <h5 class="mb-4">
4
- <%= consumer_group.id %>
5
- </h5>
6
-
7
- <div class="card-group text-center">
8
- <div class="card">
9
- <div class="card-body d-flex flex-column align-items-center justify-content-center p-2">
10
- State:&nbsp;
11
- <span class="badge <%= kafka_state_bg(consumer_group[:state][:state]) %> mt-1 mb-1">
12
- <%= consumer_group[:state][:state] %>
13
- </span>
14
- </div>
15
- </div>
16
- <div class="card">
17
- <div class="card-body d-flex flex-column align-items-center justify-content-center p-2">
18
- Join state:&nbsp;
19
- <span class="badge <%= kafka_state_bg(consumer_group.join_state) %> mt-1 mb-1">
20
- <%= consumer_group.join_state %>
21
- </span>
22
- </div>
23
- </div>
24
- <div class="card">
25
- <div class="card-body d-flex flex-column align-items-center justify-content-center p-2">
26
- State change:&nbsp;
27
- <span class="badge bg-secondary mt-1 mb-1">
28
- <%==
29
- relative_time(
30
- Time.at(@process.dispatched_at) - (consumer_group.stateage / 1_000)
31
- )
32
- %>
33
- </span>
34
- </div>
35
- </div>
36
- <div class="card">
37
- <div class="card-body d-flex flex-column align-items-center justify-content-center p-2">
38
- Last rebalance:&nbsp;
39
- <span class="badge bg-secondary mt-1 mb-1">
40
- <%==
41
- relative_time(
42
- Time.at(@process.dispatched_at) - (consumer_group.rebalance_age / 1_000)
43
- )
44
- %>
45
- </span>
46
- </div>
47
- </div>
48
- <div class="card">
49
- <div class="card-body d-flex flex-column align-items-center justify-content-center p-2">
50
- Rebalance count:&nbsp;
51
- <span class="badge bg-secondary mt-1 mb-1">
52
- <%= consumer_group.rebalance_cnt %>
53
- </span>
54
- </div>
55
- </div>
56
- </div>
57
- </div>
58
-
59
- <span class="text-end mt-3">
60
- <small>
61
- Last rebalance reason: <%= consumer_group.rebalance_reason %>
62
- </small>
63
- </span>
64
- </div>
65
-
66
- <% if consumer_group.topics.empty? %>
67
- <div class="row">
68
- <div class="col-lg-12">
69
- <div class="alert alert-info" role="alert">
70
- This process does not consume any messages from any topics of this consumer group.
71
- </div>
72
- </div>
73
- </div>
74
- <% else %>
75
- <div class="row mb-5">
76
- <div class="col-sm-12">
77
- <table class="processes bg-white table table-hover table-bordered table-striped mb-0 align-middle">
78
- <thead>
79
- <tr class="align-middle">
80
- <th>Topic</th>
81
- <th>Partition</th>
82
- <th>Lag stored</th>
83
- <th>Lag trend</th>
84
- <th>Committed offset</th>
85
- <th>Stored offset</th>
86
- <th>Fetch state</th>
87
- <th>Poll state</th>
88
- </tr>
89
- </thead>
90
- <tbody>
91
- <% consumer_group.topics.each do |topic| %>
92
- <% topic.partitions.each do |partition| %>
93
- <%==
94
- partial(
95
- 'consumers/consumer/partition',
96
- locals: {
97
- topic: topic,
98
- partition: partition,
99
- consumer_group: consumer_group
100
- }
101
- )
102
- %>
103
- <% end %>
104
- <% end %>
105
- </tbody>
106
- </table>
107
- </div>
108
- </div>
109
- <% end %>
@@ -1,26 +0,0 @@
1
- <tr>
2
- <td>
3
- <code><%= job.consumer %></code>
4
- </td>
5
- <td>
6
- <span class="badge bg-secondary badge-topic" title="Consumer group: <%= job.consumer_group %>">
7
- <%= job.topic %>:
8
- <%= job.partition %>
9
- </span>
10
- </td>
11
- <td>
12
- <code>#<%= job.type %></code>
13
- </td>
14
- <td>
15
- <%= job.first_offset %>
16
- </td>
17
- <td>
18
- <%= job.last_offset %>
19
- </td>
20
- <td>
21
- <%= job.comitted_offset %>
22
- </td>
23
- <td>
24
- <%== relative_time job.started_at %>
25
- </td>
26
- </tr>
@@ -1,126 +0,0 @@
1
- <div class="container mb-5">
2
- <div class="row" id="metrics">
3
- <div class="col-lg-12">
4
- <div class="card-group">
5
- <div class="card">
6
- <div class="card-body">
7
- <h5 class="card-title">Process</h5>
8
- <p class="card-text">
9
- <ul style="list-style: square !important;">
10
- <li class="align-items-center d-flex justify-content-between">
11
- Status:
12
- <span class="badge <%= status_bg @process.status %>">
13
- <%= @process.status %>
14
- </span>
15
- </li>
16
- <li class="align-items-center d-flex justify-content-between">
17
- Started:
18
- <span class="badge bg-secondary">
19
- <%== relative_time @process.started_at %>
20
- </span>
21
- </li>
22
- <li class="align-items-center d-flex justify-content-between">
23
- State from:
24
- <span class="badge bg-secondary">
25
- <%== relative_time @process.dispatched_at %>
26
- </span>
27
- </li>
28
- </ul>
29
- </p>
30
- </div>
31
- </div>
32
- <div class="card">
33
- <div class="card-body">
34
- <h5 class="card-title">Utilization</h5>
35
- <p class="card-text">
36
- <ul style="list-style: square !important;">
37
- <li class="align-items-center d-flex justify-content-between">
38
- Threads:
39
- <span class="badge bg-primary">
40
- <%= @process.concurrency %>
41
- </span>
42
- </li>
43
- <li class="align-items-center d-flex justify-content-between">
44
- Threads utilization:
45
- <span class="badge bg-primary">
46
- <%= @process.utilization.round(2) %>%
47
- </span>
48
- </li>
49
- <li class="align-items-center d-flex justify-content-between">
50
- CPUs:
51
- <span class="badge bg-primary">
52
- <%= @process.cpu_count %>
53
- </span>
54
- </li>
55
- <li class="align-items-center d-flex justify-content-between">
56
- CPU usage:
57
- <% @process.cpu_usage.each_with_index do |usage, i| %>
58
- <span class="badge bg-primary">
59
- <%= usage %>
60
- </span>
61
-
62
- <%= i < 2 ? '/' : '' %>
63
- <% end %>
64
- </li>
65
- </ul>
66
- </p>
67
- </div>
68
- </div>
69
- <div class="card">
70
- <div class="card-body">
71
- <h5 class="card-title">Memory usage</h5>
72
- <p class="card-text">
73
- <ul style="list-style: square !important;">
74
- <li class="align-items-center d-flex justify-content-between">
75
- RSS:
76
- <span class="badge bg-primary">
77
- <%= format_memory @process.memory_usage %>
78
- </span>
79
- </li>
80
- <li class="align-items-center d-flex justify-content-between">
81
- OS memory used:
82
- <span class="badge bg-primary">
83
- <%= format_memory @process.memory_total_usage %>
84
- </span>
85
- </li>
86
- <li class="align-items-center d-flex justify-content-between">
87
- OS memory available:
88
- <span class="badge bg-primary">
89
- <%= format_memory @process.memory_size %>
90
- </span>
91
- </li>
92
- </ul>
93
- </p>
94
- </div>
95
- </div>
96
- <div class="card">
97
- <div class="card-body">
98
- <h5 class="card-title">Versions</h5>
99
- <p class="card-text">
100
- <ul style="list-style: square !important;">
101
- <li class="align-items-center d-flex justify-content-between">
102
- Ruby:
103
- <span class="badge bg-secondary">
104
- <%= @process.ruby %>
105
- </span>
106
- </li>
107
- <li class="align-items-center d-flex justify-content-between">
108
- Karafka:
109
- <span class="badge bg-secondary">
110
- <%= @process.karafka %>
111
- </span>
112
- </li>
113
- <li class="align-items-center d-flex justify-content-between">
114
- WaterDrop version:
115
- <span class="badge bg-secondary">
116
- <%= @process.waterdrop %>
117
- </span>
118
- </li>
119
- </ul>
120
- </p>
121
- </div>
122
- </div>
123
- </div>
124
- </div>
125
- </div>
126
- </div>
@@ -1,9 +0,0 @@
1
- <div class="container mb-4">
2
- <div class="row">
3
- <div class="col-lg-12">
4
- <div class="alert alert-info" role="alert">
5
- This process is not running any jobs at the moment.
6
- </div>
7
- </div>
8
- </div>
9
- </div>