A modern web dashboard for monitoring system metrics from multiple nodes running Prometheus node_exporter. This application provides real-time visualization of CPU, memory, and disk usage with historical data tracking and a responsive web interface.
- Multi-Node Monitoring: Monitor multiple nodes simultaneously by connecting to their node_exporter endpoints
- Real-Time Metrics: Display current CPU usage, memory consumption, and disk utilization
- Historical Data: Track and visualize metric trends over time with configurable data retention
- Modern UI: Clean, responsive dashboard built with Tailwind CSS
- Auto-Refresh: Configurable automatic page refresh for real-time monitoring
- Authentication: Optional basic authentication for secure access
- Configurable Updates: Separate configuration for dashboard refresh and data fetch frequencies
- CPU Usage: Percentage utilization with core count information
- Memory Usage: Percentage and total memory in MB
- Disk Usage: Percentage and total disk space in GB
- Go 1.19 or later
- Access to one or more nodes running Prometheus node_exporter
# Development build
make build
# Production build (Linux executable)
make build-prod
# Basic usage with single node
./node-dashboard --node-exporter http://localhost:9100/metrics
# Multiple nodes
./node-dashboard --node-exporter http://node1:9100/metrics --node-exporter http://node2:9100/metrics
# Custom port and update frequencies
./node-dashboard --port 8080 --node-exporter http://localhost:9100/metrics --update-frequency 15 --data-fetch-frequency 10
# With authentication
./node-dashboard --node-exporter http://localhost:9100/metrics --enable-auth --auth-user admin --auth-password secret
Flag | Short | Default | Description |
---|---|---|---|
--port |
-p |
8080 | Port to listen on |
--node-exporter |
-n |
- | Node exporter URLs (can be specified multiple times) |
--update-frequency |
-u |
10 | Dashboard update frequency in seconds |
--data-fetch-frequency |
-d |
5 | Node exporter data fetch frequency in seconds |
--enable-auth |
- | false | Enable basic authentication |
--auth-user |
- | - | Username for basic authentication |
--auth-password |
- | - | Password for basic authentication |
# Build Docker image
docker build -t node-dashboard .
# Run with Docker
docker run -p 8080:8080 node-dashboard --node-exporter http://host.docker.internal:9100/metrics
The project follows standard Go project layout:
cmd/node-dashboard/
: Main application entry pointinternal/metrics/
: Metrics collection and processinginternal/server/
: Web server and dashboard handlinginternal/server/templates/
: HTML templates
├── cmd/node-dashboard/ # Main application
├── internal/
│ ├── metrics/ # Metrics collection and storage
│ └── server/ # Web server and dashboard
├── Dockerfile # Container build configuration
├── Makefile # Build automation
└── README.md # This file
This project is open source and available under standard licensing terms.