A Million Little Things: Global Baselines
Baselines are one of my favorite topics, as setting them is one of the most important things you can do when measuring data. It should underpin everything that you do, whether you're monitoring an instance of SQL Server or monitoring what is happening for an individual process, such as the ETL process for your data warehouse build. In short, you need to set a baseline.
Repetition is key when it comes to learning something important. Do you remember in school when you or your peers were given lines to write when you were caught doing something you weren't supposed to? If you don't remember that, just imagine the opening of "The Simpsons." It's a way of enforcing a good, or corrective, thought process. As we're all far too busy to write lines, you could cheat and run the following in SQL Server Management Studio (SSMS):
PRINT 'Creating your own performance baseline is absolutely critical.';
Baselines have been around for a long time in monitoring solutions; however, global baselines are relatively new. With a global baseline, you can set a baseline on one server and then overlay that baseline on top of any other server of the same type (e.g., SQL Server Engine, SQL Server Analysis Services, Azure DB).
Let's take a moment to go over the different types of baselines that SentryOne offers.
The first type of baseline that the product offers out of the box is what we call temporal or "Predefined Baselines." This is where you can see the average figures of previous periods of time; it's data queried from the repository. It is easy to identify a temporal/predefined baseline, as it will be in parentheses (that's brackets to you and me) and will start with the word "Previous."
You will be able to identify Global Baselines easily, too, as they will cunningly have "(Global)" at the end. Anything else will be a custom baseline that a user on your system has created and will be from that instance only.
Creating a baseline in SentryOne is super easy. Rather than re-inventing the wheel, it would be far more efficient for me to point you to our new help documentation on baselines so that you can learn about things such as the Predefined Baselines you will be able to see based on the time range you are looking at. You can view this documentation and much more, including a video on the subject, at docs.sentryone.com.
One thing that is often overlooked is how important baselines are when it comes to migrations. I remember during one presentation in Stockholm, I asked a crowd of about 400 session attendees how many of them performed baselines on their Disaster Recovery (DR) servers. A solitary hand was raised. It's a sobering thought that we aren't considering what happens across our entire estate and what is happening on our DR secondaries.
Many companies will set up a secondary server on a cloud platform, such as Microsoft Azure. They will use a High Availability (HA) technology such as Always On Availability Groups to transfer data and keep it synchronized. This means that they can use it as a mechanism to migrate to the new platform. It's a tactic I have used myself for migrations; it works really well.
How do businesses know which levels of performance they should attain? End users will undoubtedly provide anecdotal commentary saying things like "This new system seems slower than the last one." Can they quantify this? With baselines, specifically global baselines, you certainly can.
A lot of IT teams I speak with say that they want to be more proactive; that they are constantly firefighting. Baselining helps you and your business be more proactive. The ability to see which resources are now being consumed at a much higher rate is really important. They can also be used to ensure that the changes that you have made to tune a system are actually working.
Want to learn more about baselines, including how you can use your baselines in your own alerts?
Check out our blogs about baselines.