X: Moved markdown files from Documentation to keep in sync
This commit is contained in:
@@ -0,0 +1,166 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="da">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>SuWiMo Documentation</title>
|
||||
<style>
|
||||
body {
|
||||
font-family: Arial, sans-serif;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
background-color: #f8f9fa;
|
||||
color: #333;
|
||||
line-height: 1.6;
|
||||
}
|
||||
.container {
|
||||
width: 80%;
|
||||
max-width: 1000px;
|
||||
margin: auto;
|
||||
padding: 20px;
|
||||
}
|
||||
h1, h2, h3 {
|
||||
color: #0056b3;
|
||||
}
|
||||
.section {
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
.highlight {
|
||||
background-color: #e7f1ff;
|
||||
padding: 10px;
|
||||
border-left: 4px solid #0056b3;
|
||||
margin-top: 20px;
|
||||
}
|
||||
.footer {
|
||||
text-align: center;
|
||||
padding: 20px;
|
||||
border-top: 1px solid #ddd;
|
||||
margin-top: 40px;
|
||||
color: #777;
|
||||
}
|
||||
.token-logo {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
}
|
||||
pre, code {
|
||||
background: #f4f4f4;
|
||||
border-radius: 4px;
|
||||
padding: 2px 6px;
|
||||
}
|
||||
pre {
|
||||
padding: 10px;
|
||||
overflow-x: auto;
|
||||
}
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
}
|
||||
th, td {
|
||||
border: 1px solid #ccc;
|
||||
padding: 6px;
|
||||
text-align: left;
|
||||
}
|
||||
ul, ol {
|
||||
margin-left: 1.2em;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<h1>SuWiMo Documentation</h1>
|
||||
<p>#<center><H1>SuWiMo<br>Documentation</H1></center></p><p><strong>Indholdsfortegnelse:</strong>
|
||||
<!-- 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 --></p><p><h2>1. Introduktion og Formål</h2>
|
||||
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).</p><p>SuWiMo fokuserer på tillidsvalidering og identificering af afvigelser i realtid, snarere end detaljeret monitorering
|
||||
eller datalogging som traditionelle overvågningssystemer.</p><p><h2>2. Arkitektur og Overordnet Design</h2>
|
||||
<h3>2.1 Central Hub (SuWiMoHub)</h3>
|
||||
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.
|
||||
<ul><ul><li>Centraliseret styring af polling-interval.</li>
|
||||
<li>Indlæsning af sensor- og notifier-plugins.</li>
|
||||
<li>Dynamisk opbygning og opdatering af status-træet.</li></p><p><h3>2.2 Plugin-baseret Design</h3>
|
||||
SuWiMo benytter en modulær plugin-arkitektur, hvor forskellige typer af plugins implementerer specifikke interfaces
|
||||
efter deres funktion:
|
||||
<li><strong>Sensor-plugins</strong> implementerer sensorinterface til overvågning og statusrapportering.</li>
|
||||
<li><strong>Notifier-plugins</strong> implementerer notifierinterface til at sende notifikationer ved statusændringer.</li>
|
||||
<li><strong>Logger-plugins</strong> implementerer logningsinterface til historisk registrering af statusændringer.</li></p><p>Disse plugins registreres og administreres af Nenjim-systemet, hvilket sikrer nem distribution, versionering og
|
||||
udskiftelighed.</p><p><h2>3. Sensorer</h2>
|
||||
<h3>3.1 Sensorinterface</h3>
|
||||
Sensorer implementerer et simpelt, standardiseret interface:</p><pre><code class="java">public interface SuwimoSensor {
|
||||
SensorStatus poll();
|
||||
}</p><p>public class SensorStatus {
|
||||
StatusLevel level; // GREEN, YELLOW, RED
|
||||
String message; // Kort forklaring på tilstand
|
||||
}
|
||||
</code></pre><p><h3>3.2 Statusniveauer</h3>
|
||||
<li><strong>Green</strong>: Normal drift.</li>
|
||||
<li><strong>Yellow</strong>: Advarsel, kræver opmærksomhed.</li>
|
||||
<li><strong>Red</strong>: Kritisk fejl, kræver øjeblikkelig handling.</li></p><p><h3>3.3 Passiv Sensorlogik</h3>
|
||||
Sensorer kører ikke aktivt. De er passive komponenter, som kun evaluerer og returnerer deres status, når hubben
|
||||
poller dem.</p><p><h2>4. Hierarkisk Struktur (Træstruktur)</h2>
|
||||
<h3>4.1 Dynamisk Træ via Konfiguration</h3>
|
||||
Træstrukturen defineres i en JSON-konfigurationsfil, hvor hver node har et unikt ID, et navn, en valgfri sensor og en
|
||||
parent-reference. Eksempel:</p><pre><code class="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 }
|
||||
]
|
||||
</code></pre><p><h3>4.2 Statuspropagering</h3>
|
||||
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.</p><p><h2>5. Notifikationssystem og Logging</h2>
|
||||
<h3>5.1 Notifier Interface</h3>
|
||||
Notifikationskomponenter implementerer et interface, der reagerer på statusændringer:</p><pre><code class="java">public interface SuwimoNotifier {
|
||||
void statusChanged(SensorEvent event);
|
||||
}</p><p>public class SensorEvent {
|
||||
String sensorId;
|
||||
StatusLevel oldStatus;
|
||||
StatusLevel newStatus;
|
||||
String message;
|
||||
ZonedDateTime timestamp;
|
||||
}
|
||||
</code></pre><p><h3>5.2 Historik og Logging</h3>
|
||||
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.</p><p><h2>6. Distribution og Decentralisering</h2>
|
||||
<h3>6.1 AssetAZ Observables</h3>
|
||||
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.</p><p><h3>6.2 Distribuerede Hubs</h3>
|
||||
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.</p><p><h2>7. Brugsscenarier og Eksempler</h2>
|
||||
Eksempler på anvendelser af SuWiMo:
|
||||
<li>Overvågning af servermiljøer (CPU, RAM, ZFS arrays)</li>
|
||||
<li>Netværksstatus (Internet-ping, DNS-opløsning)</li>
|
||||
<li>Overvågning af applikationstilgængelighed og integritet (HTTP-checks med checksum)</li>
|
||||
<li>Husovervågning (temperatur, dørsensorer, strøm)</li></p><p><h2>8. Fremtidige Funktioner / TODO</h2>
|
||||
<li>Implementering af GUI med træstruktur (træk-og-slip sensororganisering)</li>
|
||||
<li>Avanceret historikvisning (grafer og mønstergenkendelse)</li>
|
||||
<li>Yderligere notifier-plugins (push-notifikationer, SMS, Discord, syslog)</li>
|
||||
<li>Avancerede permissions og adgangskontrol</li>
|
||||
<li>Automatisk timeout-tilstand (sensor bliver rød efter manglende respons)</li>
|
||||
</ul></ul></p>
|
||||
<div class="footer">
|
||||
<p>Part of the r35157 project. See also AssetAZ, Nenjim, Evelyn.</p>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user