feat(meteor): Event-based monitoring system (Flower-like)

Resolved 💬 2 comments Opened Feb 1, 2026 by chrischeng-c4 Closed Feb 1, 2026

Summary

Implement an event-based monitoring system for cclab-meteor, similar to Celery's Flower.

Current State

  • metrics.rs exists with Prometheus metrics definitions
  • Worker does NOT call any metrics functions
  • No centralized monitoring/dashboard

Proposed Architecture

┌─────────────────────────────────────────────────────────────┐
│  Event-based Monitoring (Celery/Flower pattern)             │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│   Worker ──publish──► "meteor.events.*" (fire & forget)     │
│                              │                              │
│                              ▼                              │
│                       Monitor Service                       │
│                       (subscribe & aggregate)               │
│                              │                              │
│                              ▼                              │
│                         /metrics (Prometheus)               │
│                         Web UI (optional)                   │
│                                                             │
└─────────────────────────────────────────────────────────────┘

Why Events, Not Tasks

| Aspect | Events | Tasks |
|--------|--------|-------|
| Delivery | Fire & forget | At-least-once |
| Result needed | ❌ | ✅ |
| Overhead | Light | Heavy |
| Suitable for metrics | ✅ | ❌ |

Event Types

  • meteor.events.task.received
  • meteor.events.task.started
  • meteor.events.task.succeeded
  • meteor.events.task.failed
  • meteor.events.task.retried
  • meteor.events.task.revoked
  • meteor.events.worker.online
  • meteor.events.worker.offline
  • meteor.events.worker.heartbeat

Implementation Steps

  1. [ ] Define event schema (WorkerEvent enum)
  2. [ ] Add event publishing to Worker (fire & forget via NATS)
  3. [ ] Create Monitor service that subscribes to events
  4. [ ] Aggregate events into Prometheus metrics
  5. [ ] Expose /metrics endpoint from Monitor
  6. [ ] (Optional) Web UI for real-time monitoring

NATS Suitability

NATS is well-suited for this pattern:

  • Native pub/sub support
  • Subject wildcards (meteor.events.>)
  • Low latency, fire & forget
  • JetStream for event persistence (optional)

References

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗