karafka-web 0.1.3 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +12 -0
- data/Gemfile +1 -0
- data/Gemfile.lock +23 -11
- data/karafka-web.gemspec +2 -2
- data/lib/karafka/web/config.rb +5 -0
- data/lib/karafka/web/installer.rb +1 -2
- data/lib/karafka/web/processing/consumer.rb +2 -1
- data/lib/karafka/web/tracking/consumers/contracts/job.rb +1 -0
- data/lib/karafka/web/tracking/consumers/contracts/report.rb +1 -0
- data/lib/karafka/web/tracking/consumers/listeners/errors.rb +1 -1
- data/lib/karafka/web/tracking/consumers/listeners/processing.rb +2 -1
- data/lib/karafka/web/tracking/consumers/sampler.rb +9 -3
- data/lib/karafka/web/tracking/reporter.rb +2 -1
- data/lib/karafka/web/ui/app.rb +5 -0
- data/lib/karafka/web/ui/controllers/status.rb +23 -0
- data/lib/karafka/web/ui/models/job.rb +4 -0
- data/lib/karafka/web/ui/models/process.rb +7 -0
- data/lib/karafka/web/ui/models/status.rb +169 -0
- data/lib/karafka/web/ui/pro/app.rb +5 -0
- data/lib/karafka/web/ui/pro/controllers/status.rb +26 -0
- data/lib/karafka/web/ui/pro/views/consumers/_consumer.erb +15 -7
- data/lib/karafka/web/ui/pro/views/consumers/consumer/_job.erb +4 -0
- data/lib/karafka/web/ui/pro/views/consumers/consumer/_metrics.erb +10 -0
- data/lib/karafka/web/ui/pro/views/jobs/_job.erb +4 -0
- data/lib/karafka/web/ui/pro/views/shared/_navigation.erb +5 -0
- data/lib/karafka/web/ui/views/consumers/_consumer.erb +15 -7
- data/lib/karafka/web/ui/views/jobs/_job.erb +4 -0
- data/lib/karafka/web/ui/views/shared/_navigation.erb +5 -0
- data/lib/karafka/web/ui/views/shared/exceptions/not_found.erb +2 -0
- data/lib/karafka/web/ui/views/status/_breadcrumbs.erb +5 -0
- data/lib/karafka/web/ui/views/status/_failure.erb +14 -0
- data/lib/karafka/web/ui/views/status/_halted.erb +11 -0
- data/lib/karafka/web/ui/views/status/_success.erb +11 -0
- data/lib/karafka/web/ui/views/status/failures/_connection.erb +7 -0
- data/lib/karafka/web/ui/views/status/failures/_initial_state.erb +20 -0
- data/lib/karafka/web/ui/views/status/failures/_live_reporting.erb +7 -0
- data/lib/karafka/web/ui/views/status/failures/_partitions.erb +19 -0
- data/lib/karafka/web/ui/views/status/failures/_state_calculation.erb +8 -0
- data/lib/karafka/web/ui/views/status/failures/_topics.erb +20 -0
- data/lib/karafka/web/ui/views/status/show.erb +94 -0
- data/lib/karafka/web/version.rb +1 -1
- data.tar.gz.sig +0 -0
- metadata +20 -14
- metadata.gz.sig +0 -0
- data/lib/karafka/web/ui/views/consumers/consumer/_consumer_group.erb +0 -109
- data/lib/karafka/web/ui/views/consumers/consumer/_job.erb +0 -26
- data/lib/karafka/web/ui/views/consumers/consumer/_metrics.erb +0 -126
- data/lib/karafka/web/ui/views/consumers/consumer/_no_jobs.erb +0 -9
- data/lib/karafka/web/ui/views/consumers/consumer/_no_subscriptions.erb +0 -9
- data/lib/karafka/web/ui/views/consumers/consumer/_partition.erb +0 -32
- data/lib/karafka/web/ui/views/consumers/consumer/_stopped.erb +0 -10
- data/lib/karafka/web/ui/views/consumers/consumer/_tabs.erb +0 -20
@@ -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,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,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>
|
data/lib/karafka/web/version.rb
CHANGED
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
|
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-
|
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.
|
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.
|
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.
|
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.
|
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:
|
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:
|
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:
|
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:
|
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:
|
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>
|