Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/astrodynamic/monitoringsystem
Implementation of a monitoring system program to collect and log system metrics, send notifications, and provide a user interface.
https://github.com/astrodynamic/monitoringsystem
agents cmake configuration-file cpp cpp17 dynamic-library email-notification kernel logging makefile makefiles metrics monitoring-automation monitoring-system notifications qml qt qt6 system-information telegram-bot
Last synced: 11 days ago
JSON representation
Implementation of a monitoring system program to collect and log system metrics, send notifications, and provide a user interface.
- Host: GitHub
- URL: https://github.com/astrodynamic/monitoringsystem
- Owner: Astrodynamic
- License: mit
- Created: 2023-05-11T10:40:16.000Z (over 1 year ago)
- Default Branch: develop
- Last Pushed: 2023-12-03T10:31:38.000Z (about 1 year ago)
- Last Synced: 2024-11-13T09:44:34.783Z (2 months ago)
- Topics: agents, cmake, configuration-file, cpp, cpp17, dynamic-library, email-notification, kernel, logging, makefile, makefiles, metrics, monitoring-automation, monitoring-system, notifications, qml, qt, qt6, system-information, telegram-bot
- Language: C++
- Homepage:
- Size: 1.37 MB
- Stars: 1
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Monitoring System
Implementation of a monitoring system project.
## Introduction
This project is aimed at creating a simple and efficient monitoring system for tracking key indicators of a system using a kernel and dynamic agents. The system should collect metrics from agents, log them, and send notifications to users in case of critical values.
## Project Structure
- `src`: Contains the C++ code for the monitoring system.
- `agents`: Dynamic libraries (*.so) for different agent types.
- `logs`: Stores log files generated by the monitoring system.## System Architecture
The monitoring system consists of a kernel and dynamic agents. Agents are lightweight programs collecting metrics and passing them to the kernel, which logs the data. The system notifies users when critical values are reached.
### Agent Implementation
Agents are implemented as dynamic libraries (*.so) and can be loaded or unloaded while the system is running. Each agent has an `updateMetrics()` method to provide actual metrics to the kernel.
### Kernel
The kernel periodically calls agent methods, records metrics in a log file, and scans the `./agents/` folder for new agents.
## Coding Standards
- Implemented in C++17.
- Code located in the `src` folder.
- Follow Google style for code formatting.## Build System
- Use a Makefile with standard GNU targets: `all`, `install`, `uninstall`, `clean`, `dist`, `tests`.
```bash
# Build the project
make# Install the project
make install# Uninstall the project
make uninstall# Clean the project
make clean
```## GUI Implementation
- Implement GUI using Qt GUI library with API for C++17.
## MVC Pattern
- Implement the system using the MVC pattern.
- No business code in the view.
- No interface code in the controller and the model.
- Thin controllers.## Agents and Metrics
- Provide at least three types of agents: CPU, Memory, Network.
- Each agent collects specific metrics.## Agent Configuration
- Agents are configured via a configuration file.
- Configuration includes agent name, type, critical metrics values, and update time.## Notifications
- Use a Telegram bot to send notifications about critical situations.
- Include computer name, metric name, and value in the notification.
- Enable/disable email notifications in the interface.## Additional Agent
- Implement an agent with special metrics.
## Build Instructions
```bash
# Build a specific agent
make cpu_agent
make memory_agent
make network_agent
make system_agent# Build and run cppcheck
make cppcheck# Run clang-format
make clang-format# Create a distribution package
make dist
```## Documentation
- Generate documentation using Pandoc.
```bash
make dvi
```## LICENSE
This project is licensed under the [MIT License](LICENSE). Feel free to modify and distribute it as per the terms of the license.