SQL Server Health Monitor
Agentless monitoring for SQL Server — wait statistics, blocking, indexes, backups and alerting. This documentation explains what the application measures and how to run it.
Help
Getting started
Monitoring
Wait statisticsWait statistics show where SQL Server spends its time when it isn't computing. They are the fastest way to narrow down a bottleneck: instead of guessing, you see directly whether a system is waiting on CPU, I/O, locks…Queries & analysisThis area helps you find and understand expensive or unusual queries.Plan regressionsA query that took 40 ms yesterday and takes 400 ms today has usually not changed — it got a different execution plan. Query Store keeps that history on the monitored instance: per query, per plan, with runtimes.Blocking & deadlocksBlocking happens when one transaction holds a lock another one needs. Brief blocking is normal; long blocking is a common reason for "the application hangs".Index healthThe Performance → Index Health and Missing Indexes areas help you find indexes that slow things down – fragmented, unused, duplicate and missing.StorageThe storage area monitors file sizes, free space and log usage – the most common causes of sudden outages ("database full", "log filling up").TempDBtempdb is the whole instance's shared scratch database: temporary tables, sorts, hash joins, the version store. Because everyone shares it, it quickly becomes a bottleneck.SQL Agent JobsThis page reads the state and history of SQL Server Agent jobs from msdb.dbo.sysjobs and sysjobhistory – the scheduled tasks like backups, index maintenance or ETL.Error logThe Error log page reads the SQL Server error log — and, on the same page, the SQL Server Agent log — straight from the monitored instance. Nothing is copied into the monitoring database: SQL Server already keeps and…BackupsThe Backups page answers one question per database: if this server died right now, how much committed work would be lost, and could it be restored at all?Login activityThe Login activity page answers two questions: how much data is each login being handed, and is that unusual for that login at this hour of the week.Change TimelineThe Changes page answers the first question asked in any incident: what changed?
Alerting
Alerts & hysteresisAlerts fire when a metric breaches a threshold. To keep them reliable rather than noisy, the monitor has several mechanisms.Baselines & N-sigmaFixed thresholds rarely fit every hour: 60 % CPU is normal on Monday morning but suspicious at 3 a.m. on Sunday. Baselines solve this by learning each server's normal behaviour.Notification channelsChannels decide where alerts go. They are stored encrypted in the database (not in appsettings) so credentials stay protected.
Reporting
Operations
Operations
Install & deploy
Overview & first runThis folder contains the runbooks for operators deploying and maintaining SQL Server Health Monitor. They assume you already have the installer / Docker image and just want to know how to do thing X without reading the…DeploymentThe app ships as either a published .NET 9 binary (Windows or Linux) or a Docker image. Pick one path.MSI installerA Windows Installer package that deploys SQL Server Health Monitor and registers it as a Windows service. Authored with WiX v5; the sources live in installer/ (Package.wxs + build.ps1).DockerSQL Server Health Monitor ships as a plain ASP.NET Core web app, so it runs well in a Linux container. On Linux the UseWindowsService() call is a no-op — the app is a normal console web host.
Run & maintain
UpgradeIn-place upgrade procedure for a single-host install. Multi-instance setups (load balancer in front, two app hosts) are out of scope for this doc — flag that and we'll write it.Backup & restoreThe two-sentence summary: back up the monitoring database, and — if you set your own Encryption:Key — back up that key with it. The database holds everything the product knows; the encryption key is the only artifact…LicenseThe product ships with an RSA-signed license file (license.lic). The vendor holds the private key; the application bundles only the public key and verifies the signature on every start.Single sign-onSQL Server Health Monitor supports OpenID Connect SSO alongside local username/password auth. The two are not mutually exclusive — local accounts keep working as a break-glass path if the IdP is down.Change tracking & licence advisorTwo features that need a word of setup beyond the default VIEW SERVER STATE grant. Both are on by default and both degrade gracefully — if a permission is missing, the affected part is skipped and the rest keeps working.TroubleshootingCommon failure modes and what to do. If you hit one not listed, capture /health/detailed output plus the last 200 log lines and open a support ticket.