X: Moved markdown files from Documentation to keep in sync
This commit is contained in:
+139
@@ -0,0 +1,139 @@
|
||||
#<center><H1>SuWiMo<br>Documentation</H1></center>
|
||||
|
||||
**Indholdsfortegnelse:**
|
||||
<!-- TOC -->
|
||||
* [1. Introduktion og Formål](#1-introduktion-og-formål)
|
||||
* [2. Arkitektur og Overordnet Design](#2-arkitektur-og-overordnet-design)
|
||||
* [2.1 Central Hub (SuWiMoHub)](#21-central-hub-suwimohub)
|
||||
* [2.2 Plugin-baseret Design](#22-plugin-baseret-design)
|
||||
* [3. Sensorer](#3-sensorer)
|
||||
* [3.1 Sensorinterface](#31-sensorinterface)
|
||||
* [3.2 Statusniveauer](#32-statusniveauer)
|
||||
* [3.3 Passiv Sensorlogik](#33-passiv-sensorlogik)
|
||||
* [4. Hierarkisk Struktur (Træstruktur)](#4-hierarkisk-struktur-træstruktur)
|
||||
* [4.1 Dynamisk Træ via Konfiguration](#41-dynamisk-træ-via-konfiguration)
|
||||
* [4.2 Statuspropagering](#42-statuspropagering)
|
||||
* [5. Notifikationssystem og Logging](#5-notifikationssystem-og-logging)
|
||||
* [5.1 Notifier Interface](#51-notifier-interface)
|
||||
* [5.2 Historik og Logging](#52-historik-og-logging)
|
||||
* [6. Distribution og Decentralisering](#6-distribution-og-decentralisering)
|
||||
* [6.1 AssetAZ Observables](#61-assetaz-observables)
|
||||
* [6.2 Distribuerede Hubs](#62-distribuerede-hubs)
|
||||
* [7. Brugsscenarier og Eksempler](#7-brugsscenarier-og-eksempler)
|
||||
* [8. Fremtidige Funktioner / TODO](#8-fremtidige-funktioner--todo)
|
||||
<!-- TOC -->
|
||||
|
||||
## 1. Introduktion og Formål
|
||||
SuWiMo (Surveillance Without Moving) er et system udviklet til enkel og effektiv statusovervågning af mange uafhængige
|
||||
sensorer organiseret i en hierarkisk træstruktur. Formålet med SuWiMo er at give et hurtigt, visuelt overblik over
|
||||
systemets tilstand, hvor status let kan aflæses som grøn (OK), gul (advarsel) eller rød (kritisk fejl).
|
||||
|
||||
SuWiMo fokuserer på tillidsvalidering og identificering af afvigelser i realtid, snarere end detaljeret monitorering
|
||||
eller datalogging som traditionelle overvågningssystemer.
|
||||
|
||||
## 2. Arkitektur og Overordnet Design
|
||||
### 2.1 Central Hub (SuWiMoHub)
|
||||
SuWiMoHub fungerer som den centrale orchestrator, der står for al polling, statusvurdering og statuspropagering i
|
||||
træstrukturen. Hubben håndterer ikke selv sensorlogik, men trækker på plugins via interfaces.
|
||||
|
||||
- Centraliseret styring af polling-interval.
|
||||
- Indlæsning af sensor- og notifier-plugins.
|
||||
- Dynamisk opbygning og opdatering af status-træet.
|
||||
|
||||
### 2.2 Plugin-baseret Design
|
||||
SuWiMo benytter en modulær plugin-arkitektur, hvor forskellige typer af plugins implementerer specifikke interfaces
|
||||
efter deres funktion:
|
||||
|
||||
- **Sensor-plugins** implementerer sensorinterface til overvågning og statusrapportering.
|
||||
- **Notifier-plugins** implementerer notifierinterface til at sende notifikationer ved statusændringer.
|
||||
- **Logger-plugins** implementerer logningsinterface til historisk registrering af statusændringer.
|
||||
|
||||
Disse plugins registreres og administreres af Nenjim-systemet, hvilket sikrer nem distribution, versionering og
|
||||
udskiftelighed.
|
||||
|
||||
## 3. Sensorer
|
||||
### 3.1 Sensorinterface
|
||||
Sensorer implementerer et simpelt, standardiseret interface:
|
||||
|
||||
```java
|
||||
public interface SuwimoSensor {
|
||||
SensorStatus poll();
|
||||
}
|
||||
|
||||
public class SensorStatus {
|
||||
StatusLevel level; // GREEN, YELLOW, RED
|
||||
String message; // Kort forklaring på tilstand
|
||||
}
|
||||
```
|
||||
|
||||
### 3.2 Statusniveauer
|
||||
- **Green**: Normal drift.
|
||||
- **Yellow**: Advarsel, kræver opmærksomhed.
|
||||
- **Red**: Kritisk fejl, kræver øjeblikkelig handling.
|
||||
|
||||
### 3.3 Passiv Sensorlogik
|
||||
Sensorer kører ikke aktivt. De er passive komponenter, som kun evaluerer og returnerer deres status, når hubben
|
||||
poller dem.
|
||||
|
||||
## 4. Hierarkisk Struktur (Træstruktur)
|
||||
### 4.1 Dynamisk Træ via Konfiguration
|
||||
Træstrukturen defineres i en JSON-konfigurationsfil, hvor hver node har et unikt ID, et navn, en valgfri sensor og en
|
||||
parent-reference. Eksempel:
|
||||
|
||||
```json
|
||||
[
|
||||
{ "id": "internet", "name": "Internetforbindelse", "sensor": "PingGoogle", "parent": null },
|
||||
{ "id": "zfs-check", "name": "ZFS array", "sensor": "ZfsStatus", "parent": "server01" },
|
||||
{ "id": "server01", "name": "Serverrummet", "sensor": null, "parent": null }
|
||||
]
|
||||
```
|
||||
|
||||
### 4.2 Statuspropagering
|
||||
Den dårligste status blandt børn og egen sensor propagerer op gennem træet. Det gør det muligt at se den værste
|
||||
tilstand hurtigt fra en node eller træets rod.
|
||||
|
||||
## 5. Notifikationssystem og Logging
|
||||
### 5.1 Notifier Interface
|
||||
Notifikationskomponenter implementerer et interface, der reagerer på statusændringer:
|
||||
|
||||
```java
|
||||
public interface SuwimoNotifier {
|
||||
void statusChanged(SensorEvent event);
|
||||
}
|
||||
|
||||
public class SensorEvent {
|
||||
String sensorId;
|
||||
StatusLevel oldStatus;
|
||||
StatusLevel newStatus;
|
||||
String message;
|
||||
ZonedDateTime timestamp;
|
||||
}
|
||||
```
|
||||
|
||||
### 5.2 Historik og Logging
|
||||
Historiske log-events registreres hver gang en sensor ændrer tilstand. Denne funktionalitet implementeres som et
|
||||
separat plugin, der eksempelvis kan logge til fil, database eller anden ekstern tjeneste.
|
||||
|
||||
## 6. Distribution og Decentralisering
|
||||
### 6.1 AssetAZ Observables
|
||||
SuWiMoHub eksponerer sin status som en AssetAZ Observable. Det gør det muligt for andre hubs eller AssetAZ-instanser
|
||||
at abonnere på sensorstatus fra eksterne hubs.
|
||||
|
||||
### 6.2 Distribuerede Hubs
|
||||
Flere SuWiMoHubs kan installeres decentralt, tæt på de ressourcer de overvåger, og udveksle sensorstatus via AssetAZ's
|
||||
P2P-netværk. Dette sikrer effektiv isolation af fejl og lokal robusthed.
|
||||
|
||||
## 7. Brugsscenarier og Eksempler
|
||||
Eksempler på anvendelser af SuWiMo:
|
||||
|
||||
- Overvågning af servermiljøer (CPU, RAM, ZFS arrays)
|
||||
- Netværksstatus (Internet-ping, DNS-opløsning)
|
||||
- Overvågning af applikationstilgængelighed og integritet (HTTP-checks med checksum)
|
||||
- Husovervågning (temperatur, dørsensorer, strøm)
|
||||
|
||||
## 8. Fremtidige Funktioner / TODO
|
||||
- Implementering af GUI med træstruktur (træk-og-slip sensororganisering)
|
||||
- Avanceret historikvisning (grafer og mønstergenkendelse)
|
||||
- Yderligere notifier-plugins (push-notifikationer, SMS, Discord, syslog)
|
||||
- Avancerede permissions og adgangskontrol
|
||||
- Automatisk timeout-tilstand (sensor bliver rød efter manglende respons)
|
||||
Reference in New Issue
Block a user