What we read
sys.dm_db_resource_stats — DTU/vCore, CPU, data I/O and log write percentages
Query Store views — query and plan history, regression detection
sys.dm_os_wait_stats and database-scoped wait views — including Azure log governor waits
sys.dm_exec_requests and dm_exec_sessions — active sessions and blocking chains
sys.dm_db_index_usage_stats and the missing index DMVs — index usage and advice
storage consumption and proximity to limits
Elastic pool views — resource sharing at pool level
Extended Events — deadlock graphs via a database-scoped XE session
What it does specifically for Azure SQL
Headroom and saturation model
CPU, workers, sessions, data I/O and log write are each tracked as their own dimension, measuring which one is approaching its limit and when the service tier will stop being enough.
Query Store based query intelligence
Regressed plans are identified from query and plan history, and the most expensive queries ranked by resource consumption.
Filtering out platform noise
Azure's own background sessions (NodeAgent, TdService, AutomaticTuningAgent) are separated from your workload — otherwise every database permanently reports a long-running query.
Storage growth forecasting
Data and log space usage is tracked over time and the date of hitting the limit is projected.
Minimum privileges required
The baseline is read-only and safe to grant in production.
Prerequisites
·Agentless: the connection is made from the ClusterEye API server; nothing is installed on the Azure side.
·Allow the API server's egress IP in the Azure SQL firewall, or use a private endpoint.
·Query Store is on by default on Azure SQL Database; on Managed Instance enable it per database.
·sysadmin is never required — each capability unlocks from the permission it holds, and the UI names the exact GRANT when one is missing.
·Serverless tier auto-pause: the first connection to a paused database triggers a resume and can take about a minute.