karafka-web 1.0.0 → 1.0.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +10 -0
- data/Gemfile.lock +13 -13
- data/lib/karafka/web/management/actions/enable.rb +74 -10
- data/lib/karafka/web/pro/ui/app.rb +13 -0
- data/lib/karafka/web/pro/ui/controllers/base_controller.rb +4 -0
- data/lib/karafka/web/pro/ui/controllers/cluster_controller.rb +66 -4
- data/lib/karafka/web/pro/ui/controllers/consumers/consumers_controller.rb +9 -2
- data/lib/karafka/web/pro/ui/controllers/consumers/controls_controller.rb +6 -0
- data/lib/karafka/web/pro/ui/controllers/consumers/jobs_controller.rb +8 -2
- data/lib/karafka/web/pro/ui/controllers/dlq_controller.rb +6 -0
- data/lib/karafka/web/pro/ui/controllers/explorer/explorer_controller.rb +6 -0
- data/lib/karafka/web/pro/ui/controllers/health_controller.rb +19 -3
- data/lib/karafka/web/pro/ui/controllers/jobs_controller.rb +25 -0
- data/lib/karafka/web/pro/ui/controllers/recurring_tasks_controller.rb +10 -1
- data/lib/karafka/web/pro/ui/controllers/requests/params.rb +67 -0
- data/lib/karafka/web/pro/ui/controllers/routing_controller.rb +23 -1
- data/lib/karafka/web/pro/ui/controllers/scheduled_messages/schedules_controller.rb +6 -0
- data/lib/karafka/web/pro/ui/controllers/topics/configs_controller.rb +6 -1
- data/lib/karafka/web/pro/ui/controllers/topics/distributions_controller.rb +1 -1
- data/lib/karafka/web/pro/ui/controllers/topics/offsets_controller.rb +1 -1
- data/lib/karafka/web/pro/ui/controllers/topics/replications_controller.rb +1 -1
- data/lib/karafka/web/pro/ui/controllers/topics/topics_controller.rb +6 -0
- data/lib/karafka/web/pro/ui/helpers/filtering_helper.rb +173 -0
- data/lib/karafka/web/pro/ui/helpers/topics_filtering_helper.rb +80 -0
- data/lib/karafka/web/pro/ui/lib/filtering.rb +128 -0
- data/lib/karafka/web/pro/ui/lib/search/matchers/base.rb +2 -2
- data/lib/karafka/web/pro/ui/routes/cluster.rb +0 -2
- data/lib/karafka/web/pro/ui/views/cluster/_brokers_table.erb +41 -0
- data/lib/karafka/web/pro/ui/views/cluster/_configs_table.erb +41 -0
- data/lib/karafka/web/pro/ui/views/cluster/_partition.erb +2 -2
- data/lib/karafka/web/pro/ui/views/cluster/index.erb +12 -20
- data/lib/karafka/web/pro/ui/views/cluster/replication.erb +39 -0
- data/lib/karafka/web/pro/ui/views/cluster/show.erb +13 -21
- data/lib/karafka/web/pro/ui/views/consumers/consumers/_consumer_performances_table.erb +56 -0
- data/lib/karafka/web/pro/ui/views/consumers/consumers/_consumers_table.erb +43 -0
- data/lib/karafka/web/pro/ui/views/consumers/consumers/consumer/_subscription_group.erb +10 -2
- data/lib/karafka/web/pro/ui/views/consumers/consumers/index.erb +8 -24
- data/lib/karafka/web/pro/ui/views/consumers/consumers/performance.erb +8 -37
- data/lib/karafka/web/pro/ui/views/consumers/consumers/subscriptions.erb +20 -6
- data/lib/karafka/web/pro/ui/views/consumers/controls/_processes_table.erb +45 -0
- data/lib/karafka/web/pro/ui/views/consumers/controls/index.erb +14 -27
- data/lib/karafka/web/pro/ui/views/consumers/jobs/_jobs_table.erb +48 -0
- data/lib/karafka/web/pro/ui/views/consumers/jobs/pending.erb +8 -29
- data/lib/karafka/web/pro/ui/views/consumers/jobs/running.erb +8 -29
- data/lib/karafka/web/pro/ui/views/dlq/index.erb +9 -1
- data/lib/karafka/web/pro/ui/views/explorer/explorer/index.erb +9 -1
- data/lib/karafka/web/pro/ui/views/health/_changes_table.erb +59 -0
- data/lib/karafka/web/pro/ui/views/health/_cluster_lags_table.erb +43 -0
- data/lib/karafka/web/pro/ui/views/health/_lags_table.erb +60 -0
- data/lib/karafka/web/pro/ui/views/health/_no_data.erb +5 -1
- data/lib/karafka/web/pro/ui/views/health/_offsets_table.erb +63 -0
- data/lib/karafka/web/pro/ui/views/health/_overview_table.erb +83 -0
- data/lib/karafka/web/pro/ui/views/health/_tabs.erb +6 -0
- data/lib/karafka/web/pro/ui/views/health/changes.erb +13 -43
- data/lib/karafka/web/pro/ui/views/health/cluster_lags.erb +11 -25
- data/lib/karafka/web/pro/ui/views/health/lags.erb +13 -44
- data/lib/karafka/web/pro/ui/views/health/offsets.erb +13 -47
- data/lib/karafka/web/pro/ui/views/health/overview.erb +13 -67
- data/lib/karafka/web/pro/ui/views/jobs/_jobs_table.erb +48 -0
- data/lib/karafka/web/pro/ui/views/jobs/pending.erb +8 -30
- data/lib/karafka/web/pro/ui/views/jobs/running.erb +8 -30
- data/lib/karafka/web/pro/ui/views/recurring_tasks/_tasks_table.erb +43 -0
- data/lib/karafka/web/pro/ui/views/recurring_tasks/schedule.erb +8 -24
- data/lib/karafka/web/pro/ui/views/routing/_consumer_group.erb +36 -32
- data/lib/karafka/web/pro/ui/views/routing/_details_table.erb +43 -0
- data/lib/karafka/web/pro/ui/views/routing/index.erb +18 -6
- data/lib/karafka/web/pro/ui/views/routing/show.erb +12 -40
- data/lib/karafka/web/pro/ui/views/scheduled_messages/schedules/index.erb +7 -1
- data/lib/karafka/web/pro/ui/views/shared/_filter_box.erb +61 -0
- data/lib/karafka/web/pro/ui/views/topics/configs/_configs_table.erb +42 -0
- data/lib/karafka/web/pro/ui/views/topics/configs/index.erb +13 -22
- data/lib/karafka/web/pro/ui/views/topics/replications/_partition.erb +2 -2
- data/lib/karafka/web/pro/ui/views/topics/replications/show.erb +12 -2
- data/lib/karafka/web/pro/ui/views/topics/topics/index.erb +9 -1
- data/lib/karafka/web/tracking/consumers/listeners/errors.rb +80 -14
- data/lib/karafka/web/ui/base.rb +4 -0
- data/lib/karafka/web/ui/controllers/base_controller.rb +1 -1
- data/lib/karafka/web/ui/controllers/cluster_controller.rb +21 -22
- data/lib/karafka/web/ui/controllers/consumers_controller.rb +1 -1
- data/lib/karafka/web/ui/controllers/jobs_controller.rb +23 -27
- data/lib/karafka/web/ui/controllers/requests/hookable.rb +5 -0
- data/lib/karafka/web/ui/controllers/routing_controller.rb +15 -1
- data/lib/karafka/web/ui/helpers/application_helper.rb +3 -278
- data/lib/karafka/web/ui/helpers/badges_helper.rb +66 -0
- data/lib/karafka/web/ui/helpers/formatting_helper.rb +77 -0
- data/lib/karafka/web/ui/helpers/partitions_helper.rb +167 -0
- data/lib/karafka/web/ui/helpers/sorting_helper.rb +78 -0
- data/lib/karafka/web/ui/lib/filter.rb +377 -0
- data/lib/karafka/web/ui/lib/hash_flattener.rb +37 -0
- data/lib/karafka/web/ui/lib/sorter.rb +3 -1
- data/lib/karafka/web/ui/models/jobs.rb +3 -2
- data/lib/karafka/web/ui/models/process.rb +12 -0
- data/lib/karafka/web/ui/public/javascripts/application.min.js.gz +0 -0
- data/lib/karafka/web/ui/public/stylesheets/application.css +9 -0
- data/lib/karafka/web/ui/public/stylesheets/application.min.css +4230 -1258
- data/lib/karafka/web/ui/public/stylesheets/application.min.css.br +0 -0
- data/lib/karafka/web/ui/public/stylesheets/application.min.css.gz +0 -0
- data/lib/karafka/web/ui/public/stylesheets/libs/highlight_dark.min.css.gz +0 -0
- data/lib/karafka/web/ui/public/stylesheets/libs/highlight_light.min.css.gz +0 -0
- data/lib/karafka/web/ui/views/cluster/_brokers_table.erb +21 -0
- data/lib/karafka/web/ui/views/cluster/_partition.erb +2 -2
- data/lib/karafka/web/ui/views/cluster/_partitions_table.erb +31 -0
- data/lib/karafka/web/ui/views/cluster/brokers.erb +1 -21
- data/lib/karafka/web/ui/views/cluster/replication.erb +1 -23
- data/lib/karafka/web/ui/views/consumers/_consumers_table.erb +22 -0
- data/lib/karafka/web/ui/views/consumers/index.erb +1 -22
- data/lib/karafka/web/ui/views/errors/_table.erb +28 -0
- data/lib/karafka/web/ui/views/errors/index.erb +1 -28
- data/lib/karafka/web/ui/views/jobs/_jobs_table.erb +22 -0
- data/lib/karafka/web/ui/views/jobs/pending.erb +1 -22
- data/lib/karafka/web/ui/views/jobs/running.erb +1 -22
- data/lib/karafka/web/ui/views/routing/_consumer_group.erb +18 -12
- data/lib/karafka/web/ui/views/routing/_details_table.erb +23 -0
- data/lib/karafka/web/ui/views/routing/show.erb +1 -29
- data/lib/karafka/web/ui/views/shared/_no_filter_results.erb +6 -0
- data/lib/karafka/web/version.rb +1 -1
- data/package-lock.json +98 -61
- metadata +35 -1
|
@@ -22,24 +22,16 @@
|
|
|
22
22
|
|
|
23
23
|
<%== partial 'cluster/tabs' %>
|
|
24
24
|
|
|
25
|
-
|
|
26
|
-
<div class="
|
|
27
|
-
|
|
28
|
-
<thead>
|
|
29
|
-
<tr>
|
|
30
|
-
<th><%== sort_link('Node ID', :id) %></th>
|
|
31
|
-
<th><%== sort_link(:name) %></th>
|
|
32
|
-
<th><%== sort_link(:port) %></th>
|
|
33
|
-
</tr>
|
|
34
|
-
</thead>
|
|
35
|
-
<tbody>
|
|
36
|
-
<%==
|
|
37
|
-
each_partial(
|
|
38
|
-
@brokers,
|
|
39
|
-
'cluster/broker'
|
|
40
|
-
)
|
|
41
|
-
%>
|
|
42
|
-
</tbody>
|
|
43
|
-
</table>
|
|
25
|
+
<% if filtering? || !@brokers.empty? %>
|
|
26
|
+
<div class="col-span-12 mb-3">
|
|
27
|
+
<%== filter_box(labels: { id: 'Node ID' }) %>
|
|
44
28
|
</div>
|
|
45
|
-
|
|
29
|
+
<% end %>
|
|
30
|
+
|
|
31
|
+
<% if @brokers.empty? && filtering? %>
|
|
32
|
+
<div class="col-span-12">
|
|
33
|
+
<%== partial 'shared/no_filter_results' %>
|
|
34
|
+
</div>
|
|
35
|
+
<% else %>
|
|
36
|
+
<%== partial 'cluster/brokers_table' %>
|
|
37
|
+
<% end %>
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
<%# Karafka Pro - Source Available Commercial Software %>
|
|
2
|
+
<%# Copyright (c) 2017-present Maciej Mensfeld. All rights reserved. %>
|
|
3
|
+
<%# This software is NOT open source. It is source-available commercial software %>
|
|
4
|
+
<%# requiring a paid license for use. It is NOT covered by LGPL. %>
|
|
5
|
+
<%# The author retains all right, title, and interest in this software, %>
|
|
6
|
+
<%# including all copyrights, patents, and other intellectual property rights. %>
|
|
7
|
+
<%# No patent rights are granted under this license. %>
|
|
8
|
+
<%# PROHIBITED: Use without a valid commercial license %>
|
|
9
|
+
<%# PROHIBITED: Redistribution, modification, or derivative works without authorization %>
|
|
10
|
+
<%# PROHIBITED: Reverse engineering, decompilation, or disassembly of this software %>
|
|
11
|
+
<%# PROHIBITED: Use as training data for AI/ML models or inclusion in datasets %>
|
|
12
|
+
<%# PROHIBITED: Scraping, crawling, or automated collection for any purpose %>
|
|
13
|
+
<%# PERMITTED: Reading, referencing, and linking for personal or commercial use %>
|
|
14
|
+
<%# PERMITTED: Runtime retrieval by AI assistants, coding agents, and RAG systems %>
|
|
15
|
+
<%# PERMITTED: for the purpose of providing contextual help to Karafka users %>
|
|
16
|
+
<%# Receipt, viewing, or possession of this software does not convey or %>
|
|
17
|
+
<%# imply any license or right beyond those expressly stated above. %>
|
|
18
|
+
<%# License: https://karafka.io/docs/Pro-License-Comm/ %>
|
|
19
|
+
<%# Contact: contact@karafka.io %>
|
|
20
|
+
|
|
21
|
+
<%== partial 'cluster/tabs' %>
|
|
22
|
+
|
|
23
|
+
<% if filtering? || !@partitions.empty? %>
|
|
24
|
+
<div class="col-span-12 mb-3">
|
|
25
|
+
<%== filter_box %>
|
|
26
|
+
</div>
|
|
27
|
+
<% end %>
|
|
28
|
+
|
|
29
|
+
<div class="col-span-12 mb-3">
|
|
30
|
+
<% if @partitions.empty? && !filtering? && params.current_page <= 1 %>
|
|
31
|
+
<%== partial 'cluster/no_partitions' %>
|
|
32
|
+
<% elsif @partitions.empty? && filtering? %>
|
|
33
|
+
<%== partial 'shared/no_filter_results' %>
|
|
34
|
+
<% elsif @partitions.empty? %>
|
|
35
|
+
<%== partial 'shared/no_paginated_data' %>
|
|
36
|
+
<% else %>
|
|
37
|
+
<%== partial 'cluster/partitions_table' %>
|
|
38
|
+
<% end %>
|
|
39
|
+
</div>
|
|
@@ -20,24 +20,16 @@
|
|
|
20
20
|
|
|
21
21
|
<% view_title @broker.full_name %>
|
|
22
22
|
|
|
23
|
-
|
|
24
|
-
<
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
each_partial(
|
|
37
|
-
@configs,
|
|
38
|
-
'cluster/config'
|
|
39
|
-
)
|
|
40
|
-
%>
|
|
41
|
-
</tbody>
|
|
42
|
-
</table>
|
|
43
|
-
</div>
|
|
23
|
+
<% if filtering? || !@configs.empty? %>
|
|
24
|
+
<div class="col-span-12 mb-3">
|
|
25
|
+
<%== filter_box %>
|
|
26
|
+
</div>
|
|
27
|
+
<% end %>
|
|
28
|
+
|
|
29
|
+
<% if filtering? && @configs.empty? %>
|
|
30
|
+
<div class="col-span-12">
|
|
31
|
+
<%== partial 'shared/no_filter_results' %>
|
|
32
|
+
</div>
|
|
33
|
+
<% else %>
|
|
34
|
+
<%== partial 'cluster/configs_table' %>
|
|
35
|
+
<% end %>
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
<%# Karafka Pro - Source Available Commercial Software %>
|
|
2
|
+
<%# Copyright (c) 2017-present Maciej Mensfeld. All rights reserved. %>
|
|
3
|
+
<%# This software is NOT open source. It is source-available commercial software %>
|
|
4
|
+
<%# requiring a paid license for use. It is NOT covered by LGPL. %>
|
|
5
|
+
<%# The author retains all right, title, and interest in this software, %>
|
|
6
|
+
<%# including all copyrights, patents, and other intellectual property rights. %>
|
|
7
|
+
<%# No patent rights are granted under this license. %>
|
|
8
|
+
<%# PROHIBITED: Use without a valid commercial license %>
|
|
9
|
+
<%# PROHIBITED: Redistribution, modification, or derivative works without authorization %>
|
|
10
|
+
<%# PROHIBITED: Reverse engineering, decompilation, or disassembly of this software %>
|
|
11
|
+
<%# PROHIBITED: Use as training data for AI/ML models or inclusion in datasets %>
|
|
12
|
+
<%# PROHIBITED: Scraping, crawling, or automated collection for any purpose %>
|
|
13
|
+
<%# PERMITTED: Reading, referencing, and linking for personal or commercial use %>
|
|
14
|
+
<%# PERMITTED: Runtime retrieval by AI assistants, coding agents, and RAG systems %>
|
|
15
|
+
<%# PERMITTED: for the purpose of providing contextual help to Karafka users %>
|
|
16
|
+
<%# Receipt, viewing, or possession of this software does not convey or %>
|
|
17
|
+
<%# imply any license or right beyond those expressly stated above. %>
|
|
18
|
+
<%# License: https://karafka.io/docs/Pro-License-Comm/ %>
|
|
19
|
+
<%# Contact: contact@karafka.io %>
|
|
20
|
+
|
|
21
|
+
<div class="data-table-wrapper">
|
|
22
|
+
<table class="data-table">
|
|
23
|
+
<thead>
|
|
24
|
+
<tr>
|
|
25
|
+
<th colspan="1" rowspan="2"><%== sort_link('Process ID', :id) %></th>
|
|
26
|
+
<th colspan="1" rowspan="2"><%== sort_link(:memory_usage) %></th>
|
|
27
|
+
<th colspan="1" rowspan="2"><%== sort_link(:utilization) %></th>
|
|
28
|
+
<th colspan="1" rowspan="2"><%== sort_link(:threads) %></th>
|
|
29
|
+
<th colspan="3" rowspan="1" class="text-center">Load</th>
|
|
30
|
+
<th colspan="2" class="text-center">Workers</th>
|
|
31
|
+
<th colspan="2" class="text-center">Listeners</th>
|
|
32
|
+
<th colspan="2" class="text-center">Jobs</th>
|
|
33
|
+
</tr>
|
|
34
|
+
<tr>
|
|
35
|
+
<th>1m</th>
|
|
36
|
+
<th>5m</th>
|
|
37
|
+
<th>15m</th>
|
|
38
|
+
<th><%== sort_link('Total', :workers) %></th>
|
|
39
|
+
<th><%== sort_link(:busy) %></th>
|
|
40
|
+
<th><%== sort_link(:active) %></th>
|
|
41
|
+
<th><%== sort_link(:standby) %></th>
|
|
42
|
+
<th><%== sort_link('Running', :running_jobs_count) %></th>
|
|
43
|
+
<th><%== sort_link('Pending', :pending_jobs_count) %></th>
|
|
44
|
+
</tr>
|
|
45
|
+
</thead>
|
|
46
|
+
<tbody>
|
|
47
|
+
<%==
|
|
48
|
+
render_each(
|
|
49
|
+
@processes,
|
|
50
|
+
'consumers/consumers/_consumer_performance',
|
|
51
|
+
local: :process
|
|
52
|
+
)
|
|
53
|
+
%>
|
|
54
|
+
</tbody>
|
|
55
|
+
</table>
|
|
56
|
+
</div>
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
<%# Karafka Pro - Source Available Commercial Software %>
|
|
2
|
+
<%# Copyright (c) 2017-present Maciej Mensfeld. All rights reserved. %>
|
|
3
|
+
<%# This software is NOT open source. It is source-available commercial software %>
|
|
4
|
+
<%# requiring a paid license for use. It is NOT covered by LGPL. %>
|
|
5
|
+
<%# The author retains all right, title, and interest in this software, %>
|
|
6
|
+
<%# including all copyrights, patents, and other intellectual property rights. %>
|
|
7
|
+
<%# No patent rights are granted under this license. %>
|
|
8
|
+
<%# PROHIBITED: Use without a valid commercial license %>
|
|
9
|
+
<%# PROHIBITED: Redistribution, modification, or derivative works without authorization %>
|
|
10
|
+
<%# PROHIBITED: Reverse engineering, decompilation, or disassembly of this software %>
|
|
11
|
+
<%# PROHIBITED: Use as training data for AI/ML models or inclusion in datasets %>
|
|
12
|
+
<%# PROHIBITED: Scraping, crawling, or automated collection for any purpose %>
|
|
13
|
+
<%# PERMITTED: Reading, referencing, and linking for personal or commercial use %>
|
|
14
|
+
<%# PERMITTED: Runtime retrieval by AI assistants, coding agents, and RAG systems %>
|
|
15
|
+
<%# PERMITTED: for the purpose of providing contextual help to Karafka users %>
|
|
16
|
+
<%# Receipt, viewing, or possession of this software does not convey or %>
|
|
17
|
+
<%# imply any license or right beyond those expressly stated above. %>
|
|
18
|
+
<%# License: https://karafka.io/docs/Pro-License-Comm/ %>
|
|
19
|
+
<%# Contact: contact@karafka.io %>
|
|
20
|
+
|
|
21
|
+
<div class="data-table-wrapper">
|
|
22
|
+
<table class="data-table">
|
|
23
|
+
<thead>
|
|
24
|
+
<tr>
|
|
25
|
+
<th><%== sort_link('Process ID', :id) %></th>
|
|
26
|
+
<th><%== sort_link(:started_at, rev: true) %></th>
|
|
27
|
+
<th>Memory</th>
|
|
28
|
+
<th>Performance</th>
|
|
29
|
+
<th>Load</th>
|
|
30
|
+
<th><%== sort_link(:lag_hybrid) %></th>
|
|
31
|
+
</tr>
|
|
32
|
+
</thead>
|
|
33
|
+
<tbody>
|
|
34
|
+
<%==
|
|
35
|
+
render_each(
|
|
36
|
+
@processes,
|
|
37
|
+
'consumers/consumers/_consumer',
|
|
38
|
+
local: :process
|
|
39
|
+
)
|
|
40
|
+
%>
|
|
41
|
+
</tbody>
|
|
42
|
+
</table>
|
|
43
|
+
</div>
|
|
@@ -18,6 +18,13 @@
|
|
|
18
18
|
<%# License: https://karafka.io/docs/Pro-License-Comm/ %>
|
|
19
19
|
<%# Contact: contact@karafka.io %>
|
|
20
20
|
|
|
21
|
+
<%
|
|
22
|
+
# Non-destructively narrow the topics to the current filtering keyword. A subscription group is
|
|
23
|
+
# kept when the keyword matches its consumer/subscription group name or any of its topics.
|
|
24
|
+
topics = visible_topics(subscription_group.topics, consumer_group: consumer_group.id, subscription_group: subscription_group.id)
|
|
25
|
+
%>
|
|
26
|
+
|
|
27
|
+
<% unless filtering? && topics.empty? %>
|
|
21
28
|
<h2 class="h2 mb-3" id="<%= subscription_group.id %>">
|
|
22
29
|
<span class="tooltip" data-tip="Consumer Group">
|
|
23
30
|
<%= consumer_group.id %>
|
|
@@ -115,12 +122,12 @@
|
|
|
115
122
|
</div>
|
|
116
123
|
|
|
117
124
|
|
|
118
|
-
<% if
|
|
125
|
+
<% if topics.empty? %>
|
|
119
126
|
<div class="mb-6">
|
|
120
127
|
<% empty_state('This process does not consume any messages from any topics of this subscription group.', icon: 'folder') %>
|
|
121
128
|
</div>
|
|
122
129
|
<% else %>
|
|
123
|
-
<%
|
|
130
|
+
<% topics.each do |topic| %>
|
|
124
131
|
<div class="data-table-wrapper">
|
|
125
132
|
<table class="data-table">
|
|
126
133
|
<thead>
|
|
@@ -165,3 +172,4 @@
|
|
|
165
172
|
</div>
|
|
166
173
|
<% end %>
|
|
167
174
|
<% end %>
|
|
175
|
+
<% end %>
|
|
@@ -24,33 +24,17 @@
|
|
|
24
24
|
<%== partial 'consumers/consumers/tabs' %>
|
|
25
25
|
|
|
26
26
|
<div class="col-span-12">
|
|
27
|
-
<% if
|
|
27
|
+
<% if !@processes.empty? || filtering? %>
|
|
28
|
+
<%== filter_box %>
|
|
29
|
+
<% end %>
|
|
30
|
+
|
|
31
|
+
<% if @processes.empty? && !filtering? && params.current_page <= 1 %>
|
|
28
32
|
<%== partial 'consumers/no_consumers' %>
|
|
33
|
+
<% elsif @processes.empty? && filtering? %>
|
|
34
|
+
<%== partial 'shared/no_filter_results' %>
|
|
29
35
|
<% elsif @processes.empty? %>
|
|
30
36
|
<%== partial 'shared/no_paginated_data' %>
|
|
31
37
|
<% else %>
|
|
32
|
-
|
|
33
|
-
<table class="data-table">
|
|
34
|
-
<thead>
|
|
35
|
-
<tr>
|
|
36
|
-
<th><%== sort_link('Process ID', :id) %></th>
|
|
37
|
-
<th><%== sort_link(:started_at, rev: true) %></th>
|
|
38
|
-
<th>Memory</th>
|
|
39
|
-
<th>Performance</th>
|
|
40
|
-
<th>Load</th>
|
|
41
|
-
<th><%== sort_link(:lag_hybrid) %></th>
|
|
42
|
-
</tr>
|
|
43
|
-
</thead>
|
|
44
|
-
<tbody>
|
|
45
|
-
<%==
|
|
46
|
-
render_each(
|
|
47
|
-
@processes,
|
|
48
|
-
'consumers/consumers/_consumer',
|
|
49
|
-
local: :process
|
|
50
|
-
)
|
|
51
|
-
%>
|
|
52
|
-
</tbody>
|
|
53
|
-
</table>
|
|
54
|
-
</div>
|
|
38
|
+
<%== partial 'consumers/consumers/consumers_table' %>
|
|
55
39
|
<% end %>
|
|
56
40
|
</div>
|
|
@@ -23,46 +23,17 @@
|
|
|
23
23
|
<%== partial 'consumers/consumers/tabs' %>
|
|
24
24
|
|
|
25
25
|
<div class="col-span-12">
|
|
26
|
-
<% if
|
|
26
|
+
<% if !@processes.empty? || filtering? %>
|
|
27
|
+
<%== filter_box %>
|
|
28
|
+
<% end %>
|
|
29
|
+
|
|
30
|
+
<% if @processes.empty? && !filtering? && params.current_page <= 1 %>
|
|
27
31
|
<%== partial 'consumers/no_consumers' %>
|
|
32
|
+
<% elsif @processes.empty? && filtering? %>
|
|
33
|
+
<%== partial 'shared/no_filter_results' %>
|
|
28
34
|
<% elsif @processes.empty? %>
|
|
29
35
|
<%== partial 'shared/no_paginated_data' %>
|
|
30
36
|
<% else %>
|
|
31
|
-
|
|
32
|
-
<table class="data-table">
|
|
33
|
-
<thead>
|
|
34
|
-
<tr>
|
|
35
|
-
<th colspan="1" rowspan="2"><%== sort_link('Process ID', :id) %></th>
|
|
36
|
-
<th colspan="1" rowspan="2"><%== sort_link(:memory_usage) %></th>
|
|
37
|
-
<th colspan="1" rowspan="2"><%== sort_link(:utilization) %></th>
|
|
38
|
-
<th colspan="1" rowspan="2"><%== sort_link(:threads) %></th>
|
|
39
|
-
<th colspan="3" rowspan="1" class="text-center">Load</th>
|
|
40
|
-
<th colspan="2" class="text-center">Workers</th>
|
|
41
|
-
<th colspan="2" class="text-center">Listeners</th>
|
|
42
|
-
<th colspan="2" class="text-center">Jobs</th>
|
|
43
|
-
</tr>
|
|
44
|
-
<tr>
|
|
45
|
-
<th>1m</th>
|
|
46
|
-
<th>5m</th>
|
|
47
|
-
<th>15m</th>
|
|
48
|
-
<th><%== sort_link('Total', :workers) %></th>
|
|
49
|
-
<th><%== sort_link(:busy) %></th>
|
|
50
|
-
<th><%== sort_link(:active) %></th>
|
|
51
|
-
<th><%== sort_link(:standby) %></th>
|
|
52
|
-
<th><%== sort_link('Running', :running_jobs_count) %></th>
|
|
53
|
-
<th><%== sort_link('Pending', :pending_jobs_count) %></th>
|
|
54
|
-
</tr>
|
|
55
|
-
</thead>
|
|
56
|
-
<tbody>
|
|
57
|
-
<%==
|
|
58
|
-
render_each(
|
|
59
|
-
@processes,
|
|
60
|
-
'consumers/consumers/_consumer_performance',
|
|
61
|
-
local: :process
|
|
62
|
-
)
|
|
63
|
-
%>
|
|
64
|
-
</tbody>
|
|
65
|
-
</table>
|
|
66
|
-
</div>
|
|
37
|
+
<%== partial 'consumers/consumers/consumer_performances_table' %>
|
|
67
38
|
<% end %>
|
|
68
39
|
</div>
|
|
@@ -28,13 +28,27 @@
|
|
|
28
28
|
<%== partial 'consumers/consumers/consumer/tabs' %>
|
|
29
29
|
|
|
30
30
|
<% if @process.subscribed? %>
|
|
31
|
-
<%==
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
31
|
+
<%== filter_box %>
|
|
32
|
+
|
|
33
|
+
<%
|
|
34
|
+
any_visible = @process.consumer_groups.any? do |cg|
|
|
35
|
+
cg.subscription_groups.any? do |sg|
|
|
36
|
+
visible_topics(sg.topics, consumer_group: cg.id, subscription_group: sg.id).any?
|
|
37
|
+
end
|
|
38
|
+
end
|
|
37
39
|
%>
|
|
40
|
+
|
|
41
|
+
<% if filtering? && !any_visible %>
|
|
42
|
+
<%== partial 'shared/no_filter_results' %>
|
|
43
|
+
<% else %>
|
|
44
|
+
<%==
|
|
45
|
+
render_each(
|
|
46
|
+
@process.consumer_groups,
|
|
47
|
+
'consumers/consumers/consumer/_consumer_group',
|
|
48
|
+
local: :consumer_group
|
|
49
|
+
)
|
|
50
|
+
%>
|
|
51
|
+
<% end %>
|
|
38
52
|
<% else %>
|
|
39
53
|
<%== partial 'consumers/consumers/consumer/no_subscriptions' %>
|
|
40
54
|
<% end %>
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
<%# Karafka Pro - Source Available Commercial Software %>
|
|
2
|
+
<%# Copyright (c) 2017-present Maciej Mensfeld. All rights reserved. %>
|
|
3
|
+
<%# This software is NOT open source. It is source-available commercial software %>
|
|
4
|
+
<%# requiring a paid license for use. It is NOT covered by LGPL. %>
|
|
5
|
+
<%# The author retains all right, title, and interest in this software, %>
|
|
6
|
+
<%# including all copyrights, patents, and other intellectual property rights. %>
|
|
7
|
+
<%# No patent rights are granted under this license. %>
|
|
8
|
+
<%# PROHIBITED: Use without a valid commercial license %>
|
|
9
|
+
<%# PROHIBITED: Redistribution, modification, or derivative works without authorization %>
|
|
10
|
+
<%# PROHIBITED: Reverse engineering, decompilation, or disassembly of this software %>
|
|
11
|
+
<%# PROHIBITED: Use as training data for AI/ML models or inclusion in datasets %>
|
|
12
|
+
<%# PROHIBITED: Scraping, crawling, or automated collection for any purpose %>
|
|
13
|
+
<%# PERMITTED: Reading, referencing, and linking for personal or commercial use %>
|
|
14
|
+
<%# PERMITTED: Runtime retrieval by AI assistants, coding agents, and RAG systems %>
|
|
15
|
+
<%# PERMITTED: for the purpose of providing contextual help to Karafka users %>
|
|
16
|
+
<%# Receipt, viewing, or possession of this software does not convey or %>
|
|
17
|
+
<%# imply any license or right beyond those expressly stated above. %>
|
|
18
|
+
<%# License: https://karafka.io/docs/Pro-License-Comm/ %>
|
|
19
|
+
<%# Contact: contact@karafka.io %>
|
|
20
|
+
|
|
21
|
+
<div class="data-table-wrapper">
|
|
22
|
+
<table class="data-table">
|
|
23
|
+
<thead>
|
|
24
|
+
<tr>
|
|
25
|
+
<th><%== sort_link('Process ID', :id) %></th>
|
|
26
|
+
<th><%== sort_link(:status) %></th>
|
|
27
|
+
<th>Subscriptions</th>
|
|
28
|
+
<th><%== sort_link(:started_at, rev: true) %></th>
|
|
29
|
+
<th><%== sort_link(:memory_usage) %></th>
|
|
30
|
+
<th>Performance</th>
|
|
31
|
+
<th><%== sort_link(:lag_hybrid) %></th>
|
|
32
|
+
<th class="options">Options</th>
|
|
33
|
+
</tr>
|
|
34
|
+
</thead>
|
|
35
|
+
<tbody>
|
|
36
|
+
<%==
|
|
37
|
+
render_each(
|
|
38
|
+
@processes,
|
|
39
|
+
'consumers/controls/_controls',
|
|
40
|
+
local: :process
|
|
41
|
+
)
|
|
42
|
+
%>
|
|
43
|
+
</tbody>
|
|
44
|
+
</table>
|
|
45
|
+
</div>
|
|
@@ -23,7 +23,12 @@
|
|
|
23
23
|
<%== partial 'consumers/consumers/tabs' %>
|
|
24
24
|
|
|
25
25
|
<% unless @processes.empty? %>
|
|
26
|
-
<div class="col-span-12 flex justify-end space-x-2 mb-6">
|
|
26
|
+
<div class="col-span-12 flex justify-end items-center space-x-2 mb-6">
|
|
27
|
+
<% if filtering? %>
|
|
28
|
+
<span class="text-muted text-sm">
|
|
29
|
+
These actions apply to all processes, not just the filtered ones
|
|
30
|
+
</span>
|
|
31
|
+
<% end %>
|
|
27
32
|
<%
|
|
28
33
|
quiet_all_path = consumers_path('commanding', 'quiet_all')
|
|
29
34
|
has_standalone = @processes.any? { |p| p.execution_mode == 'standalone' }
|
|
@@ -64,35 +69,17 @@
|
|
|
64
69
|
<% end %>
|
|
65
70
|
|
|
66
71
|
<div class="col-span-12">
|
|
67
|
-
<% if
|
|
72
|
+
<% if !@processes.empty? || filtering? %>
|
|
73
|
+
<%== filter_box %>
|
|
74
|
+
<% end %>
|
|
75
|
+
|
|
76
|
+
<% if @processes.empty? && !filtering? && params.current_page <= 1 %>
|
|
68
77
|
<%== partial 'consumers/no_consumers' %>
|
|
78
|
+
<% elsif @processes.empty? && filtering? %>
|
|
79
|
+
<%== partial 'shared/no_filter_results' %>
|
|
69
80
|
<% elsif @processes.empty? %>
|
|
70
81
|
<%== partial 'shared/no_paginated_data' %>
|
|
71
82
|
<% else %>
|
|
72
|
-
|
|
73
|
-
<table class="data-table">
|
|
74
|
-
<thead>
|
|
75
|
-
<tr>
|
|
76
|
-
<th><%== sort_link('Process ID', :id) %></th>
|
|
77
|
-
<th><%== sort_link(:status) %></th>
|
|
78
|
-
<th>Subscriptions</th>
|
|
79
|
-
<th><%== sort_link(:started_at, rev: true) %></th>
|
|
80
|
-
<th><%== sort_link(:memory_usage) %></th>
|
|
81
|
-
<th>Performance</th>
|
|
82
|
-
<th><%== sort_link(:lag_hybrid) %></th>
|
|
83
|
-
<th class="options">Options</th>
|
|
84
|
-
</tr>
|
|
85
|
-
</thead>
|
|
86
|
-
<tbody>
|
|
87
|
-
<%==
|
|
88
|
-
render_each(
|
|
89
|
-
@processes,
|
|
90
|
-
'consumers/controls/_controls',
|
|
91
|
-
local: :process
|
|
92
|
-
)
|
|
93
|
-
%>
|
|
94
|
-
</tbody>
|
|
95
|
-
</table>
|
|
96
|
-
</div>
|
|
83
|
+
<%== partial 'consumers/controls/processes_table' %>
|
|
97
84
|
<% end %>
|
|
98
85
|
</div>
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
<%# Karafka Pro - Source Available Commercial Software %>
|
|
2
|
+
<%# Copyright (c) 2017-present Maciej Mensfeld. All rights reserved. %>
|
|
3
|
+
<%# This software is NOT open source. It is source-available commercial software %>
|
|
4
|
+
<%# requiring a paid license for use. It is NOT covered by LGPL. %>
|
|
5
|
+
<%# The author retains all right, title, and interest in this software, %>
|
|
6
|
+
<%# including all copyrights, patents, and other intellectual property rights. %>
|
|
7
|
+
<%# No patent rights are granted under this license. %>
|
|
8
|
+
<%# PROHIBITED: Use without a valid commercial license %>
|
|
9
|
+
<%# PROHIBITED: Redistribution, modification, or derivative works without authorization %>
|
|
10
|
+
<%# PROHIBITED: Reverse engineering, decompilation, or disassembly of this software %>
|
|
11
|
+
<%# PROHIBITED: Use as training data for AI/ML models or inclusion in datasets %>
|
|
12
|
+
<%# PROHIBITED: Scraping, crawling, or automated collection for any purpose %>
|
|
13
|
+
<%# PERMITTED: Reading, referencing, and linking for personal or commercial use %>
|
|
14
|
+
<%# PERMITTED: Runtime retrieval by AI assistants, coding agents, and RAG systems %>
|
|
15
|
+
<%# PERMITTED: for the purpose of providing contextual help to Karafka users %>
|
|
16
|
+
<%# Receipt, viewing, or possession of this software does not convey or %>
|
|
17
|
+
<%# imply any license or right beyond those expressly stated above. %>
|
|
18
|
+
<%# License: https://karafka.io/docs/Pro-License-Comm/ %>
|
|
19
|
+
<%# Contact: contact@karafka.io %>
|
|
20
|
+
|
|
21
|
+
<div class="data-table-wrapper">
|
|
22
|
+
<table class="data-table">
|
|
23
|
+
<thead>
|
|
24
|
+
<tr>
|
|
25
|
+
<th rowspan="2"><%== sort_link(:topic) %></th>
|
|
26
|
+
<th rowspan="2"><%== sort_link(:consumer) %></th>
|
|
27
|
+
<th rowspan="2"><%== sort_link(:type) %></th>
|
|
28
|
+
<th rowspan="2"><%== sort_link(:messages) %></th>
|
|
29
|
+
<th colspan="3" class="text-center">Offsets</th>
|
|
30
|
+
<th rowspan="2"><%== sort_link('Started', :updated_at, rev: true) %></th>
|
|
31
|
+
</tr>
|
|
32
|
+
<tr>
|
|
33
|
+
<th><%== sort_link(:first_offset) %></th>
|
|
34
|
+
<th><%== sort_link(:last_offset) %></th>
|
|
35
|
+
<th><%== sort_link(:committed_offset) %></th>
|
|
36
|
+
</tr>
|
|
37
|
+
</thead>
|
|
38
|
+
<tbody>
|
|
39
|
+
<%==
|
|
40
|
+
render_each(
|
|
41
|
+
jobs,
|
|
42
|
+
'consumers/jobs/_job',
|
|
43
|
+
local: :job
|
|
44
|
+
)
|
|
45
|
+
%>
|
|
46
|
+
</tbody>
|
|
47
|
+
</table>
|
|
48
|
+
</div>
|
|
@@ -27,36 +27,15 @@
|
|
|
27
27
|
|
|
28
28
|
<%== partial 'consumers/consumers/consumer/tabs' %>
|
|
29
29
|
|
|
30
|
-
<% if
|
|
30
|
+
<% if filtering? || !@pending_jobs.empty? %>
|
|
31
|
+
<%== filter_box %>
|
|
32
|
+
<% end %>
|
|
33
|
+
|
|
34
|
+
<% if @pending_jobs.empty? && filtering? %>
|
|
35
|
+
<%== partial 'shared/no_filter_results' %>
|
|
36
|
+
<% elsif @pending_jobs.empty? %>
|
|
31
37
|
<%== partial 'consumers/jobs/no_jobs', locals: { type: 'pending' } %>
|
|
32
38
|
<% else %>
|
|
33
|
-
|
|
34
|
-
<table class="data-table">
|
|
35
|
-
<thead>
|
|
36
|
-
<tr>
|
|
37
|
-
<th rowspan="2"><%== sort_link(:topic) %></th>
|
|
38
|
-
<th rowspan="2"><%== sort_link(:consumer) %></th>
|
|
39
|
-
<th rowspan="2"><%== sort_link(:type) %></th>
|
|
40
|
-
<th rowspan="2"><%== sort_link(:messages) %></th>
|
|
41
|
-
<th colspan="3" class="text-center">Offsets</th>
|
|
42
|
-
<th rowspan="2"><%== sort_link('Started', :updated_at, rev: true) %></th>
|
|
43
|
-
</tr>
|
|
44
|
-
<tr>
|
|
45
|
-
<th><%== sort_link(:first_offset) %></th>
|
|
46
|
-
<th><%== sort_link(:last_offset) %></th>
|
|
47
|
-
<th><%== sort_link(:committed_offset) %></th>
|
|
48
|
-
</tr>
|
|
49
|
-
</thead>
|
|
50
|
-
<tbody>
|
|
51
|
-
<%==
|
|
52
|
-
render_each(
|
|
53
|
-
@pending_jobs,
|
|
54
|
-
'consumers/jobs/_job',
|
|
55
|
-
local: :job
|
|
56
|
-
)
|
|
57
|
-
%>
|
|
58
|
-
</tbody>
|
|
59
|
-
</table>
|
|
60
|
-
</div>
|
|
39
|
+
<%== partial 'consumers/jobs/jobs_table', locals: { jobs: @pending_jobs } %>
|
|
61
40
|
<% end %>
|
|
62
41
|
</div>
|
|
@@ -27,36 +27,15 @@
|
|
|
27
27
|
|
|
28
28
|
<%== partial 'consumers/consumers/consumer/tabs' %>
|
|
29
29
|
|
|
30
|
-
<% if
|
|
30
|
+
<% if filtering? || !@running_jobs.empty? %>
|
|
31
|
+
<%== filter_box %>
|
|
32
|
+
<% end %>
|
|
33
|
+
|
|
34
|
+
<% if @running_jobs.empty? && filtering? %>
|
|
35
|
+
<%== partial 'shared/no_filter_results' %>
|
|
36
|
+
<% elsif @running_jobs.empty? %>
|
|
31
37
|
<%== partial 'consumers/jobs/no_jobs', locals: { type: 'running' } %>
|
|
32
38
|
<% else %>
|
|
33
|
-
|
|
34
|
-
<table class="data-table">
|
|
35
|
-
<thead>
|
|
36
|
-
<tr>
|
|
37
|
-
<th rowspan="2"><%== sort_link(:topic) %></th>
|
|
38
|
-
<th rowspan="2"><%== sort_link(:consumer) %></th>
|
|
39
|
-
<th rowspan="2"><%== sort_link(:type) %></th>
|
|
40
|
-
<th rowspan="2"><%== sort_link(:messages) %></th>
|
|
41
|
-
<th colspan="3" class="text-center">Offsets</th>
|
|
42
|
-
<th rowspan="2"><%== sort_link('Started', :updated_at, rev: true) %></th>
|
|
43
|
-
</tr>
|
|
44
|
-
<tr>
|
|
45
|
-
<th><%== sort_link(:first_offset) %></th>
|
|
46
|
-
<th><%== sort_link(:last_offset) %></th>
|
|
47
|
-
<th><%== sort_link(:committed_offset) %></th>
|
|
48
|
-
</tr>
|
|
49
|
-
</thead>
|
|
50
|
-
<tbody>
|
|
51
|
-
<%==
|
|
52
|
-
render_each(
|
|
53
|
-
@running_jobs,
|
|
54
|
-
'consumers/jobs/_job',
|
|
55
|
-
local: :job
|
|
56
|
-
)
|
|
57
|
-
%>
|
|
58
|
-
</tbody>
|
|
59
|
-
</table>
|
|
60
|
-
</div>
|
|
39
|
+
<%== partial 'consumers/jobs/jobs_table', locals: { jobs: @running_jobs } %>
|
|
61
40
|
<% end %>
|
|
62
41
|
</div>
|
|
@@ -20,8 +20,16 @@
|
|
|
20
20
|
|
|
21
21
|
<% view_title 'Dead Letter Queue Topics' %>
|
|
22
22
|
|
|
23
|
-
<% if
|
|
23
|
+
<% if filtering? || !@dlq_topics.empty? %>
|
|
24
|
+
<div class="col-span-12 mb-3">
|
|
25
|
+
<%== filter_box %>
|
|
26
|
+
</div>
|
|
27
|
+
<% end %>
|
|
28
|
+
|
|
29
|
+
<% if @dlq_topics.empty? && !filtering? %>
|
|
24
30
|
<%== partial 'dlq/no_topics' %>
|
|
31
|
+
<% elsif @dlq_topics.empty? %>
|
|
32
|
+
<%== partial 'shared/no_filter_results' %>
|
|
25
33
|
<% else %>
|
|
26
34
|
<div class="topic-tiles">
|
|
27
35
|
<%==
|