For production workloads running on your Azure SQL Managed Instance it is very important to continuously understand the resource consumption and any potential performance issues such that you can react in time and have your business running smoothly. There exist a number of options for monitoring and alerting of managed instances that can be considered, be it Microsoft cloud native, on-premises products, custom solutions, or third party solutions.
In understanding and evaluating these options there are several things you need to take into consideration depending on our workload and how critical to you are the apps you are running with managed instance. Some of the considerations you need to evaluate while deciding on a monitoring and alerting system for your managed instance are:
Telemetry latency - how long it takes for the telemetry to reach you from the database until an alert or a notification is triggered (e.g. near real-time, each minute, or every several minutes).
Sampling rate - how frequently is telemetry being sample from the database (e.g. every second, every minute, or every several minutes)
Alerting capability - what are all the ways you can be alerted and if there are integrations point available (e.g. email, voice call, SMS, web hooks, integration with a 3rd party ticketing system, etc.)
Resource cost - what is the impact of telemetry pooling to the performance of your database
Skill set required - how easy or complex is it to setup a solution. (e.g. could a novice user set it up, or do you need DBA \ dev. skills)
Cost - important as well is the financial cost for monitoring and alerting in terms of licencing, subscriptions, cost per alert, that is what is the price vs. performance ratio you need for your business continuity.
Monitoring solutions available today use two main ways to obtain telemetry from databases. The first is through Azure monitor pipeline. The telemetry is built at the backend and and there is no "tax" on the database performance. Monitoring solutions relying on this type of telemetry are Azure Monitor and Azure SQL Analytics. It is also possible to stream the database monitoring telemetry to Event Hubs and Azure Storage for custom integrations. The other way obtain telemetry for monitoring is using DMV querying of system views which has "tax" on the database performance, depending how often data is pulled from a database, and using XEvents which use Azure storage as an intermediary to store event data. All non-Azure cloud solutions rely on this type of telemetry collection, and these are SCOM + Management Pack (MP) for MI, Telegraf + Grafana open source solution, SSMS tool and third party solutions. This is depicted with the diagram below.
SQL Insights as the latest addition to the monitoring portfolio is the only solution at this time capable to harvest both Azure Monitor telemetry, and direct DMV queries to the database.
The following table provides summary of options available today to monitor managed instance resources and performance taking the above stated objectives into consideration.
- Customer would need to make an evaluation on their own
- At cost charged by 3rd parties
*While an attempt was made to list known 3rd party solutions this list might not be comprehensive as Microsoft is not responsible for 3rd party solutions. Other third party tools may add support for MI over time. Customers are advised to conduct research on their own.
Use one of the above links provided in the table to learn more about each individual product and option presented.
Please note that products and options presented in this article are subject to change. This article reflects the state of monitoring options available for Azure SQL Managed Instance in May, 2021.
If you find this article useful, please like it on this page and share through social media.