Readme aktualisiert
This commit is contained in:
212
README.md
212
README.md
@@ -1,34 +1,202 @@
|
|||||||
# 🖥️ Server Monitoring Software
|
# Watcher - Server Monitoring Solution
|
||||||
|
|
||||||
Dieses Projekt ist eine umfassende Monitoring-Lösung für Server und Host-Geräte.
|
[](https://git.triggermeelmo.com/Watcher/watcher/actions)
|
||||||
Die Software besteht aus zwei Teilen:
|
[](https://dotnet.microsoft.com/)
|
||||||
- **Host Agent**: Sammelt Hardware-Daten von den Hosts
|
[](https://git.triggermeelmo.com/watcher/-/packages/container/watcher-server)
|
||||||
- **Zentrale Monitoring-Software**: Visualisiert und verwaltet die gesammelten Daten
|
[](https://git.triggermeelmo.com/watcher/watcher-server)
|
||||||
|
|
||||||
Die Lösung unterstützt moderne Authentifizierungsverfahren und flexible Datenbankanbindungen – alles bequem verteilt als Docker Image.
|
**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
|
||||||
|
|
||||||
## ✨ Features
|
Die Software besteht aus zwei Hauptkomponenten:
|
||||||
|
|
||||||
- Erfassung von Hardware-Daten aller wichtigen Komponenten
|
- **Host Agent**: Sammelt Hardware-Metriken (CPU, GPU, RAM, Festplatte, Netzwerk) von den überwachten Servern
|
||||||
- Lokale Authentifizierung oder OIDC (OpenID Connect)
|
- **Zentrale Monitoring-Software**: Web-basiertes Dashboard zur Visualisierung und Verwaltung der gesammelten Daten mit konfigurierbaren Alarmschwellen
|
||||||
- Wahlweise Speicherung der Daten in:
|
|
||||||
- Lokaler SQLite-Datenbank
|
|
||||||
- Remote MySQL-Datenbank
|
|
||||||
- Einfache Bereitstellung via Docker & docker-compose
|
|
||||||
|
|
||||||
---
|
## ✨ Hauptfunktionen
|
||||||
|
|
||||||
## ⚙️ Installation & Start
|
### 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
|
||||||
|
|
||||||
Voraussetzung:
|
### 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-<datum>.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](https://www.docker.com/)
|
||||||
- [docker-compose](https://docs.docker.com/compose/)
|
- [Docker Compose](https://docs.docker.com/compose/)
|
||||||
|
|
||||||
1. Image herunterladen:
|
### Schnellstart
|
||||||
```bash
|
|
||||||
docker pull git.triggermeelmo.com/daniel-hbn/watcher/watcher:latest
|
1. **docker-compose.yaml erstellen** oder die bereitgestellte verwenden:
|
||||||
2. Docker Container starten
|
|
||||||
|
```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
|
```bash
|
||||||
docker compose up -d
|
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**
|
||||||
Reference in New Issue
Block a user