{"id":20031736,"url":"https://github.com/astrodynamic/monitoringsystem","last_synced_at":"2026-05-01T20:32:26.937Z","repository":{"id":165806279,"uuid":"639372474","full_name":"Astrodynamic/MonitoringSystem","owner":"Astrodynamic","description":"Implementation of a monitoring system program to collect and log system metrics, send notifications, and provide a user interface.","archived":false,"fork":false,"pushed_at":"2023-12-03T10:31:38.000Z","size":1434,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"develop","last_synced_at":"2025-03-02T05:27:46.507Z","etag":null,"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"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Astrodynamic.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-05-11T10:40:16.000Z","updated_at":"2023-11-19T20:59:57.000Z","dependencies_parsed_at":"2024-11-13T09:44:44.701Z","dependency_job_id":null,"html_url":"https://github.com/Astrodynamic/MonitoringSystem","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Astrodynamic/MonitoringSystem","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Astrodynamic%2FMonitoringSystem","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Astrodynamic%2FMonitoringSystem/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Astrodynamic%2FMonitoringSystem/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Astrodynamic%2FMonitoringSystem/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Astrodynamic","download_url":"https://codeload.github.com/Astrodynamic/MonitoringSystem/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Astrodynamic%2FMonitoringSystem/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32512662,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"online","status_checked_at":"2026-05-01T02:00:05.856Z","response_time":64,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["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"],"created_at":"2024-11-13T09:34:33.212Z","updated_at":"2026-05-01T20:32:26.912Z","avatar_url":"https://github.com/Astrodynamic.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Monitoring System\n\nImplementation of a monitoring system project.\n\n## Introduction\n\nThis 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.\n\n## Project Structure\n\n- `src`: Contains the C++ code for the monitoring system.\n- `agents`: Dynamic libraries (*.so) for different agent types.\n- `logs`: Stores log files generated by the monitoring system.\n\n## System Architecture\n\nThe 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.\n\n### Agent Implementation\n\nAgents 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.\n\n### Kernel\n\nThe kernel periodically calls agent methods, records metrics in a log file, and scans the `./agents/` folder for new agents.\n\n## Coding Standards\n\n- Implemented in C++17.\n- Code located in the `src` folder.\n- Follow Google style for code formatting.\n\n## Build System\n\n- Use a Makefile with standard GNU targets: `all`, `install`, `uninstall`, `clean`, `dist`, `tests`.\n\n```bash\n# Build the project\nmake\n\n# Install the project\nmake install\n\n# Uninstall the project\nmake uninstall\n\n# Clean the project\nmake clean\n```\n\n## GUI Implementation\n\n- Implement GUI using Qt GUI library with API for C++17.\n\n## MVC Pattern\n\n- Implement the system using the MVC pattern.\n- No business code in the view.\n- No interface code in the controller and the model.\n- Thin controllers.\n\n## Agents and Metrics\n\n- Provide at least three types of agents: CPU, Memory, Network.\n- Each agent collects specific metrics.\n\n## Agent Configuration\n\n- Agents are configured via a configuration file.\n- Configuration includes agent name, type, critical metrics values, and update time.\n\n## Notifications\n\n- Use a Telegram bot to send notifications about critical situations.\n- Include computer name, metric name, and value in the notification.\n- Enable/disable email notifications in the interface.\n\n## Additional Agent\n\n- Implement an agent with special metrics.\n\n## Build Instructions\n\n```bash\n# Build a specific agent\nmake cpu_agent\nmake memory_agent\nmake network_agent\nmake system_agent\n\n# Build and run cppcheck\nmake cppcheck\n\n# Run clang-format\nmake clang-format\n\n# Create a distribution package\nmake dist\n```\n\n## Documentation\n\n- Generate documentation using Pandoc.\n\n```bash\nmake dvi\n```\n\n## LICENSE\nThis project is licensed under the [MIT License](LICENSE). Feel free to modify and distribute it as per the terms of the license.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fastrodynamic%2Fmonitoringsystem","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fastrodynamic%2Fmonitoringsystem","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fastrodynamic%2Fmonitoringsystem/lists"}