@@ -134,15 +134,21 @@ public function getOverview(bool $slim = true): array
134134 private function filterQueuesForDashboard (array $ queues ): array
135135 {
136136 return array_map (function ($ queue ) {
137+ $ depth = is_array ($ queue ['depth ' ] ?? null ) ? $ queue ['depth ' ] : [];
138+ $ performance60s = is_array ($ queue ['performance_60s ' ] ?? null ) ? $ queue ['performance_60s ' ] : [];
139+ $ lifetime = is_array ($ queue ['lifetime ' ] ?? null ) ? $ queue ['lifetime ' ] : [];
140+ $ workers = is_array ($ queue ['workers ' ] ?? null ) ? $ queue ['workers ' ] : [];
141+
137142 return [
138143 'connection ' => $ queue ['connection ' ] ?? '' ,
139144 'queue ' => $ queue ['queue ' ] ?? '' ,
140- 'depth ' => $ queue ['depth ' ] ?? 0 ,
141- 'pending ' => $ queue ['pending ' ] ?? 0 ,
142- 'active_workers ' => $ queue ['active_workers ' ] ?? 0 ,
143- 'throughput_per_minute ' => $ queue ['throughput_per_minute ' ] ?? 0 ,
144- 'failure_rate ' => $ queue ['failure_rate ' ] ?? 0 ,
145- 'utilization_rate ' => $ queue ['utilization_rate ' ] ?? 0 ,
145+ 'depth ' => $ depth ['total ' ] ?? 0 ,
146+ 'pending ' => $ depth ['pending ' ] ?? 0 ,
147+ 'active_workers ' => $ workers ['active_count ' ] ?? 0 ,
148+ 'throughput_per_minute ' => $ performance60s ['throughput_per_minute ' ] ?? 0 ,
149+ 'failure_rate ' => $ lifetime ['failure_rate_percent ' ] ?? 0 ,
150+ 'current_busy_percent ' => $ workers ['current_busy_percent ' ] ?? 0 ,
151+ 'lifetime_busy_percent ' => $ workers ['lifetime_busy_percent ' ] ?? 0 ,
146152 ];
147153 }, $ queues );
148154 }
@@ -176,27 +182,52 @@ private function filterJobsForDashboard(array $jobs): array
176182 /**
177183 * Filter server metrics to essential dashboard fields only.
178184 *
185+ * Returns simplified server data with clear separation between:
186+ * - Worker metrics: Worker count, utilization (from queue workers)
187+ * - Job metrics: Jobs processed (from queue workers)
188+ * - System metrics: Actual server CPU/memory from SystemMetrics (physical server resources)
189+ *
190+ * Note: Worker process CPU/memory metrics are NOT included in dashboard as they're not
191+ * useful for server-level overview. Use server_resources for actual server resource usage.
192+ *
179193 * @param array<string, array<string, mixed>> $servers
180194 * @return array<string, array<string, mixed>>
181195 */
182196 private function filterServersForDashboard (array $ servers ): array
183197 {
184198 return array_map (function ($ server ) {
185- $ workers = is_array ($ server ['workers ' ] ?? null ) ? $ server ['workers ' ] : [];
186- $ utilization = is_array ($ server [ ' utilization ' ] ?? null ) ? $ server [ ' utilization ' ] : [];
187- $ performance = is_array ($ server [ ' performance ' ] ?? null ) ? $ server [ ' performance ' ] : [];
188-
189- $ serverUtilization = $ utilization [ ' server_utilization ' ] ?? 0 ;
190- $ utilizationPercent = is_numeric ( $ serverUtilization ) ? round (( float ) $ serverUtilization * 100 , 2 ) : 0 ;
191-
192- return [
199+ $ queueWorkers = is_array ($ server ['queue_workers ' ] ?? null ) ? $ server ['queue_workers ' ] : [];
200+ $ workerCount = is_array ($ queueWorkers [ ' count ' ] ?? null ) ? $ queueWorkers [ ' count ' ] : [];
201+ $ workerUtilization = is_array ($ queueWorkers [ ' utilization ' ] ?? null ) ? $ queueWorkers [ ' utilization ' ] : [];
202+ $ jobProcessing = is_array ( $ server [ ' job_processing ' ] ?? null ) ? $ server [ ' job_processing ' ] : [];
203+ $ jobLifetime = is_array ( $ jobProcessing [ ' lifetime ' ] ?? null ) ? $ jobProcessing [ ' lifetime ' ] : [] ;
204+ $ serverResources = is_array ( $ server [ ' server_resources ' ] ?? null ) ? $ server [ ' server_resources ' ] : null ;
205+
206+ $ result = [
193207 'hostname ' => $ server ['hostname ' ] ?? '' ,
194- 'workers_total ' => $ workers ['total ' ] ?? 0 ,
195- 'workers_active ' => $ workers ['active ' ] ?? 0 ,
196- 'workers_idle ' => $ workers ['idle ' ] ?? 0 ,
197- 'utilization_percent ' => $ utilizationPercent ,
198- 'jobs_processed ' => $ performance ['total_jobs_processed ' ] ?? 0 ,
208+ // Worker-level metrics (from queue workers)
209+ 'workers ' => [
210+ 'total ' => $ workerCount ['total ' ] ?? 0 ,
211+ 'active ' => $ workerCount ['active ' ] ?? 0 ,
212+ 'idle ' => $ workerCount ['idle ' ] ?? 0 ,
213+ 'current_busy_percent ' => $ workerUtilization ['current_busy_percent ' ] ?? 0.0 ,
214+ 'lifetime_busy_percent ' => $ workerUtilization ['lifetime_busy_percent ' ] ?? 0.0 ,
215+ ],
216+ // Job processing metrics (from queue workers)
217+ 'jobs ' => [
218+ 'total_processed ' => $ jobLifetime ['total_processed ' ] ?? 0 ,
219+ 'total_failed ' => $ jobLifetime ['total_failed ' ] ?? 0 ,
220+ 'failure_rate_percent ' => $ jobLifetime ['failure_rate_percent ' ] ?? 0.0 ,
221+ ],
199222 ];
223+
224+ // System resource metrics (actual server CPU/memory from SystemMetrics)
225+ // This is the REAL server usage, not worker process usage
226+ if ($ serverResources !== null ) {
227+ $ result ['server_resources ' ] = $ serverResources ;
228+ }
229+
230+ return $ result ;
200231 }, $ servers );
201232 }
202233
@@ -208,11 +239,17 @@ private function filterServersForDashboard(array $servers): array
208239 */
209240 private function filterWorkersForDashboard (array $ workers ): array
210241 {
242+ $ count = is_array ($ workers ['count ' ] ?? null ) ? $ workers ['count ' ] : [];
243+ $ utilization = is_array ($ workers ['utilization ' ] ?? null ) ? $ workers ['utilization ' ] : [];
244+ $ performance = is_array ($ workers ['performance ' ] ?? null ) ? $ workers ['performance ' ] : [];
245+
211246 return [
212- 'total ' => $ workers ['total ' ] ?? 0 ,
213- 'active ' => $ workers ['active ' ] ?? 0 ,
214- 'idle ' => $ workers ['idle ' ] ?? 0 ,
215- 'total_jobs_processed ' => $ workers ['total_jobs_processed ' ] ?? 0 ,
247+ 'total ' => $ count ['total ' ] ?? 0 ,
248+ 'active ' => $ count ['active ' ] ?? 0 ,
249+ 'idle ' => $ count ['idle ' ] ?? 0 ,
250+ 'current_busy_percent ' => $ utilization ['current_busy_percent ' ] ?? 0.0 ,
251+ 'lifetime_busy_percent ' => $ utilization ['lifetime_busy_percent ' ] ?? 0.0 ,
252+ 'total_jobs_processed ' => $ performance ['total_jobs_processed ' ] ?? 0 ,
216253 ];
217254 }
218255}
0 commit comments