diff --git a/modules/OpenSimRegionWarmupHealthGuard/README.MD b/modules/OpenSimRegionWarmupHealthGuard/README.MD index 2dfeb8d..6af276d 100644 --- a/modules/OpenSimRegionWarmupHealthGuard/README.MD +++ b/modules/OpenSimRegionWarmupHealthGuard/README.MD @@ -1,3 +1,157 @@ # OpenSimRegionWarmupHealthGuard -> Warning - this module collection is under heavy development. \ No newline at end of file +A cohesive toolkit of OpenSimulator region modules to improve startup experience, visibility, and resilience of regions. It combines warmup routines, health monitoring, metrics export, webhook alerts, auto‑healing, and a small policy engine for time‑based config overlays. + +- Project type: OpenSim region modules (Mono.Addins) +- Scope: Operations and reliability +- Status: Community modules (alpha) – please test in staging before production + +Contents (modules in this assembly): +- RegionHealthMonitor +- RegionMetricsExporter +- RegionWebhookAlerts +- RegionAutoHeal +- RegionWarmup +- RegionPolicyEngine + +--- + +## Key Capabilities + +- Faster, safer startups + - RegionWarmup primes terrain access, lightly pre‑touches assets, and warms script engines. +- Live health visibility + - RegionHealthMonitor polls sim stats, thresholds incidents, and can export CSV. +- Metrics for observability + - RegionMetricsExporter exposes Prometheus-compatible /metrics over HTTP. +- Actionable alerts + - RegionWebhookAlerts batches/rate‑limits JSON webhooks to your alerting endpoint. +- Self-healing helpers + - RegionAutoHeal (opt‑in) can reset scripts or throttle “noisy” updaters after incidents. +- Scheduled behavior + - RegionPolicyEngine applies time/profile-based overlays to participating modules. + +--- + +## Quick Start + +1) Build alongside OpenSim so the modules resolve OpenSim.Region.Framework.* assemblies. + +2) Deploy the produced assembly to your OpenSim bin/ (or RegionModules) directory. + +3) Enable modules in OpenSim.ini and include the shared module config: + +~~~ini +[Modules] + RegionHealthMonitor = enabled + RegionMetricsExporter = enabled + RegionWebhookAlerts = enabled + RegionAutoHeal = enabled + RegionWarmup = enabled + RegionPolicyEngine = enabled + + Include-RegionWarmupHealthGuard = "config-include/RegionWarmupHealthGuard.ini" +~~~ + + +4) Adjust settings in config-include/RegionWarmupHealthGuard.ini (see example provided). + +--- + +## Configuration Overview + +A single ini groups all modules for convenience. Typical keys: + +- RegionHealthMonitor + - HealthIntervalSec, WarnScriptTimeMs, WarnPhysicsTimeMs, WarnNetTimeMs, WarnScriptErrors + - MetricsExportFile (optional CSV) + +- RegionMetricsExporter + - HttpPort, BindAddress, MetricsPrefix, IncludeRegionLabel + +- RegionWebhookAlerts + - Url, MinSeverity (Trace|Info|Warn|Error), BatchWindowSec, RateLimitPerMin + - ConnectTimeoutMs, SendTimeoutMs, PayloadFields + +- RegionAutoHeal + - DryRun (default true), EnableScriptReset (opt‑in), ThrottleHeavyUpdaters + - ThrottleThresholdUpdatesPerSec, ScriptErrorBurstThreshold, CooldownSec + +- RegionWarmup + - WarmupOnRegionLoaded, TouchTerrain, PreloadAssets, PrimeScriptVM + - DeepWarmupLimit, DeepWarmupDelaySec + +- RegionPolicyEngine + - Enabled, CheckIntervalSec, Profiles + - .Cron (simple hour window: e.g., 20-6), .Overrides (Key=Value;Key=Value) + +See the full example at bin/config-include/RegionWarmupHealthGuard.ini.example. + +--- + +## Module Details + +### RegionHealthMonitor +- Polls sim stats and emits incidents on threshold breaches. +- Console: + - health status + - health export +- Optional CSV export via MetricsExportFile. + +### RegionMetricsExporter +- HTTP pull endpoint for Prometheus/Grafana (low overhead). +- Endpoint: http://BindAddress:HttpPort/metrics +- Requires RegionHealthMonitor to feed samples. + +### RegionWebhookAlerts +- Batches and rate‑limits JSON webhook alerts (e.g., to n8n). +- Select which fields to include (PayloadFields). +- Subscribes to RegionHealthMonitor events. + +### RegionAutoHeal +- Dry‑run by default (no changes unless configured). +- Can reset scripts on targeted objects (opt‑in) and best‑effort throttle “heavy updaters” after incidents. +- Console: + - autoheal status + - autoheal dryrun on|off + - autoheal reset + +### RegionWarmup +- On region load (optional): terrain touch, limited asset pre‑touch, prime script VM. +- Optional deep warmup scan after a delay. +- Console: + - warmup status + - warmup run + +### RegionPolicyEngine +- Applies profile/time-based overrides to modules that choose to consume them. +- Profiles with simplified hour windows (e.g., Nightly.Cron = * * 20-6). +- Console: + - policy status + - policy apply + - policy dryrun + +--- + +## Best Practices + +- Start conservative: + - Keep AutoHeal in DryRun=true until you’re confident with actions. + - Expose metrics on 127.0.0.1 and reverse-proxy if needed. +- Staging first: + - Validate thresholds and alert volume before production. +- Observe and iterate: + - Use Prometheus/Grafana dashboards to tune Warn* thresholds. + - Adjust webhook batch/rate limits to avoid alert noise. + +--- + +## Example Include File + +Place at bin/config-include/RegionWarmupHealthGuard.ini (use the provided example as a base and tailor to your environment). + +--- + +## License + +MIT – see LICENSE. \ No newline at end of file