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.rsexists 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.receivedmeteor.events.task.startedmeteor.events.task.succeededmeteor.events.task.failedmeteor.events.task.retriedmeteor.events.task.revokedmeteor.events.worker.onlinemeteor.events.worker.offlinemeteor.events.worker.heartbeat
Implementation Steps
- [ ] Define event schema (
WorkerEventenum) - [ ] Add event publishing to Worker (fire & forget via NATS)
- [ ] Create Monitor service that subscribes to events
- [ ] Aggregate events into Prometheus metrics
- [ ] Expose
/metricsendpoint from Monitor - [ ] (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
- Celery Flower: https://flower.readthedocs.io/
- Celery Events: https://docs.celeryq.dev/en/stable/userguide/monitoring.html
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗