____ ____ ____ _ ____ _____ ____ _
/ _ \/ __\/ _ \/ \ /|/ _ \/__ __\/ _\/ \ /|
| | //| \/|| / \|| | ||| / \| / \ | / | |__||
| |_\\| __/| |-||| |/\||| |-|| | | | \_ | | ||
\____/\_/ \_/ \|\_/ \|\_/ \| \_/ \____/\_/ \|
Introduction
Buswatch is a collection of crates for monitoring and diagnosing message bus systems. It provides a terminal UI for real-time visualization, an instrumentation SDK for Rust applications, and adapters for popular message brokers.
Whether you're debugging a slow consumer, tracking message flow through your system, or just want visibility into your message bus, buswatch gives you the tools you need.
Crates
The repository is organized as a Cargo workspace. Each crate serves a specific purpose and can be used independently or together.
Core
| Crate | Description |
|---|---|
| buswatch-types | Core type definitions and JSON schema for the wire format |
| buswatch-tui | Terminal UI for real-time monitoring and diagnostics |
Instrumentation
| Crate | Description |
|---|---|
| buswatch-sdk | Lightweight SDK for instrumenting Rust applications |
| buswatch-adapters | Pre-built collectors for RabbitMQ, Kafka, and NATS |
Quick Start
Install the TUI
Monitor a JSON file
Connect to a TCP stream
Subscribe to RabbitMQ
Architecture
┌─────────────────┐ ┌─────────────────┐ ┌──────────────┐
│ Your App │ │ Message Bus │ │ │
│ + buswatch-sdk │────▶│ (RabbitMQ, │◀────│ buswatch │
│ │ │ Kafka, NATS) │ │ TUI │
└─────────────────┘ └─────────────────┘ └──────────────┘
│
▼
┌─────────────────┐
│ buswatch-adapters│
│ (collectors) │
└─────────────────┘
Two ways to get data into buswatch:
- Instrumentation (push): Add
buswatch-sdkto your app and emit metrics - Adapters (pull): Use
buswatch-adaptersto collect from your message bus
Wire Format
All components communicate using the buswatch snapshot format:
See buswatch-types for the full schema and serialization options.
Features
- Real-time TUI with summary, bottleneck, and flow views
- Health detection based on configurable thresholds
- Sparklines for visualizing trends
- Multiple data sources: files, TCP streams, message bus subscriptions
- Instrumentation SDK for Rust applications
- Adapters for RabbitMQ, Kafka, and NATS
- OpenTelemetry export support
- JSON and CBOR serialization
License
Licensed under the Apache License, Version 2.0. See LICENSE for details.