toJson method
Export metrics as JSON
Implementation
Map<String, dynamic> toJson() {
return {
// Counters
'total_queued': totalQueued,
'total_started': totalStarted,
'total_completed': totalCompleted,
'total_failed': totalFailed,
'total_retried': totalRetried,
'total_timed_out': totalTimedOut,
'currently_processing': currentlyProcessing,
// Rates
'success_rate': successRate,
'failure_rate': failureRate,
'timeout_rate': timeoutRate,
'throughput_per_second': throughput,
// Processing times
'average_processing_time_ms': averageProcessingTime.inMilliseconds,
'p50_processing_time_ms': p50ProcessingTime.inMilliseconds,
'p95_processing_time_ms': p95ProcessingTime.inMilliseconds,
'p99_processing_time_ms': p99ProcessingTime.inMilliseconds,
'p999_processing_time_ms': p999ProcessingTime.inMilliseconds,
'min_processing_time_ms': minProcessingTime.inMilliseconds,
'max_processing_time_ms': maxProcessingTime.inMilliseconds,
'std_dev_processing_time_ms': stdDevProcessingTime.inMilliseconds,
// Queue depth
'current_queue_depth': currentQueueDepth,
'average_queue_depth': averageQueueDepth,
'peak_queue_depth': peakQueueDepth,
// Worker utilization
'total_workers': _totalWorkers,
'current_worker_utilization': currentWorkerUtilization,
'average_worker_utilization': averageWorkerUtilization,
'peak_worker_utilization': peakWorkerUtilization,
// Timing
'uptime_seconds': uptime.inSeconds,
'start_time': startTime?.toIso8601String(),
'last_activity': lastActivity?.toIso8601String(),
// Per-type statistics
'queued_by_type': queuedByType,
'completed_by_type': completedByType,
'failed_by_type': failedByType,
'retried_by_type': retriedByType,
'average_processing_time_by_type': totalProcessingTimeByType.map(
(k, v) => MapEntry(k, averageProcessingTimeForType(k).inMilliseconds),
),
// Per-priority statistics
'queued_by_priority': _priorityMapToJson(queuedByPriority),
'completed_by_priority': _priorityMapToJson(completedByPriority),
'failed_by_priority': _priorityMapToJson(failedByPriority),
};
}