From 473fc3b642a0f928cbbed35998f94a63ce35a75a Mon Sep 17 00:00:00 2001 From: Lordfox Date: Sun, 5 Oct 2025 19:12:43 +0200 Subject: [PATCH] added configuration files to OpenSimRegionWarmupHealthGuard Module --- README.md | 1 + .../bin/OpenSim.ini.example | 22 +++ .../RegionWarmupHealthGuard.ini.example | 127 ++++++++++++++++++ 3 files changed, 150 insertions(+) create mode 100644 modules/OpenSimRegionWarmupHealthGuard/bin/OpenSim.ini.example create mode 100644 modules/OpenSimRegionWarmupHealthGuard/bin/config-include/RegionWarmupHealthGuard.ini.example diff --git a/README.md b/README.md index 9e7b9b4..4035e23 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,7 @@ Curated add-on modules for OpenSimulator (OpenSim). Each module is focused on a |---|---|---|---| | SceneSnapshot | Automatic region snapshots (OAR) with retention and one-step restore, executed inside the simulator. | Interval-based snapshots; hourly/daily retention; console commands (create/list/restore/prune/status); atomic writes; optional merge-restore. | Folder: [modules/OpenSimSceneSnapshot](modules/OpenSimSceneSnapshot) • README: [modules/OpenSimSceneSnapshot/README.MD](modules/OpenSimSceneSnapshot/README.MD) • Config: [SceneSnapshot.ini.example](modules/OpenSimSceneSnapshot/bin/config-include/SceneSnapshot.ini.example) | | ConcurrentFlotsamAssetCache | High-throughput asset cache with multi-layer design, in-flight de-duplication and safe on-disk persistence. | WeakRef/memory/file cache layers; atomic replace/move; negative cache; periodic cleanup; console tooling; upstream de-dup. | Folder: [modules/OpenSimConcurrentFlotsamAssetCache](modules/OpenSimConcurrentFlotsamAssetCache) • README: [modules/OpenSimConcurrentFlotsamAssetCache/README.MD](modules/OpenSimConcurrentFlotsamAssetCache/README.MD) • Commands: [COMMANDS.MD](modules/OpenSimConcurrentFlotsamAssetCache/COMMANDS.MD) • Migration: [MIGRATION.MD](modules/OpenSimConcurrentFlotsamAssetCache/MIGRATION.MD) • Comparison: [COMPARISON.MD](modules/OpenSimConcurrentFlotsamAssetCache/COMPARISON.MD) • Config: [ConcurrentFlotsamAssetCache.ini.example](modules/OpenSimConcurrentFlotsamAssetCache/bin/config-include/ConcurrentFlotsamAssetCache.ini.example) | +| OpenSimRegionWarmupHealthGuard | Region warmup, health monitoring and self-healing toolset (multiple region modules in one assembly). | HealthMonitor with thresholds + CSV; Prometheus metrics exporter; Webhook alerts (batch + rate-limit); Region warmup (terrain touch, asset pre-touch, VM prime); Auto-heal (dry-run by default); Policy engine for time-based overlays. | Folder: [modules/OpenSimRegionWarmupHealthGuard](modules/OpenSimRegionWarmupHealthGuard) • Docs: [doc/RegionHealthMonitor.md](modules/OpenSimRegionWarmupHealthGuard/doc/RegionHealthMonitor.md) • [doc/RegionMetricsExporter.md](modules/OpenSimRegionWarmupHealthGuard/doc/RegionMetricsExporter.md) • [doc/RegionWebhookAlerts.md](modules/OpenSimRegionWarmupHealthGuard/doc/RegionWebhookAlerts.md) • [doc/RegionWarmup.md](modules/OpenSimRegionWarmupHealthGuard/doc/RegionWarmup.md) • [doc/RegionAutoHeal.md](modules/OpenSimRegionWarmupHealthGuard/doc/RegionAutoHeal.md) • [doc/RegionPolicyEngine.md](modules/OpenSimRegionWarmupHealthGuard/doc/RegionPolicyEngine.md) | --- diff --git a/modules/OpenSimRegionWarmupHealthGuard/bin/OpenSim.ini.example b/modules/OpenSimRegionWarmupHealthGuard/bin/OpenSim.ini.example new file mode 100644 index 0000000..b6e4502 --- /dev/null +++ b/modules/OpenSimRegionWarmupHealthGuard/bin/OpenSim.ini.example @@ -0,0 +1,22 @@ +[Modules] + + ; Enable/Disable RegionAutoHeal module + RegionAutoHeal = enabled + + ; Enable/Disable RegionHealthMonitor module + RegionHealthMonitor = enabled + + ; Enable/Disable RegionHealthMonitor module + RegionMetricsExporter = enabled + + ; Enable/Disable RegionHealthMonitor module + RegionPolicyEngine = enabled + + ; Enable/Disable RegionHealthMonitor module + RegionWarmup = enabled + + ; Enable/Disable RegionHealthMonitor module + RegionWebhookAlerts = enabled + + ; Additional configuration files to include + Include-RegionWarmupHealthGuard = "config-include/RegionWarmupHealthGuard.ini" \ No newline at end of file diff --git a/modules/OpenSimRegionWarmupHealthGuard/bin/config-include/RegionWarmupHealthGuard.ini.example b/modules/OpenSimRegionWarmupHealthGuard/bin/config-include/RegionWarmupHealthGuard.ini.example new file mode 100644 index 0000000..be01dce --- /dev/null +++ b/modules/OpenSimRegionWarmupHealthGuard/bin/config-include/RegionWarmupHealthGuard.ini.example @@ -0,0 +1,127 @@ +[RegionAutoHeal] + + ; Sicherer Start: nur simulieren (Logs/Alerts), keine Änderungen + DryRun = true + + ; Echte Script-Resets nur bei expliziter Freigabe + EnableScriptReset = false + + ; Best-Effort-Drosselung „lauter“ Updater + ThrottleHeavyUpdaters = true + + ThrottleThresholdUpdatesPerSec = 30 + + ; Ab wann reagiert werden soll (Skriptfehler-Burst) + ScriptErrorBurstThreshold = 25 + + ; Sperrzeit zwischen Eingriffen (Sekunden) + CooldownSec = 60 + + +[RegionHealthMonitor] + + HealthIntervalSec = 30 + + WarnScriptTimeMs = 12.0 + + WarnPhysicsTimeMs = 6.0 + + WarnNetTimeMs = 6.0 + + WarnScriptErrors = 10 + + ; Optional CSV export (leave empty to disable) + MetricsExportFile = + + +[RegionMetricsExporter] + + ; This module reads HealthSamples from the RegionHealthMonitor (IRegionHealthBus). Ensure that RegionHealthMonitor is active. + ; In multi-region processes, each region should use its own port (or create a shared, process-wide export instance). + ; Endpoint: http://BindAddress:HttpPort/metrics + ; Pull-only, minimal resource consumption. + + ; HTTP pull endpoint for Prometheus (low overhead) + HttpPort = 9109 + + ; Bind only to loopback by default (recommended). Set 0.0.0.0 to expose network-wide. + BindAddress = 127.0.0.1 + + ; Metric name prefix + MetricsPrefix = opensim_region_ + + ; Include region name as a label + IncludeRegionLabel = true + + +[RegionPolicyEngine] + + ; The overlays are intentionally generic (key=value). A module that supports overlays optionally implements IPolicyOverlayConsumer and maps relevant keys to internal settings. + ; The included modules also work without overlay support. You can gradually add overlay support to individual modules (e.g., HealthMonitor: HealthIntervalSec, WebhookAlerts: MinSeverity, Warmup: DeepWarmupLimit, AutoHeal: ThrottleHeavyUpdaters). + ; The cron field is greatly simplified here (hourly window). A parser could be added later for true cron behavior. + + Enabled = true + ; Prüfintervall (Sekunden) + CheckIntervalSec = 60 + + ; Liste von Profilen (kommasepariert) + Profiles = Nightly,Event + + ; Einfaches Stundenfenster (Beispiele): + ; 20-6 -> zwischen 20:00 und 06:59 + ; 8-18 -> zwischen 08:00 und 18:59 + ; 22 -> genau um 22 Uhr + Nightly.Cron = * * 20-6 + + ; Key=Value;Key=Value (Overlays, die die Module verstehen müssen) + Nightly.Overrides = HealthIntervalSec=60; DeepWarmupLimit=400; MinSeverity=Error + + Event.Cron = + + Event.Overrides = ThrottleHeavyUpdaters=false + + +[RegionWarmup] + + ; Sofortiges Warmup bei Regionstart + WarmupOnRegionLoaded = true + + ; Einzelne Warmup-Schritte + TouchTerrain = true + + PreloadAssets = true + + PrimeScriptVM = true + + ; Optionaler tiefer Warmup-Scan (Anzahl Objekte) nach Verzögerung + DeepWarmupLimit = 200 + + DeepWarmupDelaySec = 30 + + +[RegionWebhookAlerts] + + ; Supports generic JSON. The payload is an array of events. + ; Batching + rate limit prevents spam. Reduce BatchWindowSec for immediate delivery. + ; Subscribes to health events from the RegionHealthMonitor (IRegionHealthBus). Ensure this is enabled. + + ; Generic JSON webhook endpoint (e.g., n8n webhook URL) + Url = https://your-n8n-host/webhook/abc123 + + ; Minimal severity to send: Trace|Info|Warn|Error (default Warn) + MinSeverity = Warn + + ; Collect incidents for N seconds and send in one POST + BatchWindowSec = 10 + + ; Max POSTs per minute (rate limit) + RateLimitPerMin = 20 + + ; Timeouts (ms) + ConnectTimeoutMs = 5000 + SendTimeoutMs = 5000 + + ; Which fields to include in payload. + ; Available keys: + ; ts,region,severity,message,metrics,agents,prims,scriptMs,physMs,netMs,scriptErrors,uptime + PayloadFields = region,agents,prims,scriptMs,physMs,netMs,scriptErrors,uptime,severity,message,ts \ No newline at end of file