namespace ClawdDotNet.Core.Deploymentcenter.Watchdog; /// /// Die Statuswerte, die der Watchdog kennt. stopped und maintenance sind /// angekündigte Zustände — der Evaluator lässt solche Monitore in Ruhe, statt wenige /// Minuten nach einem geplanten Herunterfahren einen Fehlalarm zu erzeugen. /// public static class WatchdogStatus { public const string Ok = "ok"; public const string Warning = "warning"; public const string Error = "error"; public const string Stopped = "stopped"; public const string Maintenance = "maintenance"; } /// /// Eine selbst ermittelte Teilprüfung. Das Deploymentcenter interpretiert den Namen /// nicht — es liest nur und . Was „gesund" /// bedeutet, entscheidet damit jede Anwendung selbst. /// /// Schlägt eine Prüfung fehl, stuft der Server einen als ok gemeldeten /// Heartbeat auf warning herab. Das ist der Unterschied zwischen „ein Faden /// läuft" und „die Anwendung tut, was sie soll". /// public sealed record HealthCheck(bool Ok, string? Message = null); /// Momentaufnahme des Instanz-Zustands für einen Heartbeat. /// Einer der Werte aus . /// Kurzbegründung, erscheint im Dashboard. /// /// Nur Zahlen: Das Deploymentcenter legt sie mit Zeitstempel ab (14 Tage) und vergleicht /// den aktuellen Wert mit dem Sieben-Tage-Schnitt desselben Monitors. Nicht-numerische /// Werte würden dabei stillschweigend verworfen — beschreibende Angaben gehören /// deshalb in oder in die Checks. /// /// Selbst ermittelter Gesundheitszustand je Teilbereich. public sealed record InstanceHealth( string Status, string? Message, IReadOnlyDictionary Metrics, IReadOnlyDictionary Checks) { public static InstanceHealth Ok(string? message = null) => new( WatchdogStatus.Ok, message, new Dictionary(), new Dictionary()); } /// Liefert vor jedem Heartbeat den aktuellen Instanz-Zustand. public interface IInstanceHealthProvider { Task GetAsync(CancellationToken ct); }