pgbus 0.17.1 → 0.17.2

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 (128) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +38 -0
  3. data/README.md +48 -13
  4. data/app/controllers/concerns/pgbus/job_listing.rb +37 -0
  5. data/app/controllers/concerns/pgbus/process_listing.rb +17 -0
  6. data/app/controllers/pgbus/application_controller.rb +5 -2
  7. data/app/controllers/pgbus/batches_controller.rb +4 -1
  8. data/app/controllers/pgbus/dashboard_controller.rb +20 -6
  9. data/app/controllers/pgbus/dead_letter_controller.rb +27 -3
  10. data/app/controllers/pgbus/events_controller.rb +52 -3
  11. data/app/controllers/pgbus/insights_controller.rb +19 -1
  12. data/app/controllers/pgbus/jobs_controller.rb +45 -26
  13. data/app/controllers/pgbus/locks_controller.rb +7 -2
  14. data/app/controllers/pgbus/outbox_controller.rb +4 -1
  15. data/app/controllers/pgbus/processes_controller.rb +3 -1
  16. data/app/controllers/pgbus/queues_controller.rb +16 -4
  17. data/app/controllers/pgbus/recurring_tasks_controller.rb +5 -7
  18. data/app/frontend/pgbus/modules/charts.js +119 -77
  19. data/app/frontend/pgbus/style.css +1 -1
  20. data/app/frontend/pgbus/tailwind.css +18 -0
  21. data/app/helpers/pgbus/application_helper.rb +155 -113
  22. data/app/helpers/pgbus/button_helper.rb +88 -0
  23. data/app/helpers/pgbus/dashboard_helper.rb +157 -0
  24. data/app/helpers/pgbus/events_helper.rb +40 -0
  25. data/app/helpers/pgbus/insights_helper.rb +39 -0
  26. data/app/helpers/pgbus/processes_helper.rb +79 -0
  27. data/app/views/pgbus/batches/_batches_table.html.erb +16 -13
  28. data/app/views/pgbus/batches/show.html.erb +3 -4
  29. data/app/views/pgbus/dashboard/_processes_table.html.erb +11 -11
  30. data/app/views/pgbus/dashboard/_queue_health.html.erb +42 -51
  31. data/app/views/pgbus/dashboard/_queues_table.html.erb +18 -16
  32. data/app/views/pgbus/dashboard/_recent_failures.html.erb +16 -12
  33. data/app/views/pgbus/dashboard/_stats_cards.html.erb +70 -36
  34. data/app/views/pgbus/dashboard/show.html.erb +1 -1
  35. data/app/views/pgbus/dead_letter/_error.html.erb +13 -0
  36. data/app/views/pgbus/dead_letter/_messages_table.html.erb +37 -96
  37. data/app/views/pgbus/dead_letter/_row.html.erb +75 -0
  38. data/app/views/pgbus/dead_letter/index.html.erb +6 -9
  39. data/app/views/pgbus/dead_letter/show.html.erb +37 -21
  40. data/app/views/pgbus/events/_list.html.erb +55 -0
  41. data/app/views/pgbus/events/_processed_table.html.erb +45 -0
  42. data/app/views/pgbus/events/_replay.html.erb +10 -0
  43. data/app/views/pgbus/events/_row.html.erb +162 -0
  44. data/app/views/pgbus/events/_tabs.html.erb +13 -0
  45. data/app/views/pgbus/events/index.html.erb +27 -48
  46. data/app/views/pgbus/events/show.html.erb +25 -7
  47. data/app/views/pgbus/insights/_chart_card.html.erb +21 -0
  48. data/app/views/pgbus/insights/_latency_table.html.erb +20 -0
  49. data/app/views/pgbus/insights/_status_table.html.erb +19 -0
  50. data/app/views/pgbus/insights/_throughput_table.html.erb +18 -0
  51. data/app/views/pgbus/insights/show.html.erb +83 -100
  52. data/app/views/pgbus/jobs/_list.html.erb +64 -0
  53. data/app/views/pgbus/jobs/_row.html.erb +107 -0
  54. data/app/views/pgbus/jobs/_tabs.html.erb +14 -0
  55. data/app/views/pgbus/jobs/index.html.erb +10 -10
  56. data/app/views/pgbus/jobs/show.html.erb +18 -20
  57. data/app/views/pgbus/locks/_concurrency.html.erb +25 -23
  58. data/app/views/pgbus/locks/_uniqueness.html.erb +20 -22
  59. data/app/views/pgbus/outbox/index.html.erb +30 -27
  60. data/app/views/pgbus/processes/_processes_table.html.erb +6 -25
  61. data/app/views/pgbus/processes/_row.html.erb +48 -0
  62. data/app/views/pgbus/processes/_status.html.erb +4 -0
  63. data/app/views/pgbus/queues/_queues_list.html.erb +28 -32
  64. data/app/views/pgbus/queues/show.html.erb +69 -118
  65. data/app/views/pgbus/recurring_tasks/_tasks_table.html.erb +75 -76
  66. data/app/views/pgbus/recurring_tasks/index.html.erb +1 -1
  67. data/app/views/pgbus/recurring_tasks/show.html.erb +45 -51
  68. data/app/views/pgbus/shared/_empty_row.html.erb +2 -0
  69. data/app/views/pgbus/shared/_pager.html.erb +34 -0
  70. data/config/i18n-tasks.yml +11 -2
  71. data/config/locales/da.yml +405 -113
  72. data/config/locales/de.yml +405 -113
  73. data/config/locales/en.yml +405 -113
  74. data/config/locales/es.yml +404 -112
  75. data/config/locales/fi.yml +404 -112
  76. data/config/locales/fr.yml +406 -114
  77. data/config/locales/it.yml +405 -113
  78. data/config/locales/ja.yml +405 -113
  79. data/config/locales/nb.yml +405 -113
  80. data/config/locales/nl.yml +405 -113
  81. data/config/locales/pt.yml +406 -114
  82. data/config/locales/sv.yml +404 -112
  83. data/lib/generators/pgbus/templates/initializer.rb.erb +4 -0
  84. data/lib/pgbus/active_job/executor.rb +16 -6
  85. data/lib/pgbus/cli/dlq.rb +32 -5
  86. data/lib/pgbus/client.rb +4 -2
  87. data/lib/pgbus/configuration.rb +47 -2
  88. data/lib/pgbus/dead_letter_header.rb +129 -0
  89. data/lib/pgbus/doctor.rb +8 -4
  90. data/lib/pgbus/event_bus/handler.rb +18 -11
  91. data/lib/pgbus/event_bus/registry.rb +6 -0
  92. data/lib/pgbus/failed_event_recorder.rb +34 -0
  93. data/lib/pgbus/instrumentation.rb +2 -1
  94. data/lib/pgbus/mcp/base_tool.rb +25 -0
  95. data/lib/pgbus/mcp/tools/concurrency_tool.rb +23 -4
  96. data/lib/pgbus/mcp/tools/dlq_detail_tool.rb +4 -2
  97. data/lib/pgbus/mcp/tools/dlq_tool.rb +10 -4
  98. data/lib/pgbus/mcp/tools/locks_tool.rb +23 -5
  99. data/lib/pgbus/mcp/tools/recurring_tool.rb +33 -4
  100. data/lib/pgbus/outbox/poller.rb +1 -1
  101. data/lib/pgbus/process/consumer.rb +53 -3
  102. data/lib/pgbus/process/dispatcher.rb +1 -1
  103. data/lib/pgbus/process/supervisor.rb +32 -11
  104. data/lib/pgbus/process/worker.rb +45 -8
  105. data/lib/pgbus/recurring/scheduler.rb +2 -1
  106. data/lib/pgbus/version.rb +1 -1
  107. data/lib/pgbus/web/data_source/dashboard_signals.rb +170 -0
  108. data/lib/pgbus/web/data_source/dead_letter.rb +142 -0
  109. data/lib/pgbus/web/data_source/event_list.rb +161 -0
  110. data/lib/pgbus/web/data_source/job_list.rb +323 -0
  111. data/lib/pgbus/web/data_source/list_counts.rb +80 -0
  112. data/lib/pgbus/web/data_source/process_list.rb +69 -0
  113. data/lib/pgbus/web/data_source/queue_summary.rb +122 -0
  114. data/lib/pgbus/web/data_source.rb +132 -254
  115. data/lib/pgbus/web/dead_letter_reason.rb +81 -0
  116. data/lib/pgbus/web/event_state.rb +71 -0
  117. data/lib/pgbus/web/health_app.rb +7 -3
  118. data/lib/pgbus/web/health_verdict.rb +78 -0
  119. data/lib/pgbus/web/insights_charts.rb +84 -0
  120. data/lib/pgbus/web/job_state.rb +111 -0
  121. data/lib/pgbus/web/process_activity.rb +97 -0
  122. data/lib/pgbus/web/process_state.rb +187 -0
  123. data/lib/pgbus/web/queue_summary.rb +104 -0
  124. data/lib/pgbus/web/time_format.rb +128 -0
  125. metadata +43 -4
  126. data/app/views/pgbus/events/_pending_table.html.erb +0 -169
  127. data/app/views/pgbus/jobs/_enqueued_table.html.erb +0 -118
  128. data/app/views/pgbus/jobs/_failed_table.html.erb +0 -76
@@ -41,6 +41,7 @@ ja:
41
41
  title: アクティブなプロセス
42
42
  queue_health:
43
43
  dead_tuples: デッドタプル
44
+ empty: 計測できるキューテーブルはまだありません
44
45
  headers:
45
46
  bloat: Bloat
46
47
  dead: デッド
@@ -60,14 +61,34 @@ ja:
60
61
  one: "%{count} テーブルがvacuumを必要としています"
61
62
  other: "%{count} テーブルがvacuumを必要としています"
62
63
  title: キューの健全性
64
+ words:
65
+ bloat:
66
+ critical: "%{table} で %{ratio} — 読み取りが遅くなっています。今すぐ vacuum してください (%{critical} 超で危険、%{warn} 超で警告)"
67
+ none: 計測できるものはまだありません
68
+ ok: "%{table} で %{ratio} — 問題なし (%{warn} 超で警告、%{critical} 超で危険)"
69
+ warn: "%{table} で %{ratio} — vacuum が必要です (%{warn} 超で警告、%{critical} 超で危険)"
70
+ dead_tuples:
71
+ ok: 問題なし — デッド行が %{limit} を超えると警告
72
+ warn: "%{limit} 超 — autovacuum が遅れています。下の表で場所を確認してください"
73
+ transaction:
74
+ critical: "%{critical} 超 — 終了するまで vacuum は行を回収できません。pg_stat_activity で探してください (%{warn} で警告。%{verdict} 経過でヘルス判定が DEGRADED になります)"
75
+ none: 開いているトランザクションはありません — vacuum はすべてのデッド行を回収できます (%{warn} で警告、%{critical} でアラート。%{verdict} 経過でヘルス判定が DEGRADED になります)
76
+ ok: 問題なし — %{warn} で警告、%{critical} でアラート。%{verdict} 経過でヘルス判定が DEGRADED になります
77
+ warn: "%{warn} 超 — 長いトランザクションがあると vacuum が行を回収できません (%{critical} でアラート。%{verdict} 経過でヘルス判定が DEGRADED になります)"
78
+ vacuum:
79
+ critical: "%{critical} 超 — autovacuum がこれらのテーブルに届いていません。設定を確認してください (%{warn} 経過で警告)"
80
+ ok: 問題なし — %{warn} 経過で警告、%{critical} 経過で危険
81
+ unknown: vacuum 実行履歴がないか、統計を取得できません
82
+ warn: "%{warn} 超 — autovacuum が遅れている可能性があります (%{critical} 経過で危険)"
63
83
  worst_bloat: 最悪のBloat
64
84
  queues_table:
65
85
  empty: キューが見つかりません
66
86
  headers:
67
87
  depth: 深さ
68
- oldest_claimable: 取得可能な最古 (秒)
88
+ oldest_claimable: 取得可能な最古
69
89
  parked: 待機中
70
90
  queue: キュー
91
+ status: ステータス
71
92
  total: 合計
72
93
  visible: 表示中
73
94
  title: キュー
@@ -75,7 +96,9 @@ ja:
75
96
  recent_failures:
76
97
  empty: 失敗はありません
77
98
  headers:
99
+ attempt: 試行
78
100
  error: エラー
101
+ job: ジョブ
79
102
  queue: キュー
80
103
  when: 日時
81
104
  title: 最近の失敗
@@ -83,19 +106,72 @@ ja:
83
106
  show:
84
107
  title: ダッシュボード
85
108
  stats_cards:
109
+ dead_lettered: デッドレター
110
+ dlq_newest_html: '最新: %{job} の %{error_class} %{ago}'
111
+ dlq_newest_legacy_html: '最新: %{job} %{ago} — 理由は記録されていません'
112
+ dlq_newest_no_error_html: '最新: %{job} %{ago} — エラーは記録されていません'
113
+ dlq_none: デッドレターはありません
114
+ dlq_see_why: デッドレターのページで、それぞれが失敗した理由を確認できます
86
115
  enqueued: キューに追加済み
87
- failed_dlq: 失敗 / DLQ
88
- failed_dlq_labels: 失敗 / Dead Lettered
116
+ enqueued_detail: 今すぐ取得可能 %{claimable} 件 · スケジュール済み・実行中・再試行待ち %{waiting} 件
117
+ enqueued_paused:
118
+ one: 一時停止中のキューに %{count} 件
119
+ other: 一時停止中のキューに %{count} 件
89
120
  parked_jobs: 待機中のジョブ
90
121
  parked_jobs_oldest: 最古 %{age}
91
122
  processes: プロセス
123
+ processes_detail: 正常 %{healthy} · 停滞 %{stalled} · 期限切れ %{stale}
124
+ processes_none: 何も実行されていません — ジョブは取得されていません
125
+ processes_stale: 期限切れのプロセスはハートビートを停止しています。実行中のジョブは可視性タイムアウトの経過後に再実行されます
92
126
  queues: キュー
127
+ queues_detail: "%{paused} 件が一時停止 · %{dlq} 件がデッドレター"
128
+ queues_undrained:
129
+ one: "%{count} 件のキューに処理されないジョブがあります"
130
+ other: "%{count} 件のキューに処理されないジョブがあります"
93
131
  recurring: 繰り返し
132
+ recurring_detail: スケジューラがスケジュールに従ってエンキューするタスク
133
+ retrying: 再試行中
134
+ retrying_due:
135
+ one: "%{count} 件が今すぐ実行対象"
136
+ other: "%{count} 件が今すぐ実行対象"
137
+ retrying_newest: 最新のエラー %{error_class}
138
+ retrying_next_html: 次の試行 %{time}
139
+ retrying_none: 再試行中のものはありません
94
140
  throughput: スループット
95
- throughput_unit: メッセージ/秒
96
- view_tasks: タスクを表示
97
- visible: 表示中
141
+ throughput_detail: 過去 %{minutes} 分のジョブ/分
142
+ throughput_unavailable: ジョブ統計が必要です (rails g pgbus:add_job_stats)
143
+ verdict:
144
+ links:
145
+ dlq: デッドレター
146
+ processes: プロセス
147
+ look_at: '確認先:'
148
+ meaning:
149
+ degraded: 対応が必要な点がありますが、ジョブは流れています。/readyz は引き続き ready を返します。
150
+ ok: ジョブのあるすべてのキューが処理されており、すべてのプロセスがハートビートを送っています。/readyz は ready を返します。
151
+ stalled: ジョブが待機していますが、誰も取得していません。/readyz は not ready (503) を返します。
152
+ statuses:
153
+ degraded: DEGRADED
154
+ ok: OK
155
+ stalled: STALLED
156
+ title: 'ヘルス: %{status}'
157
+ unavailable: ヘルス判定を表示できません — 判定の元になるチェックを読み取れませんでした。ログを確認してください
98
158
  dead_letter:
159
+ detail:
160
+ backtrace: バックトレース(先頭行)
161
+ died: '停止日時:'
162
+ dlq: 'デッドレターキュー:'
163
+ error_from_attempt: 試行 %{attempt} のエラー。試行 %{from}–%{to} はエラーを記録していません。
164
+ source: '移動元:'
165
+ sources:
166
+ consumer: イベントコンシューマー
167
+ worker: ジョブワーカー
168
+ why: 停止した理由
169
+ filters:
170
+ all: すべて
171
+ clear_error_class: フィルターを解除
172
+ error_class: 'エラー: %{error_class}'
173
+ filter_error_class: "%{error_class} のみ表示"
174
+ label: デッドレターを絞り込む
99
175
  index:
100
176
  discard_all: すべて破棄
101
177
  discard_all_confirm: すべてのDLQメッセージを完全に破棄しますか?
@@ -115,11 +191,13 @@ ja:
115
191
  empty: デッドレターキューは空です
116
192
  full_json_payload: 完全なJSONペイロード
117
193
  headers:
118
- enqueued: キューに追加済み
194
+ actions: 操作
195
+ attempts: 試行
196
+ died: 停止日時
119
197
  id: ID
120
- job_class: ジョブクラス
121
- reads: 読み取り数
122
- source_queue: ソースキュー
198
+ job: ジョブ
199
+ reason: 理由
200
+ source_queue: 元のキュー
123
201
  headers_section: ヘッダー
124
202
  job_id: 'ジョブID:'
125
203
  metadata: メタデータ
@@ -131,6 +209,16 @@ ja:
131
209
  visible_at: '表示日時:'
132
210
  retry: 再試行
133
211
  total_label: デッドレターキュー内のメッセージ
212
+ view: 表示
213
+ reasons:
214
+ error_earlier_attempt_html: 'リトライ上限に達しました。最後に記録されたエラー(試行 %{error_attempt}): %{error_class}: %{error_message}'
215
+ error_html: 'リトライ上限に達しました。最後のエラー: %{error_class}: %{error_message}'
216
+ event_no_error_html: ハンドラーが %{attempts} 回の配信で失敗しました(上限 %{max})— ハンドラーのエラーは記録されていません
217
+ no_error_recorded_html: "%{attempts} 回の読み取りで %{max} 回のリトライ上限を超えました — エラーは記録されていません。失敗した試行はすべて報告前にクラッシュしました"
218
+ not_recorded_html: 理由は記録されていません(pgbus %{version} より前に DLQ へ移動)
219
+ retried_before:
220
+ one: 以前に DLQ から 1 回リトライされました。
221
+ other: 以前に DLQ から %{count} 回リトライされました。
134
222
  show:
135
223
  back: DLQに戻る
136
224
  context: コンテキスト
@@ -138,8 +226,10 @@ ja:
138
226
  discard_confirm: 完全に破棄しますか?
139
227
  headers: ヘッダー
140
228
  labels:
229
+ attempts: 試行
230
+ died: 停止日時
231
+ dlq: デッドレターキュー
141
232
  enqueued_at: キューイング日時
142
- read_count: 読み取り回数
143
233
  source_queue: ソースキュー
144
234
  visibility_timeout: 可視性タイムアウト
145
235
  not_found: メッセージが見つかりません
@@ -163,6 +253,7 @@ ja:
163
253
  mark_handled_failed: イベントを処理済みとしてマークできませんでした。
164
254
  marked_handled: イベントが処理済みとしてマークされました。
165
255
  none_selected: イベントが選択されていません。
256
+ payload_redacted: '保存されませんでした: ペイロードに伏せ字([FILTERED])の値が残っており、本来の値を上書きしてしまいます。'
166
257
  payload_update_failed: ペイロードを更新できませんでした。JSONが有効であることを確認してください。
167
258
  payload_updated: ペイロードが更新され、イベントが再キューに登録されました。
168
259
  replay_failed: イベントが見つからないか再生できませんでした。
@@ -170,56 +261,118 @@ ja:
170
261
  reroute_failed: イベントをルーティングできませんでした。
171
262
  rerouted: イベントがターゲットハンドラーにルーティングされました。
172
263
  index:
173
- discard_selected: 選択を破棄
174
- discard_selected_confirm: 選択したイベントを破棄しますか?
175
- pending_empty: 保留中のイベントはありません
176
- pending_headers:
177
- enqueued: キューに登録済み
178
- handler_queue: ハンドラーキュー
179
- id: ID
180
- reads: 読み取り数
181
- routing_key: ルーティングキー
182
264
  pending_title: 保留中のイベント
183
- processed_empty: まだ処理されたイベントはありません
184
- processed_headers:
185
- event_id: イベントID
186
- handler: ハンドラー
187
- processed_at: 処理日時
188
265
  processed_title: 処理済みイベント
266
+ subscribers:
267
+ covered: 実行中のコンシューマーが処理中
268
+ uncovered: このパターンを担当する実行中のコンシューマーがありません
269
+ unknown: コンシューマーの担当状況は不明
270
+ view_pending: 保留中を表示
189
271
  subscribers_empty: 登録された購読者がいません
190
272
  subscribers_headers:
273
+ consumer: コンシューマー
191
274
  handler: ハンドラー
192
275
  pattern: パターン
276
+ pending: 保留中
193
277
  queue: キュー
194
278
  subscribers_title: 登録された購読者
195
279
  title: イベント
196
- pending_table:
197
- arguments: ペイロード
280
+ list:
198
281
  context: コンテキスト
199
282
  discard: 破棄
200
283
  discard_confirm: このイベントを破棄しますか?アーカイブされます。
284
+ discard_failure_confirm: この失敗したイベントを破棄しますか?メッセージはもうキューにありません。
285
+ discard_selected: 選択を破棄
286
+ discard_selected_confirm: 選択したイベントを破棄しますか?
201
287
  edit_payload: 編集して再試行
202
288
  edit_payload_confirm: ペイロードを更新してこのイベントを再キューに登録しますか?
203
289
  edit_payload_label: 'JSONペイロード:'
290
+ empty:
291
+ all: 保留中のイベントはありません
292
+ ready: 処理待ちのイベントはありません
293
+ retrying: 再試行待ちのイベントはありません
294
+ running: 処理中のイベントはありません
295
+ scheduled: 予定されたイベントはありません
204
296
  event_id: 'イベントID:'
205
297
  full_json_payload: 完全なJSONペイロード
298
+ headers:
299
+ actions: アクション
300
+ attempts: 試行回数
301
+ event: イベント
302
+ handler: ハンドラー
303
+ id: ID
304
+ reason: 次回実行 / 理由
305
+ state: 状態
206
306
  headers_section: ヘッダー
207
307
  mark_handled: 処理済みとしてマーク
208
- mark_handled_confirm: このイベントを処理済みとしてマークしますか?アーカイブされ、再生時にスキップされます。
308
+ mark_handled_confirm: このイベントを処理済みにしますか?メッセージはアーカイブされ、ハンドラーは実行しません。
209
309
  metadata: メタデータ
210
310
  metadata_labels:
311
+ enqueued: 'キュー投入:'
211
312
  last_read: 最終読み取り:
313
+ published: '発行:'
212
314
  read_count: 読み取り回数:
213
315
  visible_at: 表示日時:
316
+ payload: ペイロード
317
+ reasons:
318
+ handling_html: "%{handler} が処理中 — %{ago} に取得 · リース期限 %{time}"
319
+ lease_expired_html: リースが期限切れ(コンシューマーが停止した可能性) — %{handler} へ再配信中、試行 %{attempt}
320
+ no_consumer_for_queue_html: "%{pattern} を購読する実行中のコンシューマーがありません(%{handler})"
321
+ no_consumers_html: 正常なコンシューマーが動いていません
322
+ orphaned_html: "%{handler} で %{error} により失敗 — メッセージはもうキューにありません"
323
+ paused_html: キューは一時停止中
324
+ retrying_dlq_html: "%{handler} の試行 %{attempt}/%{max} が失敗: %{error} — 次の読み取りで DLQ に移動します"
325
+ retrying_due_html: "%{handler} の試行 %{attempt}/%{max} が失敗: %{error} — 次の試行は今"
326
+ retrying_html: "%{handler} の試行 %{attempt}/%{max} が失敗: %{error} — 次の試行 %{time}"
327
+ scheduled_html: 予定済み — %{handler} が %{time} に処理
328
+ waiting_html: '待機中 — 前に %{count} 件 · 次: %{handler}'
329
+ waiting_unknown_html: "%{handler} を待機中"
214
330
  reroute: ルーティング変更
215
331
  reroute_confirm: このイベントを別のハンドラーにルーティングしますか?
216
332
  reroute_label: 'ターゲットハンドラー:'
333
+ states:
334
+ ready: 実行待ち
335
+ retrying: 再試行中
336
+ running: 処理中
337
+ scheduled: 予約済み
338
+ tabs:
339
+ all: すべて
340
+ ready: 実行待ち
341
+ retrying: 再試行中
342
+ running: 処理中
343
+ scheduled: 予約済み
344
+ tabs_label: イベントの状態
345
+ view_failure: 失敗を表示
346
+ processed:
347
+ empty: まだ処理されたイベントはありません
348
+ headers:
349
+ actions: アクション
350
+ event_id: イベントID
351
+ handler: ハンドラー
352
+ reason: 理由
353
+ state: 状態
354
+ reasons:
355
+ abandoned_html: クレームが %{ago} から応答なし — 次の配信でハンドラーが再実行されます
356
+ completed_html: "%{ago} に完了"
357
+ completed_legacy_html: "%{ago} に記録(単一フェーズのクレーム。pgbus:add_processed_event_completion でアップグレード)"
358
+ handling_html: 処理中 — クレーム更新 %{ago}
359
+ replay: 再実行
360
+ replay_confirm: このイベントを新しいイベント ID でハンドラーに再配信しますか?ハンドラーが再度実行されます。
361
+ replay_unavailable:
362
+ no_handler: ハンドラーは登録されていません
363
+ not_archived: アーカイブにもうありません
364
+ states:
365
+ abandoned: 応答なし
366
+ completed: 完了
367
+ handling: 処理中
217
368
  show:
218
369
  back: イベントに戻る
219
370
  labels:
371
+ completed_at: 完了日時
220
372
  event_id: イベントID
221
373
  handler: ハンドラー
222
374
  processed_at: 処理日時
375
+ state: 状態
223
376
  not_found: イベントが見つかりません
224
377
  title: イベント %{event_id}
225
378
  helpers:
@@ -231,6 +384,7 @@ ja:
231
384
  bulk_select_row: "%{id}を選択"
232
385
  bulk_selected: 選択済み
233
386
  pagination:
387
+ label: ページ送り
234
388
  next: 次へ
235
389
  previous: 前へ
236
390
  showing: "%{total} 件中 %{from}–%{to} 件を表示"
@@ -245,24 +399,50 @@ ja:
245
399
  healthy: 正常
246
400
  stale: 期限切れ
247
401
  stalled: 停滞
402
+ time:
403
+ absolute_format: "%Y-%m-%d %H:%M:%S %Z"
404
+ clock_format: "%H:%M"
405
+ future: "%{distance}後"
406
+ now: 今
407
+ past: "%{distance}前"
408
+ range:
409
+ days:
410
+ one: "%{count}日"
411
+ other: "%{count}日"
412
+ hours:
413
+ one: "%{count}時間"
414
+ other: "%{count}時間"
415
+ minutes:
416
+ one: "%{count}分"
417
+ other: "%{count}分"
418
+ units:
419
+ days: "%{count}日"
420
+ hours: "%{count}時間"
421
+ milliseconds: "%{count}ms"
422
+ minutes: "%{count}分"
423
+ seconds: "%{count}秒"
248
424
  insights:
249
425
  show:
250
426
  charts:
251
- failed_to_load: チャートデータの読み込みに失敗しました
252
- latency: キュー遅延 (ms)
427
+ captions:
428
+ latency: ジョブはワーカーに取得されるまで平均 %{avg} 待機しました。p95 は %{p95}
429
+ status: 成功 %{success} 件、失敗 %{failed} 件、デッドレター %{dead_lettered} 件
430
+ throughput_html: 過去 %{range} で %{total} 件のジョブ、ピークは %{at} の %{peak} ジョブ/分
431
+ data_table: データ表
432
+ latency: キュー遅延
253
433
  latency_avg: 平均
254
434
  latency_p95: P95
255
435
  no_data: まだデータがありません
256
436
  series_name: ジョブ/分
257
437
  status_distribution: ステータス分布
258
- throughput: スループット(ジョブ/分)
438
+ throughput: スループット
259
439
  description_html: 過去%{range}の仕事のパフォーマンス指標
260
440
  latency_by_queue:
261
441
  empty: まだ遅延データがありません
262
442
  headers:
263
- avg: 平均 (ms)
443
+ avg: 平均
264
444
  count: 件数
265
- p95: P95 (ms)
445
+ p95: P95
266
446
  queue: キュー
267
447
  title: キュー別遅延
268
448
  live_streams:
@@ -282,6 +462,10 @@ ja:
282
462
  job_class: ジョブクラス
283
463
  max: 最大
284
464
  title: 最も遅いジョブクラス(平均実行時間)
465
+ statuses:
466
+ dead_lettered: デッドレター
467
+ failed: 失敗
468
+ success: 成功
285
469
  streams:
286
470
  summary:
287
471
  active: アクティブ
@@ -310,6 +494,20 @@ ja:
310
494
  p99_latency: P99遅延
311
495
  succeeded: 成功した
312
496
  total_jobs: 合計ジョブ数
497
+ tables:
498
+ captions:
499
+ latency_minute: 1 分あたりのキュー遅延
500
+ latency_step: "%{step} あたりのキュー遅延"
501
+ status: 最終ステータス別のジョブ数
502
+ throughput_minute: 1 分あたりのジョブ数
503
+ throughput_step: "%{step} あたりのジョブ数"
504
+ headers:
505
+ avg: 平均
506
+ from: 開始
507
+ highest_p95: 最大 P95
508
+ jobs: ジョブ
509
+ share: 割合
510
+ status: ステータス
313
511
  time_ranges:
314
512
  1h: 1時間
315
513
  24h: 24時間
@@ -317,60 +515,87 @@ ja:
317
515
  7d: 7日
318
516
  title: インサイト
319
517
  jobs:
320
- enqueued_table:
518
+ index:
519
+ discard_all: すべて破棄
520
+ discard_all_confirm: すべての失敗したジョブを破棄しますか?
521
+ discard_all_enqueued_notice: "%{count}件のキュー内ジョブを破棄し、ロックを解放しました。"
522
+ discard_selected: 選択を破棄
523
+ discard_selected_confirm: 選択した項目を破棄しますか?
524
+ discarded_selected:
525
+ one: 1件の選択項目を破棄しました。
526
+ other: "%{count}件の選択項目を破棄しました。"
527
+ none_selected: 項目が選択されていません。
528
+ retry_all: すべてリトライ
529
+ retry_all_confirm: すべての失敗したジョブをリトライしますか?
530
+ title: ジョブ
531
+ list:
321
532
  arguments: 引数
322
533
  discard: 破棄
323
- discard_all: すべて破棄
324
- discard_all_confirm: キュー内のすべてのジョブを破棄し、ロックを解放しますか?この操作は元に戻せません。
325
- discard_confirm: このメッセージを破棄しますか?
326
- empty: キューに入っているジョブはありません
534
+ discard_all_enqueued: キュー内のジョブをすべて破棄
535
+ discard_all_enqueued_confirm: キュー内のすべてのジョブを破棄し、ロックを解放しますか?この操作は元に戻せません。
536
+ discard_confirm: このジョブを破棄しますか?
537
+ empty:
538
+ all: ジョブはありません
539
+ blocked: 同時実行制限でブロックされたジョブはありません
540
+ ready: 実行待ちのジョブはありません
541
+ retrying: 再試行待ちのジョブはありません
542
+ running: 実行中のジョブはありません
543
+ scheduled: 予約済みのジョブはありません
327
544
  full_json_payload: 完全なJSONペイロード
328
545
  headers:
329
- enqueued: キューに入れられた
546
+ actions: アクション
547
+ attempts: 試行回数
330
548
  id: ID
331
- job_class: ジョブクラス
549
+ job: ジョブ
332
550
  queue: キュー
333
- reads: 読み取り数
551
+ reason: 次回実行 / 理由
552
+ state: 状態
334
553
  headers_section: ヘッダー
335
554
  job_id: ジョブID:
336
555
  metadata: メタデータ
337
556
  metadata_labels:
557
+ concurrency_key: '同時実行キー:'
558
+ enqueued: 'キュー投入:'
338
559
  last_read: 最終読み取り:
339
560
  locale: ロケール:
340
561
  priority: 優先度:
341
- queue: キュー:
342
562
  scheduled: スケジュール済み:
343
563
  timezone: タイムゾーン:
344
564
  visible_at: 表示可能日時:
565
+ reasons:
566
+ blocked_html: "%{key} の同時実行枠を待機中(使用中 %{held}/%{limit}) · 待機開始 %{ago}"
567
+ blocked_no_slots_html: "%{key} の同時実行枠を待機中 · 待機開始 %{ago}"
568
+ lease_expired_html: リースが期限切れ(ワーカーが停止した可能性) — 再配信中、試行 %{attempt}
569
+ no_workers_html: 正常なワーカーが動いていません
570
+ not_drained_html: このキューを処理するワーカーがいません
571
+ orphaned_html: "%{error} で失敗 — メッセージはもうキューにありません"
572
+ paused_html: キューは一時停止中
573
+ retrying_dlq_html: '試行 %{attempt}/%{max} が失敗: %{error} — 次の読み取りで DLQ に移動'
574
+ retrying_due_html: '試行 %{attempt}/%{max} が失敗: %{error} — 次の試行は今'
575
+ retrying_html: '試行 %{attempt}/%{max} が失敗: %{error} — 次の試行 %{time}'
576
+ running_html: "%{ago} に取得 · リース期限 %{time}"
577
+ scheduled_html: 予約済み — 実行予定 %{time}
578
+ waiting_html: 待機中 — 前に %{count} 件
579
+ waiting_priority_html: 待機中 — この優先度で前に %{count} 件
580
+ waiting_unknown_html: 取得待ち
345
581
  retry: リトライ
346
582
  retry_confirm: 可視性タイムアウトをリセットしてリトライしますか?
347
- title: キューに入れられたジョブ
348
- failed_table:
349
- discard: 破棄
350
- discard_confirm: このジョブを破棄しますか?
351
- empty: 失敗したジョブはありません
352
- headers:
353
- actions: アクション
354
- error: エラー
355
- failed: 失敗
356
- id: ID
357
- queue: キュー
358
- retries: リトライ回数
359
- retry: リトライ
360
- title: 失敗したジョブ
361
- index:
362
- discard_all: すべて破棄
363
- discard_all_confirm: すべての失敗したジョブを破棄しますか?
364
- discard_all_enqueued_notice: "%{count}件のキュー内ジョブを破棄し、ロックを解放しました。"
365
- discard_selected: 選択を破棄
366
- discard_selected_confirm: 選択した項目を破棄しますか?
367
- discarded_selected:
368
- one: 1件の選択項目を破棄しました。
369
- other: "%{count}件の選択項目を破棄しました。"
370
- none_selected: 項目が選択されていません。
371
- retry_all: すべてリトライ
372
- retry_all_confirm: すべての失敗したジョブをリトライしますか?
373
- title: ジョブ
583
+ states:
584
+ blocked: ブロック中
585
+ ready: 実行待ち
586
+ retrying: 再試行中
587
+ running: 実行中
588
+ scheduled: 予約済み
589
+ tabs:
590
+ all: すべて
591
+ blocked: ブロック中
592
+ ready: 実行待ち
593
+ retrying: 再試行中
594
+ running: 実行中
595
+ scheduled: 予約済み
596
+ tabs_label: ジョブの状態
597
+ view_failure: 失敗を表示
598
+ view_locks: ロックを表示
374
599
  show:
375
600
  back: ジョブに戻る
376
601
  backtrace: バックトレース
@@ -423,6 +648,7 @@ ja:
423
648
  other: このキーの背後で待機中の%{count}件のジョブを破棄しますか?二度と実行されません。
424
649
  empty: 使用中の同時実行キーはありません
425
650
  headers:
651
+ actions: アクション
426
652
  in_use: 使用中
427
653
  key: キー
428
654
  lease: リース
@@ -456,6 +682,7 @@ ja:
456
682
  discard_selected_confirm: 選択したロックを破棄しますか?
457
683
  empty: アクティブなロックはありません
458
684
  headers:
685
+ actions: アクション
459
686
  age: 経過時間
460
687
  lock_key: ロックキー
461
688
  msg_id: メッセージID
@@ -483,8 +710,6 @@ ja:
483
710
  pending: 保留中
484
711
  published: 公開済み
485
712
  stats:
486
- no_age: "—"
487
- oldest_age: "%{seconds}秒"
488
713
  oldest_unpublished: 最も古い未公開
489
714
  total: 合計
490
715
  unpublished: 未公開
@@ -493,18 +718,76 @@ ja:
493
718
  index:
494
719
  title: プロセス
495
720
  processes_table:
721
+ capsule: カプセル %{capsule} · プロセス %{process}
496
722
  empty: 実行中のプロセスはありません
497
723
  headers:
498
- hostname: ホスト名
499
- kind: 種類
500
- last_heartbeat: 最終ハートビート
501
- metadata: メタデータ
502
- pid: PID
724
+ activity: アクティビティ
725
+ heartbeat: ハートビート
726
+ process: プロセス
727
+ recycle: リサイクル
503
728
  status: ステータス
504
- rates:
505
- dequeued: 取得
506
- failed: 失敗
507
- processed: 処理
729
+ no_raw_metadata: その他のメタデータはありません
730
+ raw_metadata: その他のメタデータ
731
+ started: 開始
732
+ under_supervisor: スーパーバイザー %{pid} の配下
733
+ uptime: 稼働 %{duration}
734
+ state:
735
+ activity:
736
+ buffered: "%{number} 件バッファ中"
737
+ busy_slots: "%{busy}/%{capacity} スロット使用中"
738
+ busy_threads: "%{busy}/%{capacity} スレッド使用中"
739
+ consumes: "%{topics} を購読"
740
+ drains: "%{queues} を処理"
741
+ drains_all: すべてのキューを処理
742
+ failed_rate: "%{rate} 失敗/秒"
743
+ handled: "%{number} 件処理済み"
744
+ maintenance: "%{interval} ごとにメンテナンスを実行(予約ジョブ、停止プロセス、アーカイブ)"
745
+ outbox: outbox のエントリを公開
746
+ rate: "%{rate} ジョブ/秒"
747
+ schedule:
748
+ one: "%{count} 件の定期タスクを実行、%{interval} ごとに確認"
749
+ other: "%{count} 件の定期タスクを実行、%{interval} ごとに確認"
750
+ slots:
751
+ one: "%{count} スロット"
752
+ other: "%{count} スロット"
753
+ supervises: '監視対象: %{children}'
754
+ supervises_none: このホストで監視しているプロセスはありません
755
+ threads:
756
+ one: "%{count} スレッド"
757
+ other: "%{count} スレッド"
758
+ kinds:
759
+ consumer:
760
+ one: コンシューマー %{count}
761
+ other: コンシューマー %{count}
762
+ dispatcher:
763
+ one: ディスパッチャー
764
+ other: ディスパッチャー %{count}
765
+ outbox_poller:
766
+ one: outbox ポーラー
767
+ other: outbox ポーラー %{count}
768
+ scheduler:
769
+ one: スケジューラー
770
+ other: スケジューラー %{count}
771
+ worker:
772
+ one: ワーカー %{count}
773
+ other: ワーカー %{count}
774
+ next:
775
+ stale_reaped: 停止している可能性が高い。ディスパッチャーの次回の掃除で削除されます(%{within} 以内)
776
+ stale_unreaped: 停止している可能性が高い。削除できる稼働中のディスパッチャーがありません
777
+ stalled_maintenance: 予約ジョブ、停止プロセスの掃除、アーカイブの圧縮が進んでいません
778
+ stalled_schedule: 定期タスクがキューに投入されていません
779
+ stalled_standalone: 再起動するスーパーバイザーがありません
780
+ stalled_supervised: スーパーバイザーのウォッチドッグが再起動します
781
+ reasons:
782
+ healthy_detection_off_html: ハートビート %{ago}(上限 %{limit})· 停滞検知オフ
783
+ healthy_heartbeat_html: ハートビート %{ago}(上限 %{limit})
784
+ healthy_loop_html: ループ実行 %{ago}(上限 %{limit})
785
+ stale_html: "%{age} ハートビートなし(上限 %{limit})"
786
+ stalled_html: 最後のループ実行 %{ago}(上限 %{limit})
787
+ recycle:
788
+ jobs: "%{done} / %{limit} ジョブ"
789
+ lifetime: 稼働 %{uptime} / %{limit}
790
+ memory: "%{used} / %{limit} MB"
508
791
  queues:
509
792
  destroy:
510
793
  success: キュー %{name} を削除しました。
@@ -517,59 +800,70 @@ ja:
517
800
  headers:
518
801
  actions: アクション
519
802
  depth: 深さ
520
- newest: 最新 (秒)
521
- oldest_claimable: 取得可能な最古 (秒)
803
+ newest: 最新
804
+ oldest_claimable: 取得可能な最古
522
805
  parked: 待機中
523
806
  queue: キュー
524
807
  total_ever: 合計数
525
808
  visible: 表示中
526
809
  pause: 一時停止
527
810
  pause_confirm: "%{name} の処理を一時停止しますか?"
528
- paused: 一時停止中
529
811
  purge: パージ
530
812
  purge_confirm: "%{name} からすべてのメッセージを削除しますか?"
531
813
  resume: 再開
532
814
  show:
533
- arguments: 引数
534
815
  back: キューに戻る
535
816
  delete_confirm: このキューを完全に削除しますか?この操作は取り消せません。
536
817
  delete_queue: キューを削除
537
- depth: 深さ:
538
- discard: 破棄
539
- discard_confirm: このメッセージを破棄しますか?
540
- empty: キューは空です
541
- full_json_payload: 完全なJSONペイロード
542
- headers:
543
- enqueued: エンキュー済み
544
- id: ID
545
- job_class: ジョブクラス
546
- reads: 読み取り回数
547
- vt: VT
548
- headers_section: ヘッダー
549
- job_id: ジョブID:
818
+ dlq_link: デッドレターページで再試行または破棄
819
+ dlq_pointer:
820
+ one: "%{logical} のデッドレターキュー — メッセージ %{count} 件。"
821
+ other: "%{logical} のデッドレターキュー — メッセージ %{count} 件。"
550
822
  message_discard_failed: メッセージを破棄できませんでした。
551
823
  message_discarded: メッセージを破棄しました。
552
824
  message_retried: メッセージの可視性をリセットしました。
553
825
  message_retry_failed: メッセージをリトライできませんでした。
554
- metadata: メタデータ
555
- metadata_labels:
556
- last_read: 最終読み取り:
557
- locale: ロケール:
558
- priority: 優先度:
559
- queue: キュー:
560
- scheduled: スケジュール済み:
561
- timezone: タイムゾーン:
562
- visible_at: 表示可能日時:
563
- oldest: '最古:'
564
- oldest_claimable: '取得可能な最古:'
565
- parked: '待機中:'
826
+ metrics:
827
+ claimable: 取得可能
828
+ depth: 深さ
829
+ oldest: 最古
830
+ oldest_claimable: 最古の取得可能
831
+ parked: 保留中
832
+ total: 累計
833
+ other_levels: 他の優先度レベル:
566
834
  pause: 一時停止
567
835
  pause_confirm: 処理を一時停止しますか?
568
836
  purge_confirm: すべてのメッセージを削除しますか?
569
837
  purge_queue: キューをパージ
570
838
  resume: 再開
571
- retry: リトライ
572
- retry_confirm: 可視性タイムアウトをリセットしてリトライしますか?
839
+ summary:
840
+ backlog_html: 現在取得可能 %{visible} 件、最古は %{age} 待機中 · %{parked} 件保留中(予定または再試行)
841
+ backlog_parked_only_html: 現在取得可能なものはありません · %{parked} 件保留中(予定または再試行)
842
+ dlq_html: "%{logical} のデッドレターキュー:%{max} 回失敗したジョブがここに入ります"
843
+ drained_by_html:
844
+ one: "%{capsules} が処理(正常なワーカー %{count})"
845
+ other: "%{capsules} が処理(正常なワーカー %{count})"
846
+ drained_live_html:
847
+ one: このキューを監視する正常なワーカー %{count} が処理
848
+ other: このキューを監視する正常なワーカー %{count} が処理
849
+ drained_wildcard_html:
850
+ one: ワイルドカードのワーカーカプセルが処理(正常なワーカー %{count})
851
+ other: ワイルドカードのワーカーカプセルが処理(正常なワーカー %{count})
852
+ empty_html: 待機中のものはありません
853
+ handler_html: イベントハンドラーキュー — コンシューマーが処理(正常 %{count})
854
+ no_consumers_html:
855
+ one: 正常なコンシューマーがいないイベントハンドラーキュー — %{count} 件のイベントが待機中
856
+ other: 正常なコンシューマーがいないイベントハンドラーキュー — %{count} 件のイベントが待機中
857
+ no_workers_html:
858
+ one: 正常なワーカーが稼働していません — %{count} 件のジョブが取得可能ですが、誰も取得していません
859
+ other: 正常なワーカーが稼働していません — %{count} 件のジョブが取得可能ですが、誰も取得していません
860
+ not_drained_html: このキューを処理するワーカーカプセルがありません — 設定されるまでジョブは待機します
861
+ paused_circuit_breaker_html: "%{failures} 回連続の失敗により %{ago} に自動で一時停止 — %{time} に再開(%{trip} 回目の作動)"
862
+ paused_operator_html: "%{ago} に一時停止 — %{reason}"
863
+ paused_operator_no_reason_html: "%{ago} にオペレーターが一時停止"
864
+ priority_level_html: "%{logical} の優先度レベル %{level}"
865
+ stream_html: ストリームキュー — peek で配信され、ワーカーは処理しません
866
+ summary_label: キューの概要
573
867
  table_health:
574
868
  headers:
575
869
  bloat: Bloat
@@ -579,8 +873,6 @@ ja:
579
873
  table: テーブル
580
874
  oldest_txn: '最も古い未完了トランザクション:'
581
875
  title: テーブルの健全性
582
- total: 合計:
583
- visible: 表示中:
584
876
  recurring_tasks:
585
877
  index:
586
878
  task_count: