Unified telemetry ingestion + dashboards for Windows events, syslog, and LAN activity, powered by PowerShell and Flask.
- Ingests Windows events, syslog, and router telemetry into PostgreSQL.
- Serves a lightweight legacy UI (PowerShell) and a richer Flask analytics UI.
- Provides device inventory, timeline charts, and anomaly-friendly summaries.
- Includes automation for database setup, scheduled tasks, and health checks.
- Collectors (PowerShell + services) -> PostgreSQL -> Dashboard UI(s)
- Legacy UI:
Start-SystemDashboard.ps1servingwwwroot/ - Flask UI:
app/app.pywith direct Postgres queries
-
Optional: create
config.local.jsonfor your machine (preferred overconfig.json). -
Set required secrets (see
.env.example). -
Import the scripting module:
Import-Module .\scripting\SystemDashboard.Scripting.psm1 -Force
-
Install dependencies:
Install-SystemDashboard -ConfigPath .\config.json
-
Initialize the database:
- Local Postgres:
Initialize-SystemDashboardDatabase - Docker Postgres:
Initialize-SystemDashboardDockerDatabase
- Local Postgres:
-
Launch the dashboard:
pwsh -NoProfile -File .\Start-SystemDashboard.ps1 -Mode Legacy
See docs/screenshots/README.md for naming and capture guidance.
- Density strategy: keep primary KPIs in the
System Healthstrip, push verbose telemetry into compact tables with sticky headers, and collapse low-signal panels by default. - Adding KPIs: extend the
System Healthtiles inwwwroot/index.htmland wire values/deltas inwwwroot/app.js(kpiHistory+updateKpiTile). - Empty-state collapsing:
setPanelEmptyState()marks cardsis-emptyand collapses their body; theShow empty panelstoggle (stored assystem-dashboard-show-emptyin localStorage) reveals them.
Apply-SystemDashboardLanSchema -ConfigPath .\config.json– add LAN observability tables.Install-SystemDashboardScheduledTask– register the telemetry scheduled task.Manage-SystemDashboardServices -Install|-Uninstall|-Status– manage the scheduled-task based services.Ensure-SystemDashboardLanDependencies– download LAN collector dependencies.Invoke-SystemDashboardControl– open the interactive operations menu.Invoke-SystemDashboardAutoHeal– run the one-time health probe with optional AI suggestions.Test-SystemDashboardTelemetryDatabase– verify reader connectivity to Postgres.
- Listener degrades gracefully when assets/config are missing; check
/api/statusfor startup issues and last error. - Database calls use connect/query timeouts plus a circuit breaker; tune with
SYSTEMDASHBOARD_DB_CONNECT_TIMEOUT,SYSTEMDASHBOARD_DB_STATEMENT_TIMEOUT, andSYSTEMDASHBOARD_DB_CIRCUIT_*. - Dashboard layout persistence stores to
var/ui/layouts.json(override withService.Ui.LayoutPathorUi.LayoutPath) and falls back to localStorage if the endpoint is unavailable. - Local Postgres port auto-detection checks configured port first, then fallbacks via
SYSTEMDASHBOARD_DB_PORT_FALLBACKSorDatabase.PortFallbacks. - Service restart backoff and crash history live in
var/log/dashboard-crash-history.log; adjust withSYSTEMDASHBOARD_RESTART_*. - Listener/service logs:
var/log/dashboard-listener.log,var/log/dashboard-ui.log, and per-run stdout/stderrdashboard-listener-*.out.log/dashboard-listener-*.err.log. - Optional structured logs and rotation via
SYSTEMDASHBOARD_LOG_FORMAT,SYSTEMDASHBOARD_LOG_MAX_MB,SYSTEMDASHBOARD_LOG_MAX_FILES,SYSTEMDASHBOARD_SERVICE_LOG_MAX_MB, andSYSTEMDASHBOARD_SERVICE_LOG_MAX_FILES.
- Deployment guide: DEPLOYMENT.md
- Current working configuration: CURRENT_CONFIGURATION.md
- Lessons learned: LESSONS_LEARNED.md
- Portfolio summary: PORTFOLIO.md
- Change log: CHANGELOG.md
- Legacy and in-depth references are preserved under
docs/_Archive/anddocs/archive/legacy/. - Retired helper scripts remain available under
scripting/_Archive/.