The Monit is an system designed to provide efficient, secure, and easy-to-use tools for IT system monitoring in a cloud environment. Developed by a dedicated team from the School of Computer Science and Engineering, this project aims to streamline IT operations and boost operational efficiency with intelligent monitoring, smart alerting, and automated machine management.
This platform empowers IT personnel to:
- Monitor system health: Assess real-time CPU, memory, and service usage.
- Collect and display multi-dimensional data: Gain insights through intuitive, real-time data charts.
- Automate machine management: Easily manage multiple machines remotely via an integrated interface.
-
Automated Installation & Deployment
- Use SSH to deploy agents to remote machines automatically.
- Compatible with various Linux distributions.
-
Real-time Data Collection and Monitoring
- Collect system hardware usage (CPU, memory, disk, and more).
- Monitor key service health metrics (e.g., MySQL QPS/TPS, Redis performance).
- Real-time monitoring dashboard with refresh intervals as low as 10 seconds.
-
Intelligent Alerts
- Easily configure alert thresholds for monitoring metrics.
- Real-time email notifications and support for enterprise WeChat alert integration.
-
Decoupled Frontend and Backend Architecture
- Frontend built with Vue.js.
- Backend powered by Go (Gin framework), ensuring high performance and scalability.
- Python-based Agent for cross-platform compatibility.
-
Security Enhancements
- Enforce JWT authentication for all API operations.
- Prevent unauthorized access and protect sensitive data.
- Go: A modern, efficient programming language for developing high-performance server-side applications.
- Gin: Lightweight and powerful web framework for RESTful APIs.
- Gin-Vue-Admin: Complete template for building enterprise-grade projects with user management, logging, etc.
- Vue.js: Reactive web development framework for building engaging, high-performance UIs.
- Vue Router: Seamlessly manage routes in your single-page application.
- Element UI: Comprehensive library of prebuilt UI components.
- Python: A flexible, beginner-friendly language for cross-platform compatibility.
- Libraries used in the Agent module:
- Paramiko: Establish remote SSH connections.
- Psutil: Collect operating system metrics such as CPU and memory.
- Sqlite3: Manage local monitor data for offline storage.
- Others include PyMySQL (MySQL data fetching) and Redis libraries.
- Agent Installation: Deploy monitoring agents to target machines via SSH.
- Data Transmission: Agents collect system and service metrics and send them to the backend.
- Backend Processing: The backend processes and stores the data while running alert-based checks.
- Frontend Visualization: The frontend allows users to view machine statuses, generate time-based charts, and manage operations.
- Go
>= 1.19
- MySQL (to store monitoring data)
- Redis (optional, for caching)
- Node.js
>= 16+
- Vue CLI installed globally (
npm install -g @vue/cli
)
- Target system requirements:
- OS: Linux (CentOS/Ubuntu/Debian)
- Python:
>= 3.6
-
Clone the repository:
git clone https://github.com/username/project-name.git cd project-name/backend
-
Configure the environment:
cp config.yaml.example config.yaml # Edit config.yaml with database, Redis configurations
-
Start the backend:
go mod tidy go run main.go
-
Navigate to the frontend directory:
cd ../frontend
-
Install dependencies:
npm install
-
Run in developer mode:
npm run serve
-
Build for production:
npm run build
- Use the following command to install the Agent on a remote machine:
python remote.py install --host <IP> --port <SSH_Port> --username <User> --password <Password> --machine-id <UUID>
Start by visiting the platform interface at http://<server-ip>:<frontend-port>
and log in using:
- Username:
admin
- Password:
123456
- Add new machines via the machine management page.
- After successful deployment, manage machine status and monitor metrics remotely.
Access the dashboard to track system metrics like CPU and memory usage, in real-time.
- Refresh cycles as low as 10 seconds.
- Zoom into time periods or examine specific machine stats.
Configure custom alert thresholds to receive real-time notifications:
- Alerts are sent via email.
- Integration with enterprise WeChat for instant alerts.
project-name/
├── backend/ # Backend code (Go)
├── frontend/ # Frontend code (Vue.js)
├── agent/ # Monitoring Agent code (Python)
├── docs/ # Documentation resources
└── README.md # Project overview & guide
- Dijia Zhan (詹迪佳)
- Yingjin Jiang (江英进)
- Xuan Gan (甘轩)
- Peng Qian (钱鹏)
This project is licensed under the MIT License. You're free to use, distribute, and modify the software under these terms.
For any queries, questions, or suggestions, feel free to:
- Open a GitHub Issue at GitHub Repo Issues
Join us in making IT monitoring more seamless and efficient! 🎉