Device Chronicle is a lightweight system monitoring tool that collects and visualizes realtime performance metrics from your devices. It consists of a server component (web dashboard) and client agents that run on monitored systems.
- Realtime monitoring via WebSocket communication
- Performance visualization with interactive charts:
- CPU usage and temperature
- Memory and swap usage
- Network traffic
- Disk space and usage
- Multi-device support - monitor multiple systems from a single dashboard
- User-level installation - no root privileges required
- Automatic startup via systemd user service
-
Start the server:
# run this commands from the server directory cp .env.example .env # change the .env file to your needs docker compose -f docker-compose.production.yaml build docker compose -f docker-compose.production.yaml up -d
-
Access the dashboard at http://localhost:8000
-
Install the client on each system you want to monitor:
chmod +x ./chronicle-client ./chronicle-client --install --server http://SERVER_IP:8000 --client DEVICE_NAME
- Download the client binary from the releases page
- Replace
SERVER_IP
with the IP address of the server or domain name andDEVICE_NAME
with a unique name for the device - In case for updating the client, stop the service first
systemctl --user stop chronicle-client
-
The client will automatically start and connect to the server
Usage: chronicle-client [options]
Options:
--install Install the client to user's home directory
--server string Server address, e.g. http://localhost:8000
--client string Client name (e.g., desktop, laptop, server)
--interval int Data collection interval in seconds (default: 2)
--dummy Use dummy data for testing
- The client collects system metrics using the gopsutil library
- Data is sent to the server via WebSocket connection
- The server processes and visualizes the data using interactive charts
- All charts update in real-time as data arrives
After installation, configuration is stored in:
~/.config/chronicle-client/config.json
The client binary is installed to:
~/.local/bin/chronicle-client
The client runs as a systemd user service that starts automatically on login:
# Check status
systemctl --user status chronicle-client
# Stop service
systemctl --user stop chronicle-client
# Start service
systemctl --user start chronicle-client
Device Chronicle was born out of a practical need, monitoring system resources on my linux gaming (aka potato) PC from another device. When playing games on my less powerful "potato PC," I wanted to keep an eye on system temperatures, CPU usage, and memory consumption without tabbing out of the game or impacting performance.
By creating a lightweight monitoring tool with a web interface accessible from any device, I could:
- Monitor my Linux system resources in realtime from my phone or tablet
- Track performance metrics during gaming sessions
- Keep an eye on temperature levels during resource intensive tasks
- Identify potential bottlenecks affecting game performance
- Code cleanup and more tests
- Add more system metrics
- Windows support
- Maybe add a database to store historical data
Beta
This project uses:
- Go for the server and client services
- JavaScript with ECharts for visualization
- WebSockets for realtime communication
MIT
- Icon credit: Icon by Iconic Panda