- Git
- Docker
- Go 1.21+
- Producer binary (reads hardware metrics from sources provided in
data/sensor_targets.json, publishes messages to Kafka) - Kafka broker (handles message queueing/delivery between the Producer and Consumer - coordinated by Zookeeper)
- Zookeeper (manages Kafka broker metadata/coordinates Kafka)
- Consumer binary (subscribes to Kafka topics, processes incoming messages, and exposes metrics on
:8080for Prometheus) - Prometheus (Scrapes metrics from the Consumer endpoint at
:8080) - Grafana (uses Prometheus as a data source)
- Kafka UI (self-explanatory, found at
{device_ip}:8090)
Go binaries (producer, consumer) are compiled binaries, and are run as background processes. All other services (Kafka + UI, Zookeeper, Prometheus, and Grafana) are containerised using Docker Compose.
- Clone the repository
git clone https://github.com/heychoogle/mondae.git
- Navigate to the project root directory
cd mondae
- Ensure all files in the
scripts/directory are executable
chmod +x scripts/*.sh
- Create the .env file in the project root (pre-populated with default Kafka + Grafana variables)
cp .env.example .env
- Compile Go service binaries
bash scripts/build.sh
- Start the compiled binaries and Dockerised services with the combined start script
bash scripts/start-all.sh
- Access the Grafana dashboard at
{device_ip}:3000using credentials set in.env(you may have to expose this port through your firewall, e.g.ufw) - You can stop the background processes and dockerised services using:
bash scripts/stop-all.sh