This started as a simple SQL Server monitoring solution for my clients. The first question
I get when applications have issues is “Is It SQL Server?” I wanted a simple monitoring
service I could run onsite that would answer that question. It had to be simple enough
that a non-DBA could look at it and decide whether to call me.
Supports SQL Server 2005 through SQL Server 2019
Monitor CPU usage for SQL Server and non-SQL Server tasks
Capture batch requests per second
Monitor Disk I/onsite
Show actively running queries
Capture basic demographic information including version, start time, database sizes, etc.
Can run with no installation or it can be run as a service
The Is It SQL server needs to have any any one of the following drivers installed:
All the features that were hidden behind beta flags or entering a secret Enterprise code are now available.
The missing backups page exposes a JSON object with all the missing backups ( http://localhost:8143/backups/json). It’s fairly easy to write a job that emails that out. I wrote one in PowerShell and run it every hour during my “awake” hours.
The polling is split into two parts. Every 10 seconds, we poll if the server is up and check the health of any availability groups. Then every minute we do a full poll of the server. The pages now refresh every 15 seconds.
Previously, the polling used a worker pool to poll. That meant a few bad servers could affect polling. Now each server gets its own thread. It uses a little more CPU at the start but quickly evens out. And in the event of an incident (like, I don’t know, losing an entire data center), you still get timely polling on whatever is still out there.
I added a section at the top of the Availability Groups page that lists one AG per line. I found it easier to read and it’s easy to click down to see the details.
All error reporting and metrics logging has been removed. There should be no “phone home” functionality in the application at all. The only external access it should need is the HighCharts URL to download the charting library.
The app better handles “names” that repoint to new instances. For example, an AG listener or static DNS entry that switches to a new instance doesn’t create odd spikes in disk I/O or waits. It also better handles reseting metrics on server restarts.
You can choose which servers appear in the dashboard by assigning them a “dashboard” tag. It will show the friendly name you’ve entered and sort by that name.
Backup reporting now reports an AG backup from any node. If you are looking at the database page for a node in an AG, it will show that a backup was completed for that database even if it was done on another node. You can hover over the backup and it will show which node completed the backp, when it was done, and what file it sent the backup to. If you have enabled the Enterprise features, you can see all this on the central backup alerts page.
Include support for availability groups. Is it SQL displays the health of any
availability groups it finds. Note: This is an Enteprise feature. Sign up for the mailing
list above and I’ll send details on enabling this feature.
Disk performance now breaks out the MB/sec, IOPS, averge IO size, and average duration
over the one minute monitoring period. It does this for reads and writes. This column
is also sortable based on the IOPS. This gives an easy way to see which servers
are generating the most disk I/O.
The pages that show a list of servers now include a total line. It totals the disk I/O,
SQL batches per second, SQL Server memory, and the size of data and log files. This lets you see
the total load you’re placing on your infrastructure across your all servers.
It appears on the server page will show any databases that are mirrored.
Second, there’s a global database mirroring page that will show each mirrored
database across all servers. It will show the status, partner, and send and
receive queue sizes. It also includes a “priority column”. This gives an easy way to
prioritize databases that aren’t online and synchronzied or have a send or receive queue. This is a beta feature. Sign up for the newsletter and we’ll send instructions on enabling it.
The log size of database is split out into its own column which makes it sortable.
Information that is polled in real-time is identified with a cool lightning bolt. Every page refresh will update this data.
Assorted behind the scenes fixes for perfomance, memory and concurrency.