Logbuch#homeos#monitoring#zeitreihen#api
Vom Status-Snapshot zum Relay Operations Center — ohne eine erfundene Kennzahl
Von Niclas Hennrich · veröffentlicht · geschehen am
Selbst gebaut und in Betrieb genommen. Gehört zum Vorhaben HomeOS — Control Center mit drei Säulen.
- Metriken im MetricsPort
- 24
- Offene Circuits am ersten Abend
- ≈ 1 600
- Auslastung des konfigurierten Rate-Limits
- ≈ 65 %
Nach der Firewall-Freischaltung zeigte die Tor-Seite acht Zahlen. Bandbreite, Circuits, Verbindungen, Flags — eine Momentaufnahme. Ich wollte ein Operations Center: Was tut das Relay gerade, wie hat sich das entwickelt, wie voll ist es, war es gestört, welche Rolle hat es im Netz. Vier Wellen an einem Tag, und die wichtigste war die nullte.
Phase 0: Audit statt Annahmen. Bevor eine Zeile UI entstand, habe ich inventarisiert, was der MetricsPort von Tor überhaupt liefert: 24 Serien. Traffic-Zähler, offene Circuits, Verbindungen je Typ, Handshake-Zähler, Socket-Auslastung, Flags aus dem Konsens, ein halbes Dutzend Überlast-Indikatoren. Daraus eine Matrix: verfügbar, ableitbar, extern, nicht verfügbar. Der entscheidende Fund: Circuits sind ein Gauge. Es gibt keinen Zähler für neue oder geschlossene Circuits. „Neue Circuits pro Minute" — die Kennzahl, die jedes Dashboard gern hätte — existiert nicht. Was es gibt, sind Handshakes (Onionskins) pro Sekunde, und so heißen sie jetzt auch. Nicht anders.
Live ist ein eigener Kanal: Das Backend liest den MetricsPort alle zwei Sekunden direkt, aber nur solange jemand zuschaut, und bildet aus dem Delta zweier Abrufe echte Sekundenraten. Counter-Reset heißt Neustart, nicht negative Rate. Ein Stream, viele Komponenten, Ring-Buffer im Browser, Pause bei verdecktem Tab.
Historie kommt aus dem 60-Sekunden-Scrape in VictoriaMetrics mit
adaptivem Step — rund 200 Punkte je Chart, egal ob eine Stunde oder 90
Tage. Volumen per increase(), aber mit benannter Abdeckung: Ein
30-Tage-Volumen aus einer Stunde Historie ist eine Erfindung mit Formel.
Vergleiche „heute gegen gestern" erscheinen erst, wenn beide Fenster voll
sind. Kapazität heißt: Auslastung gegen das lokal konfigurierte
Rate-Limit aus dem Descriptor — keine Netzgrenze, und so steht es dran.
Netzsicht liefert Onionoo, die offizielle Tor-Metrics-API, für das eigene Relay: Konsensgewicht, Flags, Advertised und Observed Bandwidth, Auswahlwahrscheinlichkeiten. Serverseitig gecacht, mit Timeout, und ein Ausfall ist ein Zustand — das lokale Monitoring läuft unabhängig weiter.
Ereignisse sind Zustandswechsel mit Anfang und Ende, keine Messwerte: neun deterministische Regeln im Minutentakt, jede Schwelle steht im Code. Die Health-Timeline zeigt vor dem Start der Überwachung grau — unbekannt ist ein Zustand, und wer ihn grün färbt, behauptet Verfügbarkeit, wo nichts gemessen wurde.
Ein Punkt, an dem ich vom Auftrag abgewichen bin: Er schlug eine eigene Health-Skala für Tor vor. HomeOS hat eine Statusskala, und eine zweite „nur für Tor" wäre genau die Parallelarchitektur, die das Repo verbietet. Visuell beeindruckend darf niemals faktisch falsch bedeuten — und auch nicht architektonisch inkonsistent.