Control Dashboard
Surgewave Control provides a customizable dashboard with drag-and-drop widgets, theme persistence, and real-time metrics.
Dashboard Widgets
The dashboard includes 14 widgets organized in three rows:
Summary Row (Top)
| Widget | Description |
|---|---|
| Cluster Status | Health indicator (Healthy/Unhealthy) |
| Throughput | Messages per second with live updates |
| Brokers | Active broker count |
| Topics | Total topic count |
| Latency | Produce latency P50/P90/P99 bar chart |
Metrics Row (Second)
| Widget | Description |
|---|---|
| Consumer Groups | Consumer group count |
| Partitions | Total partition count |
| Errors | Error counter (produce + general errors) |
| Pipelines | Active pipeline count |
| Connectors | Active connector count |
| Cluster Information | Detailed cluster info table (cluster ID, controller, totals) |
Data Row (Bottom)
| Widget | Description |
|---|---|
| Topics Table | Top 5 topics with partition/replication info |
| Consumer Groups Table | Top 5 consumer groups with state and member count |
| Recent Pipelines | Top 5 pipelines with status and node count |
Widget Customization
Drag-and-Drop Reordering
Widgets can be rearranged by dragging the handle icon in the top-right corner of each card. Cards can be moved within a row or between rows. The layout is persisted to localStorage and restored on reload.
Widget Visibility Toggle
Click the widget menu icon in the dashboard header to show or hide individual widgets. Hidden widgets are remembered across browser sessions.
Auto-Refresh
Metrics widgets (throughput, latency, errors) refresh automatically every 5 seconds. The dashboard calculates message throughput by comparing snapshots across intervals.
Theme Persistence
Surgewave Control supports dark and light themes:
- System detection: On first visit, the theme matches the browser's
prefers-color-schemesetting - Manual toggle: Click the sun/moon icon in the top navigation bar
- Persistence: The selected theme is stored in
localStorageundersurgewave_theme_dark_mode
The theme applies globally via MudBlazor's MudThemeProvider.
Consumer Lag Monitoring
The Consumer Groups table and detail pages show:
- Group State - Stable, PreparingRebalance, CompletingRebalance, Empty, Dead
- Member Count - Active consumers in the group
- Per-partition lag - Available on the consumer group detail page at
/consumer-groups/{groupId}
Consumer lag alerts can be configured in Prometheus:
- alert: HighConsumerLag
expr: surgewave_consumer_lag > 10000
for: 10m
labels:
severity: warning
annotations:
summary: "Consumer group {{ $labels.group }} has high lag"
Alerting Overview
Surgewave exposes metrics compatible with Prometheus alerting. Recommended alerts:
| Alert | Condition | Severity |
|---|---|---|
| SurgewaveDown | up{job="surgewave"} == 0 for 1m |
Critical |
| UnderReplicatedPartitions | surgewave_under_replicated_partitions > 0 for 5m |
Warning |
| HighConsumerLag | surgewave_consumer_lag > 10000 for 10m |
Warning |
| HighProduceLatency | surgewave_request_duration_ms{quantile="0.99"} > 100 for 5m |
Warning |
| HighErrorRate | rate(surgewave_errors_total[5m]) > 10 for 5m |
Warning |
See the Monitoring Overview for Prometheus scrape configuration and Grafana dashboard setup.
Next Steps
- Metrics Reference - Complete Prometheus metrics reference
- OpenTelemetry - Distributed tracing setup