Microservices are fun - Microservices are easy... well this one is !
Pluto is a network monitoring system built using Go and React. It captures, processes, and visualizes network traffic data in real-time.
Each Service is dockerized allowing for easy scalability and deployment.
The system consists of multiple microservices:
- Collector: Captures network packets using libpcap and sends them to Kafka.
- Processor: Processes the network data from Kafka and stores it in PostgreSQL.
- Plutos-Space (Server): Provides REST API endpoints and WebSocket connections for the dashboard.
- Dashboard: React-based UI to visualize network traffic data.
- Docker and Docker Compose
- Go 1.24+
- Node.js 18+
- PostgreSQL
- Kafka
The easiest way to run the entire system is using Docker Compose:
# Start all services
docker-compose up -d
# To view logs
docker-compose logs -f
# To stop all services
docker-compose down
The services will be available at:
- Dashboard: http://localhost:3000
- Server API: http://localhost:8000
- Kafka UI: http://localhost:8080
- pgAdmin: http://localhost:5050
cd collector
go mod tidy
go run main.go
cd processor
go mod tidy
go run main.go
cd plutos-space
go mod tidy
go run main.go
cd dashboard
npm install
npm run dev
If you have everything up and running you should be able to visit your localhost:3000 and see your local network traffic.
The server provides the following REST API endpoints:
GET /api/health
: Health check endpointGET /api/stats
: Get network statisticsGET /api/packets
: Get network packetsGET /api/protocols
: Get protocol statisticsGET /api/top-sources
: Get top source IPsGET /api/top-destinations
: Get top destination IPsGET /api/packet-timeline
: Get packet timeline dataGET /api/alerts
: Get security alerts
The server also provides a WebSocket endpoint at /ws
for real-time updates.
TODO: Yara implementation and Packet Analysis through Signature and Heuristic Behavioral Detection.
Thanks for reading h3bzzz
MIT