patient_http-sidekiq 1.0.0
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 +7 -0
- data/ARCHITECTURE.md +496 -0
- data/CHANGELOG.md +16 -0
- data/MIT-LICENSE +20 -0
- data/README.md +620 -0
- data/VERSION +1 -0
- data/lib/patient_http/sidekiq/callback_worker.rb +96 -0
- data/lib/patient_http/sidekiq/configuration.rb +175 -0
- data/lib/patient_http/sidekiq/context.rb +61 -0
- data/lib/patient_http/sidekiq/lifecycle_hooks.rb +42 -0
- data/lib/patient_http/sidekiq/processor_observer.rb +49 -0
- data/lib/patient_http/sidekiq/request_executor.rb +104 -0
- data/lib/patient_http/sidekiq/request_worker.rb +57 -0
- data/lib/patient_http/sidekiq/stats.rb +119 -0
- data/lib/patient_http/sidekiq/task_handler.rb +81 -0
- data/lib/patient_http/sidekiq/task_monitor.rb +542 -0
- data/lib/patient_http/sidekiq/task_monitor_thread.rb +154 -0
- data/lib/patient_http/sidekiq/web_ui/assets/patient-http/css/patient_http.css +249 -0
- data/lib/patient_http/sidekiq/web_ui/locales/ar.yml +26 -0
- data/lib/patient_http/sidekiq/web_ui/locales/cs.yml +26 -0
- data/lib/patient_http/sidekiq/web_ui/locales/da.yml +26 -0
- data/lib/patient_http/sidekiq/web_ui/locales/de.yml +26 -0
- data/lib/patient_http/sidekiq/web_ui/locales/el.yml +26 -0
- data/lib/patient_http/sidekiq/web_ui/locales/en.yml +26 -0
- data/lib/patient_http/sidekiq/web_ui/locales/es.yml +26 -0
- data/lib/patient_http/sidekiq/web_ui/locales/fa.yml +26 -0
- data/lib/patient_http/sidekiq/web_ui/locales/fr.yml +26 -0
- data/lib/patient_http/sidekiq/web_ui/locales/gd.yml +26 -0
- data/lib/patient_http/sidekiq/web_ui/locales/he.yml +26 -0
- data/lib/patient_http/sidekiq/web_ui/locales/hi.yml +26 -0
- data/lib/patient_http/sidekiq/web_ui/locales/it.yml +26 -0
- data/lib/patient_http/sidekiq/web_ui/locales/ja.yml +26 -0
- data/lib/patient_http/sidekiq/web_ui/locales/ko.yml +26 -0
- data/lib/patient_http/sidekiq/web_ui/locales/lt.yml +26 -0
- data/lib/patient_http/sidekiq/web_ui/locales/nb.yml +26 -0
- data/lib/patient_http/sidekiq/web_ui/locales/nl.yml +26 -0
- data/lib/patient_http/sidekiq/web_ui/locales/pl.yml +26 -0
- data/lib/patient_http/sidekiq/web_ui/locales/pt-BR.yml +26 -0
- data/lib/patient_http/sidekiq/web_ui/locales/pt.yml +26 -0
- data/lib/patient_http/sidekiq/web_ui/locales/ru.yml +26 -0
- data/lib/patient_http/sidekiq/web_ui/locales/sv.yml +26 -0
- data/lib/patient_http/sidekiq/web_ui/locales/ta.yml +26 -0
- data/lib/patient_http/sidekiq/web_ui/locales/tr.yml +26 -0
- data/lib/patient_http/sidekiq/web_ui/locales/uk.yml +26 -0
- data/lib/patient_http/sidekiq/web_ui/locales/ur.yml +26 -0
- data/lib/patient_http/sidekiq/web_ui/locales/vi.yml +26 -0
- data/lib/patient_http/sidekiq/web_ui/locales/zh-CN.yml +26 -0
- data/lib/patient_http/sidekiq/web_ui/locales/zh-TW.yml +26 -0
- data/lib/patient_http/sidekiq/web_ui/views/patient_http.html.erb +142 -0
- data/lib/patient_http/sidekiq/web_ui.rb +69 -0
- data/lib/patient_http/sidekiq.rb +328 -0
- data/lib/patient_http-sidekiq.rb +3 -0
- data/patient_http-sidekiq.gemspec +46 -0
- metadata +140 -0
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
lt:
|
|
2
|
+
patient_http_tab: "Async HTTP"
|
|
3
|
+
patient_http_title: "Async HTTP statistika"
|
|
4
|
+
patient_http_total_requests: "Iš viso užklausų"
|
|
5
|
+
patient_http_average_duration: "Vidutinė trukmė (sekundės)"
|
|
6
|
+
patient_http_total_errors: "Iš viso klaidų"
|
|
7
|
+
patient_http_max_capacity_exceeded: "Viršyta maksimali talpa"
|
|
8
|
+
patient_http_connection_capacity: "Ryšio pajėgumas"
|
|
9
|
+
patient_http_max_capacity: "Maks. pajėgumas"
|
|
10
|
+
patient_http_connections: "ryšiai"
|
|
11
|
+
patient_http_currently_inflight: "Šiuo metu vykdoma"
|
|
12
|
+
patient_http_requests: "užklausos"
|
|
13
|
+
patient_http_capacity_utilization: "Pajėgumų išnaudojimas"
|
|
14
|
+
patient_http_used: "naudojama"
|
|
15
|
+
patient_http_per_process_details: "Informacija pagal procesą"
|
|
16
|
+
patient_http_process: "Procesas"
|
|
17
|
+
patient_http_inflight: "Vykdoma"
|
|
18
|
+
patient_http_utilization: "Išnaudojimas"
|
|
19
|
+
patient_http_no_active_processes: "Nėra aktyvių procesų"
|
|
20
|
+
patient_http_clear_stats: "Clear Statistics"
|
|
21
|
+
patient_http_clear_confirm: "Are you sure you want to clear all statistics? This cannot be undone."
|
|
22
|
+
patient_http_http_status_codes: "HTTP būsenos kodai"
|
|
23
|
+
patient_http_status_code: "Būsenos kodas"
|
|
24
|
+
patient_http_count: "Skaičius"
|
|
25
|
+
patient_http_error_types: "Klaidų tipai"
|
|
26
|
+
patient_http_error_type: "Klaidos tipas"
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
nb:
|
|
2
|
+
patient_http_tab: "Async HTTP"
|
|
3
|
+
patient_http_title: "Statistikk for Async HTTP"
|
|
4
|
+
patient_http_total_requests: "Totalt antall forespørsler"
|
|
5
|
+
patient_http_average_duration: "Gjennomsnittlig varighet (sekunder)"
|
|
6
|
+
patient_http_total_errors: "Totalt antall feil"
|
|
7
|
+
patient_http_max_capacity_exceeded: "Maks. kapasitet overskredet"
|
|
8
|
+
patient_http_connection_capacity: "Tilkoblingskapasitet"
|
|
9
|
+
patient_http_max_capacity: "Maksimal kapasitet"
|
|
10
|
+
patient_http_connections: "tilkoblinger"
|
|
11
|
+
patient_http_currently_inflight: "Under behandling"
|
|
12
|
+
patient_http_requests: "forespørsler"
|
|
13
|
+
patient_http_capacity_utilization: "Kapasitetsutnyttelse"
|
|
14
|
+
patient_http_used: "brukt"
|
|
15
|
+
patient_http_per_process_details: "Detaljer per prosess"
|
|
16
|
+
patient_http_process: "Prosess"
|
|
17
|
+
patient_http_inflight: "Under behandling"
|
|
18
|
+
patient_http_utilization: "Utnyttelse"
|
|
19
|
+
patient_http_no_active_processes: "Ingen aktive prosesser"
|
|
20
|
+
patient_http_clear_stats: "Clear Statistics"
|
|
21
|
+
patient_http_clear_confirm: "Are you sure you want to clear all statistics? This cannot be undone."
|
|
22
|
+
patient_http_http_status_codes: "HTTP-statuskoder"
|
|
23
|
+
patient_http_status_code: "Statuskode"
|
|
24
|
+
patient_http_count: "Antall"
|
|
25
|
+
patient_http_error_types: "Feiltyper"
|
|
26
|
+
patient_http_error_type: "Feiltype"
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
nl:
|
|
2
|
+
patient_http_tab: "Async HTTP"
|
|
3
|
+
patient_http_title: "Async HTTP-statistieken"
|
|
4
|
+
patient_http_total_requests: "Totaal aantal verzoeken"
|
|
5
|
+
patient_http_average_duration: "Gemiddelde duur (seconden)"
|
|
6
|
+
patient_http_total_errors: "Totaal aantal fouten"
|
|
7
|
+
patient_http_max_capacity_exceeded: "Max. capaciteit overschreden"
|
|
8
|
+
patient_http_connection_capacity: "Verbindingscapaciteit"
|
|
9
|
+
patient_http_max_capacity: "Max. capaciteit"
|
|
10
|
+
patient_http_connections: "verbindingen"
|
|
11
|
+
patient_http_currently_inflight: "Momenteel in behandeling"
|
|
12
|
+
patient_http_requests: "verzoeken"
|
|
13
|
+
patient_http_capacity_utilization: "Capaciteitsbenutting"
|
|
14
|
+
patient_http_used: "gebruikt"
|
|
15
|
+
patient_http_per_process_details: "Details per proces"
|
|
16
|
+
patient_http_process: "Proces"
|
|
17
|
+
patient_http_inflight: "In behandeling"
|
|
18
|
+
patient_http_utilization: "Benutting"
|
|
19
|
+
patient_http_no_active_processes: "Geen actieve processen"
|
|
20
|
+
patient_http_clear_stats: "Clear Statistics"
|
|
21
|
+
patient_http_clear_confirm: "Are you sure you want to clear all statistics? This cannot be undone."
|
|
22
|
+
patient_http_http_status_codes: "HTTP-statuscodes"
|
|
23
|
+
patient_http_status_code: "Statuscode"
|
|
24
|
+
patient_http_count: "Aantal"
|
|
25
|
+
patient_http_error_types: "Fouttypen"
|
|
26
|
+
patient_http_error_type: "Fouttype"
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
pl:
|
|
2
|
+
patient_http_tab: "Async HTTP"
|
|
3
|
+
patient_http_title: "Statystyki Async HTTP"
|
|
4
|
+
patient_http_total_requests: "Łączna liczba żądań"
|
|
5
|
+
patient_http_average_duration: "Średni czas trwania (sekundy)"
|
|
6
|
+
patient_http_total_errors: "Łączna liczba błędów"
|
|
7
|
+
patient_http_max_capacity_exceeded: "Przekroczono maksymalną pojemność"
|
|
8
|
+
patient_http_connection_capacity: "Pojemność połączeń"
|
|
9
|
+
patient_http_max_capacity: "Maks. pojemność"
|
|
10
|
+
patient_http_connections: "połączenia"
|
|
11
|
+
patient_http_currently_inflight: "W trakcie przetwarzania"
|
|
12
|
+
patient_http_requests: "żądania"
|
|
13
|
+
patient_http_capacity_utilization: "Wykorzystanie pojemności"
|
|
14
|
+
patient_http_used: "użyte"
|
|
15
|
+
patient_http_per_process_details: "Szczegóły procesu"
|
|
16
|
+
patient_http_process: "Proces"
|
|
17
|
+
patient_http_inflight: "W trakcie"
|
|
18
|
+
patient_http_utilization: "Wykorzystanie"
|
|
19
|
+
patient_http_no_active_processes: "Brak aktywnych procesów"
|
|
20
|
+
patient_http_clear_stats: "Clear Statistics"
|
|
21
|
+
patient_http_clear_confirm: "Are you sure you want to clear all statistics? This cannot be undone."
|
|
22
|
+
patient_http_http_status_codes: "Kody statusu HTTP"
|
|
23
|
+
patient_http_status_code: "Kod statusu"
|
|
24
|
+
patient_http_count: "Liczba"
|
|
25
|
+
patient_http_error_types: "Typy błędów"
|
|
26
|
+
patient_http_error_type: "Typ błędu"
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
pt-BR:
|
|
2
|
+
patient_http_tab: "HTTP Assíncrono"
|
|
3
|
+
patient_http_title: "Estatísticas de HTTP Assíncrono"
|
|
4
|
+
patient_http_total_requests: "Total de Requisições"
|
|
5
|
+
patient_http_average_duration: "Duração Média (segundos)"
|
|
6
|
+
patient_http_total_errors: "Total de Erros"
|
|
7
|
+
patient_http_max_capacity_exceeded: "Capacidade Máxima Excedida"
|
|
8
|
+
patient_http_connection_capacity: "Capacidade de Conexão"
|
|
9
|
+
patient_http_max_capacity: "Capacidade Máx."
|
|
10
|
+
patient_http_connections: "conexões"
|
|
11
|
+
patient_http_currently_inflight: "Atualmente em Andamento"
|
|
12
|
+
patient_http_requests: "requisições"
|
|
13
|
+
patient_http_capacity_utilization: "Utilização da Capacidade"
|
|
14
|
+
patient_http_used: "usado"
|
|
15
|
+
patient_http_per_process_details: "Detalhes por Processo"
|
|
16
|
+
patient_http_process: "Processo"
|
|
17
|
+
patient_http_inflight: "Em Andamento"
|
|
18
|
+
patient_http_utilization: "Utilização"
|
|
19
|
+
patient_http_no_active_processes: "Nenhum processo ativo"
|
|
20
|
+
patient_http_clear_stats: "Clear Statistics"
|
|
21
|
+
patient_http_clear_confirm: "Are you sure you want to clear all statistics? This cannot be undone."
|
|
22
|
+
patient_http_http_status_codes: "Códigos de Status HTTP"
|
|
23
|
+
patient_http_status_code: "Código de Status"
|
|
24
|
+
patient_http_count: "Quantidade"
|
|
25
|
+
patient_http_error_types: "Tipos de Erros"
|
|
26
|
+
patient_http_error_type: "Tipo de Erro"
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
pt:
|
|
2
|
+
patient_http_tab: "HTTP Assíncrono"
|
|
3
|
+
patient_http_title: "Estatísticas de HTTP Assíncrono"
|
|
4
|
+
patient_http_total_requests: "Total de Pedidos"
|
|
5
|
+
patient_http_average_duration: "Duração Média (segundos)"
|
|
6
|
+
patient_http_total_errors: "Total de Erros"
|
|
7
|
+
patient_http_max_capacity_exceeded: "Capacidade Máxima Excedida"
|
|
8
|
+
patient_http_connection_capacity: "Capacidade de Ligação"
|
|
9
|
+
patient_http_max_capacity: "Capacidade Máx."
|
|
10
|
+
patient_http_connections: "ligações"
|
|
11
|
+
patient_http_currently_inflight: "Atualmente em Curso"
|
|
12
|
+
patient_http_requests: "pedidos"
|
|
13
|
+
patient_http_capacity_utilization: "Utilização da Capacidade"
|
|
14
|
+
patient_http_used: "usado"
|
|
15
|
+
patient_http_per_process_details: "Detalhes por Processo"
|
|
16
|
+
patient_http_process: "Processo"
|
|
17
|
+
patient_http_inflight: "Em Curso"
|
|
18
|
+
patient_http_utilization: "Utilização"
|
|
19
|
+
patient_http_no_active_processes: "Sem processos ativos"
|
|
20
|
+
patient_http_clear_stats: "Clear Statistics"
|
|
21
|
+
patient_http_clear_confirm: "Are you sure you want to clear all statistics? This cannot be undone."
|
|
22
|
+
patient_http_http_status_codes: "Códigos de Estado HTTP"
|
|
23
|
+
patient_http_status_code: "Código de Estado"
|
|
24
|
+
patient_http_count: "Quantidade"
|
|
25
|
+
patient_http_error_types: "Tipos de Erros"
|
|
26
|
+
patient_http_error_type: "Tipo de Erro"
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
ru:
|
|
2
|
+
patient_http_tab: "Асинхр. HTTP"
|
|
3
|
+
patient_http_title: "Статистика асинхр. HTTP"
|
|
4
|
+
patient_http_total_requests: "Всего запросов"
|
|
5
|
+
patient_http_average_duration: "Средняя длительность (секунды)"
|
|
6
|
+
patient_http_total_errors: "Всего ошибок"
|
|
7
|
+
patient_http_max_capacity_exceeded: "Превышена макс. емкость"
|
|
8
|
+
patient_http_connection_capacity: "Емкость подключений"
|
|
9
|
+
patient_http_max_capacity: "Макс. емкость"
|
|
10
|
+
patient_http_connections: "подключений"
|
|
11
|
+
patient_http_currently_inflight: "В обработке"
|
|
12
|
+
patient_http_requests: "запросов"
|
|
13
|
+
patient_http_capacity_utilization: "Использование емкости"
|
|
14
|
+
patient_http_used: "занято"
|
|
15
|
+
patient_http_per_process_details: "Детали по процессам"
|
|
16
|
+
patient_http_process: "Процесс"
|
|
17
|
+
patient_http_inflight: "В обработке"
|
|
18
|
+
patient_http_utilization: "Загрузка"
|
|
19
|
+
patient_http_no_active_processes: "Нет активных процессов"
|
|
20
|
+
patient_http_clear_stats: "Clear Statistics"
|
|
21
|
+
patient_http_clear_confirm: "Are you sure you want to clear all statistics? This cannot be undone."
|
|
22
|
+
patient_http_http_status_codes: "HTTP коды состояния"
|
|
23
|
+
patient_http_status_code: "Код состояния"
|
|
24
|
+
patient_http_count: "Количество"
|
|
25
|
+
patient_http_error_types: "Типы ошибок"
|
|
26
|
+
patient_http_error_type: "Тип ошибки"
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
sv:
|
|
2
|
+
patient_http_tab: "Async HTTP"
|
|
3
|
+
patient_http_title: "Async HTTP-statistik"
|
|
4
|
+
patient_http_total_requests: "Totalt antal förfrågningar"
|
|
5
|
+
patient_http_average_duration: "Genomsnittlig varaktighet (sekunder)"
|
|
6
|
+
patient_http_total_errors: "Totalt antal fel"
|
|
7
|
+
patient_http_max_capacity_exceeded: "Max kapacitet överskreds"
|
|
8
|
+
patient_http_connection_capacity: "Anslutningskapacitet"
|
|
9
|
+
patient_http_max_capacity: "Maximal kapacitet"
|
|
10
|
+
patient_http_connections: "anslutningar"
|
|
11
|
+
patient_http_currently_inflight: "Pågående"
|
|
12
|
+
patient_http_requests: "förfrågningar"
|
|
13
|
+
patient_http_capacity_utilization: "Kapacitetsutnyttjande"
|
|
14
|
+
patient_http_used: "använt"
|
|
15
|
+
patient_http_per_process_details: "Detaljer per process"
|
|
16
|
+
patient_http_process: "Process"
|
|
17
|
+
patient_http_inflight: "Pågående"
|
|
18
|
+
patient_http_utilization: "Utnyttjande"
|
|
19
|
+
patient_http_no_active_processes: "Inga aktiva processer"
|
|
20
|
+
patient_http_clear_stats: "Clear Statistics"
|
|
21
|
+
patient_http_clear_confirm: "Are you sure you want to clear all statistics? This cannot be undone."
|
|
22
|
+
patient_http_http_status_codes: "HTTP-statuskoder"
|
|
23
|
+
patient_http_status_code: "Statuskod"
|
|
24
|
+
patient_http_count: "Antal"
|
|
25
|
+
patient_http_error_types: "Feltyper"
|
|
26
|
+
patient_http_error_type: "Feltyp"
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
ta:
|
|
2
|
+
patient_http_tab: "Async HTTP"
|
|
3
|
+
patient_http_title: "Async HTTP புள்ளிவிவரங்கள்"
|
|
4
|
+
patient_http_total_requests: "மொத்தக் கோரிக்கைகள்"
|
|
5
|
+
patient_http_average_duration: "சராசரி கால அளவு (விநாடிகள்)"
|
|
6
|
+
patient_http_total_errors: "மொத்தப் பிழைகள்"
|
|
7
|
+
patient_http_max_capacity_exceeded: "அதிகபட்ச திறன் மீறப்பட்டது"
|
|
8
|
+
patient_http_connection_capacity: "இணைப்புக் கொள்ளளவு"
|
|
9
|
+
patient_http_max_capacity: "அதிகபட்சக் கொள்ளளவு"
|
|
10
|
+
patient_http_connections: "இணைப்புகள்"
|
|
11
|
+
patient_http_currently_inflight: "தற்போது செயலில்"
|
|
12
|
+
patient_http_requests: "கோரிக்கைகள்"
|
|
13
|
+
patient_http_capacity_utilization: "கொள்ளளவு பயன்பாடு"
|
|
14
|
+
patient_http_used: "பயன்படுத்தப்பட்டது"
|
|
15
|
+
patient_http_per_process_details: "செயல்முறை வாரியான விவரங்கள்"
|
|
16
|
+
patient_http_process: "செயல்முறை"
|
|
17
|
+
patient_http_inflight: "செயலில்"
|
|
18
|
+
patient_http_utilization: "பயன்பாடு"
|
|
19
|
+
patient_http_no_active_processes: "செயலில் உள்ள செயல்முறைகள் இல்லை"
|
|
20
|
+
patient_http_clear_stats: "Clear Statistics"
|
|
21
|
+
patient_http_clear_confirm: "Are you sure you want to clear all statistics? This cannot be undone."
|
|
22
|
+
patient_http_http_status_codes: "HTTP நிலைக் குறியீடுகள்"
|
|
23
|
+
patient_http_status_code: "நிலைக் குறியீடு"
|
|
24
|
+
patient_http_count: "எண்ணிக்கை"
|
|
25
|
+
patient_http_error_types: "பிழை வகைகள்"
|
|
26
|
+
patient_http_error_type: "பிழை வகை"
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
tr:
|
|
2
|
+
patient_http_tab: "Asenkron HTTP"
|
|
3
|
+
patient_http_title: "Asenkron HTTP İstatistikleri"
|
|
4
|
+
patient_http_total_requests: "Toplam İstek"
|
|
5
|
+
patient_http_average_duration: "Ortalama Süre (saniye)"
|
|
6
|
+
patient_http_total_errors: "Toplam Hata"
|
|
7
|
+
patient_http_max_capacity_exceeded: "Maks. Kapasite Aşıldı"
|
|
8
|
+
patient_http_connection_capacity: "Bağlantı Kapasitesi"
|
|
9
|
+
patient_http_max_capacity: "Maks. Kapasite"
|
|
10
|
+
patient_http_connections: "bağlantı"
|
|
11
|
+
patient_http_currently_inflight: "Şu Anda İşlemde"
|
|
12
|
+
patient_http_requests: "istek"
|
|
13
|
+
patient_http_capacity_utilization: "Kapasite Kullanımı"
|
|
14
|
+
patient_http_used: "kullanılan"
|
|
15
|
+
patient_http_per_process_details: "Süreç Başına Ayrıntılar"
|
|
16
|
+
patient_http_process: "Süreç"
|
|
17
|
+
patient_http_inflight: "İşlemde"
|
|
18
|
+
patient_http_utilization: "Kullanım"
|
|
19
|
+
patient_http_no_active_processes: "Etkin süreç yok"
|
|
20
|
+
patient_http_clear_stats: "Clear Statistics"
|
|
21
|
+
patient_http_clear_confirm: "Are you sure you want to clear all statistics? This cannot be undone."
|
|
22
|
+
patient_http_http_status_codes: "HTTP Durum Kodları"
|
|
23
|
+
patient_http_status_code: "Durum Kodu"
|
|
24
|
+
patient_http_count: "Sayı"
|
|
25
|
+
patient_http_error_types: "Hata Türleri"
|
|
26
|
+
patient_http_error_type: "Hata Türü"
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
uk:
|
|
2
|
+
patient_http_tab: "Асинхр. HTTP"
|
|
3
|
+
patient_http_title: "Статистика асинхр. HTTP"
|
|
4
|
+
patient_http_total_requests: "Усього запитів"
|
|
5
|
+
patient_http_average_duration: "Середня тривалість (секунди)"
|
|
6
|
+
patient_http_total_errors: "Усього помилок"
|
|
7
|
+
patient_http_max_capacity_exceeded: "Перевищено макс. ємність"
|
|
8
|
+
patient_http_connection_capacity: "Ємність з'єднань"
|
|
9
|
+
patient_http_max_capacity: "Макс. ємність"
|
|
10
|
+
patient_http_connections: "з'єднань"
|
|
11
|
+
patient_http_currently_inflight: "В обробці"
|
|
12
|
+
patient_http_requests: "запитів"
|
|
13
|
+
patient_http_capacity_utilization: "Використання ємності"
|
|
14
|
+
patient_http_used: "використано"
|
|
15
|
+
patient_http_per_process_details: "Деталі за процесами"
|
|
16
|
+
patient_http_process: "Процес"
|
|
17
|
+
patient_http_inflight: "В обробці"
|
|
18
|
+
patient_http_utilization: "Використання"
|
|
19
|
+
patient_http_no_active_processes: "Немає активних процесів"
|
|
20
|
+
patient_http_clear_stats: "Clear Statistics"
|
|
21
|
+
patient_http_clear_confirm: "Are you sure you want to clear all statistics? This cannot be undone."
|
|
22
|
+
patient_http_http_status_codes: "HTTP коди стану"
|
|
23
|
+
patient_http_status_code: "Код стану"
|
|
24
|
+
patient_http_count: "Кількість"
|
|
25
|
+
patient_http_error_types: "Типи помилок"
|
|
26
|
+
patient_http_error_type: "Тип помилки"
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
ur:
|
|
2
|
+
patient_http_tab: "غیر ہم وقت HTTP"
|
|
3
|
+
patient_http_title: "غیر ہم وقت HTTP کے اعدادوشمار"
|
|
4
|
+
patient_http_total_requests: "کل درخواستیں"
|
|
5
|
+
patient_http_average_duration: "اوسط دورانیہ (سیکنڈ)"
|
|
6
|
+
patient_http_total_errors: "کل غلطیاں"
|
|
7
|
+
patient_http_max_capacity_exceeded: "زیادہ سے زیادہ گنجائش سے تجاوز"
|
|
8
|
+
patient_http_connection_capacity: "کنکشن کی گنجائش"
|
|
9
|
+
patient_http_max_capacity: "زیادہ سے زیادہ گنجائش"
|
|
10
|
+
patient_http_connections: "کنکشنز"
|
|
11
|
+
patient_http_currently_inflight: "فی الحال جاری"
|
|
12
|
+
patient_http_requests: "درخواستیں"
|
|
13
|
+
patient_http_capacity_utilization: "گنجائش کا استعمال"
|
|
14
|
+
patient_http_used: "استعمال شدہ"
|
|
15
|
+
patient_http_per_process_details: "عمل کی تفصیلات"
|
|
16
|
+
patient_http_process: "عمل"
|
|
17
|
+
patient_http_inflight: "جاری"
|
|
18
|
+
patient_http_utilization: "استعمال"
|
|
19
|
+
patient_http_no_active_processes: "کوئی فعال عمل نہیں"
|
|
20
|
+
patient_http_clear_stats: "Clear Statistics"
|
|
21
|
+
patient_http_clear_confirm: "Are you sure you want to clear all statistics? This cannot be undone."
|
|
22
|
+
patient_http_http_status_codes: "HTTP اسٹیٹس کوڈز"
|
|
23
|
+
patient_http_status_code: "اسٹیٹس کوڈ"
|
|
24
|
+
patient_http_count: "تعداد"
|
|
25
|
+
patient_http_error_types: "غلطی کی اقسام"
|
|
26
|
+
patient_http_error_type: "غلطی کی قسم"
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
vi:
|
|
2
|
+
patient_http_tab: "HTTP Bất đồng bộ"
|
|
3
|
+
patient_http_title: "Thống kê HTTP Bất đồng bộ"
|
|
4
|
+
patient_http_total_requests: "Tổng số yêu cầu"
|
|
5
|
+
patient_http_average_duration: "Thời lượng trung bình (giây)"
|
|
6
|
+
patient_http_total_errors: "Tổng số lỗi"
|
|
7
|
+
patient_http_max_capacity_exceeded: "Vượt quá dung lượng tối đa"
|
|
8
|
+
patient_http_connection_capacity: "Dung lượng kết nối"
|
|
9
|
+
patient_http_max_capacity: "Dung lượng tối đa"
|
|
10
|
+
patient_http_connections: "kết nối"
|
|
11
|
+
patient_http_currently_inflight: "Đang xử lý"
|
|
12
|
+
patient_http_requests: "yêu cầu"
|
|
13
|
+
patient_http_capacity_utilization: "Sử dụng dung lượng"
|
|
14
|
+
patient_http_used: "đã dùng"
|
|
15
|
+
patient_http_per_process_details: "Chi tiết theo tiến trình"
|
|
16
|
+
patient_http_process: "Tiến trình"
|
|
17
|
+
patient_http_inflight: "Đang xử lý"
|
|
18
|
+
patient_http_utilization: "Mức sử dụng"
|
|
19
|
+
patient_http_no_active_processes: "Không có tiến trình hoạt động"
|
|
20
|
+
patient_http_clear_stats: "Clear Statistics"
|
|
21
|
+
patient_http_clear_confirm: "Are you sure you want to clear all statistics? This cannot be undone."
|
|
22
|
+
patient_http_http_status_codes: "Mã trạng thái HTTP"
|
|
23
|
+
patient_http_status_code: "Mã trạng thái"
|
|
24
|
+
patient_http_count: "Số lượng"
|
|
25
|
+
patient_http_error_types: "Loại lỗi"
|
|
26
|
+
patient_http_error_type: "Loại lỗi"
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
zh-CN:
|
|
2
|
+
patient_http_tab: "异步 HTTP"
|
|
3
|
+
patient_http_title: "异步 HTTP 统计"
|
|
4
|
+
patient_http_total_requests: "总请求数"
|
|
5
|
+
patient_http_average_duration: "平均耗时(秒)"
|
|
6
|
+
patient_http_total_errors: "总错误数"
|
|
7
|
+
patient_http_max_capacity_exceeded: "超过最大容量"
|
|
8
|
+
patient_http_connection_capacity: "连接容量"
|
|
9
|
+
patient_http_max_capacity: "最大容量"
|
|
10
|
+
patient_http_connections: "连接数"
|
|
11
|
+
patient_http_currently_inflight: "当前进行中"
|
|
12
|
+
patient_http_requests: "请求"
|
|
13
|
+
patient_http_capacity_utilization: "容量利用率"
|
|
14
|
+
patient_http_used: "已用"
|
|
15
|
+
patient_http_per_process_details: "每进程详情"
|
|
16
|
+
patient_http_process: "进程"
|
|
17
|
+
patient_http_inflight: "进行中"
|
|
18
|
+
patient_http_utilization: "利用率"
|
|
19
|
+
patient_http_no_active_processes: "无活动进程"
|
|
20
|
+
patient_http_clear_stats: "Clear Statistics"
|
|
21
|
+
patient_http_clear_confirm: "Are you sure you want to clear all statistics? This cannot be undone."
|
|
22
|
+
patient_http_http_status_codes: "HTTP 状态码"
|
|
23
|
+
patient_http_status_code: "状态码"
|
|
24
|
+
patient_http_count: "数量"
|
|
25
|
+
patient_http_error_types: "错误类型"
|
|
26
|
+
patient_http_error_type: "错误类型"
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
zh-TW:
|
|
2
|
+
patient_http_tab: "非同步 HTTP"
|
|
3
|
+
patient_http_title: "非同步 HTTP 統計"
|
|
4
|
+
patient_http_total_requests: "總請求數"
|
|
5
|
+
patient_http_average_duration: "平均持續時間(秒)"
|
|
6
|
+
patient_http_total_errors: "總錯誤數"
|
|
7
|
+
patient_http_max_capacity_exceeded: "超過最大容量"
|
|
8
|
+
patient_http_connection_capacity: "連線容量"
|
|
9
|
+
patient_http_max_capacity: "最大容量"
|
|
10
|
+
patient_http_connections: "連線數"
|
|
11
|
+
patient_http_currently_inflight: "目前處理中"
|
|
12
|
+
patient_http_requests: "請求"
|
|
13
|
+
patient_http_capacity_utilization: "容量使用率"
|
|
14
|
+
patient_http_used: "已使用"
|
|
15
|
+
patient_http_per_process_details: "個別處理程序詳情"
|
|
16
|
+
patient_http_process: "處理程序"
|
|
17
|
+
patient_http_inflight: "處理中"
|
|
18
|
+
patient_http_utilization: "使用率"
|
|
19
|
+
patient_http_no_active_processes: "無活動處理程序"
|
|
20
|
+
patient_http_clear_stats: "Clear Statistics"
|
|
21
|
+
patient_http_clear_confirm: "Are you sure you want to clear all statistics? This cannot be undone."
|
|
22
|
+
patient_http_http_status_codes: "HTTP 狀態碼"
|
|
23
|
+
patient_http_status_code: "狀態碼"
|
|
24
|
+
patient_http_count: "數量"
|
|
25
|
+
patient_http_error_types: "錯誤類型"
|
|
26
|
+
patient_http_error_type: "錯誤類型"
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
<div class="patient-http-dashboard">
|
|
2
|
+
<div class="section">
|
|
3
|
+
<div class="header-with-button">
|
|
4
|
+
<h2><%= t('patient_http_title') %></h2>
|
|
5
|
+
<form action="<%= root_path %>patient-http/clear" method="post" class="clear-stats-form">
|
|
6
|
+
<%= csrf_tag %>
|
|
7
|
+
<button type="submit" class="btn btn-danger" onclick="return confirm('<%= t('patient_http_clear_confirm') %>');">
|
|
8
|
+
<%= t('patient_http_clear_stats') %>
|
|
9
|
+
</button>
|
|
10
|
+
</form>
|
|
11
|
+
</div>
|
|
12
|
+
|
|
13
|
+
<div class="patient-http-stats">
|
|
14
|
+
<!-- Summary Cards -->
|
|
15
|
+
<div class="stats-grid">
|
|
16
|
+
<div class="stat-card">
|
|
17
|
+
<div class="stat-label"><%= t('patient_http_total_requests') %></div>
|
|
18
|
+
<div class="stat-value"><%= number_with_delimiter(total_requests) %></div>
|
|
19
|
+
</div>
|
|
20
|
+
<div class="stat-card">
|
|
21
|
+
<div class="stat-label"><%= t('patient_http_total_errors') %></div>
|
|
22
|
+
<div class="stat-value error"><%= number_with_delimiter(totals['errors'] || 0) %></div>
|
|
23
|
+
</div>
|
|
24
|
+
<div class="stat-card">
|
|
25
|
+
<div class="stat-label"><%= t('patient_http_max_capacity_exceeded') %></div>
|
|
26
|
+
<div class="stat-value"><%= number_with_delimiter(totals['max_capacity_exceeded'] || 0) %></div>
|
|
27
|
+
</div>
|
|
28
|
+
<div class="stat-card">
|
|
29
|
+
<div class="stat-label"><%= t('patient_http_average_duration') %></div>
|
|
30
|
+
<div class="stat-value">
|
|
31
|
+
<span><%= avg_duration %></span>
|
|
32
|
+
</div>
|
|
33
|
+
</div>
|
|
34
|
+
</div>
|
|
35
|
+
|
|
36
|
+
<!-- Capacity Information -->
|
|
37
|
+
<div class="capacity-section">
|
|
38
|
+
<h3><%= t('patient_http_connection_capacity') %></h3>
|
|
39
|
+
<div class="capacity-cards">
|
|
40
|
+
<div class="capacity-card">
|
|
41
|
+
<div class="capacity-label"><%= t('patient_http_max_capacity') %></div>
|
|
42
|
+
<div class="capacity-value"><%= number_with_delimiter(max_capacity) %></div>
|
|
43
|
+
<div class="capacity-unit"><%= t('patient_http_connections') %></div>
|
|
44
|
+
</div>
|
|
45
|
+
<div class="capacity-card">
|
|
46
|
+
<div class="capacity-label"><%= t('patient_http_currently_inflight') %></div>
|
|
47
|
+
<div class="capacity-value"><%= number_with_delimiter(current_inflight) %></div>
|
|
48
|
+
<div class="capacity-unit"><%= t('patient_http_requests') %></div>
|
|
49
|
+
</div>
|
|
50
|
+
<div class="capacity-card">
|
|
51
|
+
<div class="capacity-label"><%= t('patient_http_capacity_utilization') %></div>
|
|
52
|
+
<div class="capacity-value"><%= utilization %>%</div>
|
|
53
|
+
<div class="capacity-unit"><%= t('patient_http_used') %></div>
|
|
54
|
+
</div>
|
|
55
|
+
</div>
|
|
56
|
+
|
|
57
|
+
<!-- Process Breakdown -->
|
|
58
|
+
<div class="process-breakdown">
|
|
59
|
+
<h4><%= t('patient_http_per_process_details') %></h4>
|
|
60
|
+
<table class="table">
|
|
61
|
+
<thead>
|
|
62
|
+
<tr>
|
|
63
|
+
<th><%= t('patient_http_process') %></th>
|
|
64
|
+
<th><%= t('patient_http_inflight') %></th>
|
|
65
|
+
<th><%= t('patient_http_max_capacity') %></th>
|
|
66
|
+
<th><%= t('patient_http_utilization') %></th>
|
|
67
|
+
</tr>
|
|
68
|
+
</thead>
|
|
69
|
+
<tbody>
|
|
70
|
+
<% if processes.empty? %>
|
|
71
|
+
<tr class="empty-state">
|
|
72
|
+
<td colspan="4"><%= t('patient_http_no_active_processes') %></td>
|
|
73
|
+
</tr>
|
|
74
|
+
<% else %>
|
|
75
|
+
<% processes.each do |process_id, info| %>
|
|
76
|
+
<% utilization = info[:max_capacity] > 0 ? (info[:inflight].to_f / info[:max_capacity] * 100).round(1) : 0 %>
|
|
77
|
+
<tr>
|
|
78
|
+
<td><%= h(process_id) %></td>
|
|
79
|
+
<td><%= number_with_delimiter(info[:inflight]) %></td>
|
|
80
|
+
<td><%= number_with_delimiter(info[:max_capacity]) %></td>
|
|
81
|
+
<td><%= utilization %>%</td>
|
|
82
|
+
</tr>
|
|
83
|
+
<% end %>
|
|
84
|
+
<% end %>
|
|
85
|
+
</tbody>
|
|
86
|
+
</table>
|
|
87
|
+
</div>
|
|
88
|
+
</div>
|
|
89
|
+
|
|
90
|
+
<!-- HTTP Status Codes Breakdown -->
|
|
91
|
+
<% http_status_counts = totals['http_status_counts'] || {} %>
|
|
92
|
+
<% unless http_status_counts.empty? %>
|
|
93
|
+
<div class="breakdown-section">
|
|
94
|
+
<h3><%= t('patient_http_http_status_codes') %></h3>
|
|
95
|
+
<table class="table">
|
|
96
|
+
<thead>
|
|
97
|
+
<tr>
|
|
98
|
+
<th><%= t('patient_http_status_code') %></th>
|
|
99
|
+
<th><%= t('patient_http_count') %></th>
|
|
100
|
+
</tr>
|
|
101
|
+
</thead>
|
|
102
|
+
<tbody>
|
|
103
|
+
<% http_status_counts.sort.each do |status, count| %>
|
|
104
|
+
<tr>
|
|
105
|
+
<td><%= status %></td>
|
|
106
|
+
<td><%= number_with_delimiter(count) %></td>
|
|
107
|
+
</tr>
|
|
108
|
+
<% end %>
|
|
109
|
+
</tbody>
|
|
110
|
+
</table>
|
|
111
|
+
</div>
|
|
112
|
+
<% end %>
|
|
113
|
+
|
|
114
|
+
<!-- Error Types Breakdown -->
|
|
115
|
+
<% error_type_counts = totals['error_type_counts'] || {} %>
|
|
116
|
+
<% unless error_type_counts.empty? %>
|
|
117
|
+
<div class="breakdown-section">
|
|
118
|
+
<h3><%= t('patient_http_error_types') %></h3>
|
|
119
|
+
<table class="table">
|
|
120
|
+
<thead>
|
|
121
|
+
<tr>
|
|
122
|
+
<th><%= t('patient_http_error_type') %></th>
|
|
123
|
+
<th><%= t('patient_http_count') %></th>
|
|
124
|
+
</tr>
|
|
125
|
+
</thead>
|
|
126
|
+
<tbody>
|
|
127
|
+
<% error_type_counts.sort_by { |_, count| -count }.each do |error_type, count| %>
|
|
128
|
+
<tr>
|
|
129
|
+
<td><%= h(error_type) %></td>
|
|
130
|
+
<td><%= number_with_delimiter(count) %></td>
|
|
131
|
+
</tr>
|
|
132
|
+
<% end %>
|
|
133
|
+
</tbody>
|
|
134
|
+
</table>
|
|
135
|
+
</div>
|
|
136
|
+
<% end %>
|
|
137
|
+
</div>
|
|
138
|
+
</div>
|
|
139
|
+
</div>
|
|
140
|
+
|
|
141
|
+
<%# Note: style tag does not use the "=" to send output %>
|
|
142
|
+
<% style_tag("patient-http/css/patient_http.css") %>
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "sidekiq/web"
|
|
4
|
+
|
|
5
|
+
module PatientHttp
|
|
6
|
+
module Sidekiq
|
|
7
|
+
# Web UI extension for Sidekiq
|
|
8
|
+
# Adds an "Async HTTP" tab to the main Sidekiq dashboard
|
|
9
|
+
# Works with Sidekiq 7.3+ and 8.0+
|
|
10
|
+
class WebUI
|
|
11
|
+
ROOT = File.join(__dir__, "web_ui")
|
|
12
|
+
VIEWS = File.join(ROOT, "views")
|
|
13
|
+
|
|
14
|
+
class << self
|
|
15
|
+
# This method is called by Sidekiq::Web when registering the extension
|
|
16
|
+
def registered(app)
|
|
17
|
+
# GET route for the main PatientHttp dashboard page
|
|
18
|
+
app.get "/patient-http" do
|
|
19
|
+
stats = PatientHttp::Sidekiq::Stats.new
|
|
20
|
+
|
|
21
|
+
# Get process-level inflight and capacity data from TaskMonitor
|
|
22
|
+
processes = PatientHttp::Sidekiq::TaskMonitor.inflight_counts_by_process
|
|
23
|
+
|
|
24
|
+
# Get totals and calculate derived values
|
|
25
|
+
totals = stats.get_totals
|
|
26
|
+
total_requests = totals["requests"] || 0
|
|
27
|
+
avg_duration = (total_requests > 0) ? ((totals["duration"] || 0).to_f / total_requests).round(3) : 0.0
|
|
28
|
+
|
|
29
|
+
# Capacity metrics from TaskMonitor
|
|
30
|
+
max_capacity = processes.values.sum { |data| data[:max_capacity] }
|
|
31
|
+
current_inflight = processes.values.sum { |data| data[:inflight] }
|
|
32
|
+
utilization = (max_capacity > 0) ? (current_inflight.to_f / max_capacity * 100).round(1) : 0
|
|
33
|
+
|
|
34
|
+
erb(:patient_http, views: PatientHttp::Sidekiq::WebUI::VIEWS, locals: {
|
|
35
|
+
totals: totals,
|
|
36
|
+
total_requests: total_requests,
|
|
37
|
+
avg_duration: avg_duration,
|
|
38
|
+
max_capacity: max_capacity,
|
|
39
|
+
current_inflight: current_inflight,
|
|
40
|
+
utilization: utilization,
|
|
41
|
+
processes: processes
|
|
42
|
+
})
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# POST route for clearing statistics
|
|
46
|
+
app.post "/patient-http/clear" do
|
|
47
|
+
PatientHttp::Sidekiq::Stats.new.reset!
|
|
48
|
+
redirect "#{root_path}patient-http"
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
# Auto-register the web UI extension if Sidekiq::Web is available
|
|
56
|
+
# This is called after require "sidekiq/web" in the application
|
|
57
|
+
if defined?(::Sidekiq::Web)
|
|
58
|
+
::Sidekiq::Web.configure do |config|
|
|
59
|
+
config.register_extension(
|
|
60
|
+
PatientHttp::Sidekiq::WebUI,
|
|
61
|
+
name: "patient-http",
|
|
62
|
+
tab: "patient_http_tab",
|
|
63
|
+
index: "patient-http",
|
|
64
|
+
root_dir: PatientHttp::Sidekiq::WebUI::ROOT,
|
|
65
|
+
asset_paths: ["css", "js"]
|
|
66
|
+
)
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|