# Watcher - Server Monitoring Solution [![Build Status](https://git.triggermeelmo.com/Watcher/watcher/badges/workflows/build.yml/badge.svg)](https://git.triggermeelmo.com/Watcher/watcher/actions) [![.NET Version](https://img.shields.io/badge/.NET-8.0-512BD4?logo=dotnet)](https://dotnet.microsoft.com/) [![Docker Image](https://img.shields.io/badge/docker-multi--arch-2496ED?logo=docker)](https://git.triggermeelmo.com/watcher/-/packages/container/watcher-server) [![Platform](https://img.shields.io/badge/platform-linux%2Famd64%20%7C%20linux%2Farm64-lightgrey)](https://git.triggermeelmo.com/watcher/watcher-server) **Watcher** ist eine umfassende Server- und Host-Monitoring-Lösung mit verteilter Architektur, die Echtzeit-Hardware-Metriken erfasst und über ein zentrales Web-Dashboard visualisiert. ## 📋 Überblick Die Software besteht aus zwei Hauptkomponenten: - **Host Agent**: Sammelt Hardware-Metriken (CPU, GPU, RAM, Festplatte, Netzwerk) von den überwachten Servern - **Zentrale Monitoring-Software**: Web-basiertes Dashboard zur Visualisierung und Verwaltung der gesammelten Daten mit konfigurierbaren Alarmschwellen ## ✨ Hauptfunktionen ### Server-Management - Hinzufügen, bearbeiten und löschen von Servern - Hardware-Spezifikationen erfassen (CPU, GPU, RAM, Festplatte) - Server-Verifikationssystem - Online/Offline-Status-Tracking via Heartbeat - Konfigurierbare Alarmschwellen pro Server ### Monitoring & Metriken - Echtzeit-Metrikerfassung: CPU, GPU, RAM, Festplatte, Netzwerk - Automatische Datenaufbewahrung mit konfigurierbarer Retention (Standard: 30 Tage) - Historische Datenspeicherung mit Zeitstempel - REST API-Endpunkte für Metrik-Submission - Swagger/OpenAPI-Dokumentation unter `/api/v1/swagger` ### Container-Management - Docker-Container-Tracking pro Server - Container-Image-Registry - Container-Status-Überwachung - Service Discovery für Docker-Container ### Sicherheit & Authentifizierung - Lokale Benutzerauthentifizierung mit BCrypt-Hashing - Cookie-basierte Session-Verwaltung - Rollenbasierte Zugriffskontrolle - Standard-Admin-Benutzer (Username: `admin`, Passwort: `changeme` - bitte ändern!) ### Logging & Diagnostik - Strukturiertes Logging mit Serilog - Tägliche Log-Dateien: `logs/watcher-.log` - Health-Check-Endpunkte - Datenbank-Export-Funktionalität (SQL-Dumps) ## 🛠️ Technologie-Stack **Backend:** - ASP.NET Core 8.0 (C#) - Entity Framework Core 8.0 - Serilog 9.0 für Logging **Datenbank:** - SQLite (Standard, dateibasiert) - MySQL-Unterstützung (konfigurierbar) **Frontend:** - Razor Views (CSHTML) - Bootstrap / CSS - jQuery, jQuery Validation **API & Dokumentation:** - Swagger/Swashbuckle 9.0.6 - REST API **Container & Deployment:** - Docker (Multi-Arch: AMD64, ARM64) - Docker Compose - Gitea CI/CD ## 🚀 Installation & Start ### Voraussetzungen - [Docker](https://www.docker.com/) - [Docker Compose](https://docs.docker.com/compose/) ### Schnellstart 1. **docker-compose.yaml erstellen** oder die bereitgestellte verwenden: ```yaml services: watcher: image: git.triggermeelmo.com/watcher/watcher-server:latest container_name: watcher deploy: resources: limits: memory: 200M restart: unless-stopped environment: - WATCHER_VERSION=latest - UPDATE_CHECK_ENABLED=true - UPDATE_CHECK_INTERVAL_HOURS=24 - METRIC_RETENTION_DAYS=30 - METRIC_CLEANUP_ENABLED=true - METRIC_CLEANUP_INTERVAL_HOURS=24 ports: - "5000:5000" volumes: - ./watcher-volumes/data:/app/persistence - ./watcher-volumes/dumps:/app/wwwroot/downloads/sqlite - ./watcher-volumes/logs:/app/logs ``` 2. **Container starten:** ```bash docker compose up -d ``` 3. **Dashboard aufrufen:** ``` http://localhost:5000 ``` 4. **Standardanmeldung:** - Benutzername: `admin` - Passwort: `changeme` - ⚠️ **Wichtig:** Bitte Passwort nach dem ersten Login ändern! ## ⚙️ Konfiguration ### Umgebungsvariablen | Variable | Beschreibung | Standard | |----------|--------------|----------| | `WATCHER_VERSION` | Anwendungsversion | `latest` | | `UPDATE_CHECK_ENABLED` | Update-Prüfung aktivieren | `true` | | `UPDATE_CHECK_INTERVAL_HOURS` | Update-Prüfungs-Intervall | `24` | | `METRIC_RETENTION_DAYS` | Datenspeicherdauer (Tage) | `30` | | `METRIC_CLEANUP_ENABLED` | Automatische Datenbereinigung | `true` | | `METRIC_CLEANUP_INTERVAL_HOURS` | Bereinigungs-Intervall | `24` | | `DATABASE:CONNECTIONSTRINGS:SQLITE` | Benutzerdefinierter SQLite-Pfad | - | ### Volumes - `/app/persistence` - SQLite-Datenbank - `/app/wwwroot/downloads/sqlite` - Datenbank-Exports - `/app/logs` - Anwendungslogs ## 🔧 Entwicklung ### Lokales Build ```bash # Dependencies wiederherstellen dotnet restore # Build dotnet build --configuration Release # Tests ausführen dotnet test # Anwendung starten dotnet run --project Watcher ``` ### Docker-Build ```bash # Multi-Arch Build docker buildx build \ --platform linux/amd64,linux/arm64 \ -t watcher-server:latest \ --push . ``` ## 📁 Projektstruktur ``` /Watcher ├── Controllers/ # MVC & API Controllers ├── Models/ # Entity-Modelle ├── Views/ # Razor-Templates ├── Services/ # Background-Services & Stores ├── Data/ # Entity Framework Context ├── Migrations/ # EF Core Migrations ├── ViewModels/ # View Models ├── wwwroot/ # Statische Assets ├── persistence/ # SQLite-Datenbank └── logs/ # Anwendungslogs ``` ## 📝 Lizenz Dieses Projekt ist unter einer proprietären Lizenz lizenziert. ## 🔗 Links - **Repository:** [https://git.triggermeelmo.com/Watcher/watcher](https://git.triggermeelmo.com/Watcher/watcher) - **Container Registry:** [https://git.triggermeelmo.com/watcher/-/packages/container/watcher-server](https://git.triggermeelmo.com/watcher/-/packages/container/watcher-server) - **Issue Tracker:** [https://git.triggermeelmo.com/Watcher/watcher/issues](https://git.triggermeelmo.com/Watcher/watcher/issues) --- **Entwickelt mit ❤️ unter Verwendung von .NET 8.0**