diff --git a/admin/dashboard.html b/admin/dashboard.html
index dfbbf78..4f8c8f1 100644
--- a/admin/dashboard.html
+++ b/admin/dashboard.html
@@ -563,6 +563,26 @@
Enabled
--
+
+ Total Requests
+ --
+
+
+ Total Successes
+ --
+
+
+ Total Failures
+ --
+
+
+ Consecutive Successes
+ --
+
+
+ Consecutive Failures
+ --
+
Max Failures
--
@@ -1208,6 +1228,19 @@
document.getElementById('cb-enabled').textContent = data.enabled ? 'Yes' : 'No';
+ if (data.counts) {
+ document.getElementById('cb-total-requests').textContent =
+ (data.counts.requests || 0).toLocaleString();
+ document.getElementById('cb-total-successes').textContent =
+ (data.counts.total_successes || 0).toLocaleString();
+ document.getElementById('cb-total-failures').textContent =
+ (data.counts.total_failures || 0).toLocaleString();
+ document.getElementById('cb-consecutive-successes').textContent =
+ (data.counts.consecutive_successes || 0).toLocaleString();
+ document.getElementById('cb-consecutive-failures').textContent =
+ (data.counts.consecutive_failures || 0).toLocaleString();
+ }
+
if (data.config) {
document.getElementById('cb-max-failures').textContent = data.config.max_failures || '--';
document.getElementById('cb-timeout').textContent = (data.config.timeout || '--') + 's';
diff --git a/admin_dashboard.go b/admin_dashboard.go
index c8e07a5..20ef196 100644
--- a/admin_dashboard.go
+++ b/admin_dashboard.go
@@ -208,9 +208,17 @@ func (ad *AdminDashboard) getCircuitBreakerStatus(c *fiber.Ctx) error {
if cb != nil {
cbMutex.RLock()
state := cb.State()
+ counts := cb.Counts()
cbMutex.RUnlock()
status["state"] = state.String()
+ status["counts"] = map[string]interface{}{
+ "requests": counts.Requests,
+ "total_successes": counts.TotalSuccesses,
+ "total_failures": counts.TotalFailures,
+ "consecutive_successes": counts.ConsecutiveSuccesses,
+ "consecutive_failures": counts.ConsecutiveFailures,
+ }
status["config"] = map[string]interface{}{
"max_failures": cfg.CircuitBreaker.MaxFailures,
"failure_ratio": cfg.CircuitBreaker.FailureRatio,
@@ -732,9 +740,17 @@ func (ad *AdminDashboard) gatherAllStats() map[string]interface{} {
if cb != nil {
cbMutex.RLock()
state := cb.State()
+ counts := cb.Counts()
cbMutex.RUnlock()
cbStatus["state"] = state.String()
+ cbStatus["counts"] = map[string]interface{}{
+ "requests": counts.Requests,
+ "total_successes": counts.TotalSuccesses,
+ "total_failures": counts.TotalFailures,
+ "consecutive_successes": counts.ConsecutiveSuccesses,
+ "consecutive_failures": counts.ConsecutiveFailures,
+ }
cbStatus["config"] = map[string]interface{}{
"max_failures": cfg.CircuitBreaker.MaxFailures,
"failure_ratio": cfg.CircuitBreaker.FailureRatio,