Partager via


Surveiller Azure SQL Database à l’aide d’Azure SQL Analytics (préversion)

S’APPLIQUE À : Azure SQL Database, Azure SQL Managed Instance

Avertissement

Azure SQL Analytics (préversion) est une intégration avec Azure Monitor, où de nombreuses solutions de monitoring ne sont plus en développement. Pour plus d’options de supervision, consultez Supervision et réglage des performances dans Azure SQL Database et Azure SQL Managed Instance.

Azure SQL Analytics (préversion) est une solution de supervision cloud avancée pour surveiller les performances de toutes vos bases de données Azure SQL à grande échelle et sur plusieurs abonnements dans une vue unique. Azure SQL Analytics collecte et visualise des métriques de performances clés à l’aide d’une intelligence intégrée pour résoudre les problèmes de performances.

En utilisant ces métriques collectées, vous pouvez créer des règles et des alertes de surveillance personnalisées. Azure SQL Analytics vous aide à identifier les problèmes au niveau de chaque couche de votre pile d’applications. Azure SQL Analytics utilise les métriques Diagnostics Azure ainsi que les vues Azure Monitor pour présenter des données sur toutes vos bases de données Azure SQL dans un espace de travail Log Analytics unique. Azure Monitor vous aide à collecter, mettre en corrélation et visualiser des données structurées et non structurées.

Sources connectées

Azure SQL Analytics est une solution de supervision cloud uniquement prenant en charge la diffusion en continu des données de télémétrie de diagnostic pour toutes vos bases de données Azure SQL. Étant donné qu’Azure SQL Analytics n’utilise pas d’agents pour se connecter à Azure Monitor, il ne prend pas en charge la surveillance de SQL Server hébergé localement ou dans des machines virtuelles.

Source connectée Soutenu Description
Paramètres de diagnostic Oui Les données de métrique et de journal Azure sont envoyées directement aux journaux Azure Monitor par Azure.
Compte de stockage Azure Non Azure Monitor ne lit pas les données d’un compte de stockage.
Agents sous Windows Non Les agents Windows directs ne sont pas utilisés par Azure SQL Analytics.
Agents Linux Non Les agents Linux directs ne sont pas utilisés par Azure SQL Analytics.
Groupe d’administration System Center Operations Manager Non Une connexion directe de l’agent Operations Manager à Azure Monitor n’est pas utilisée par Azure SQL Analytics.

Options Azure SQL Analytics

Le tableau ci-dessous présente les options prises en charge pour deux versions du tableau de bord Azure SQL Analytics, l’une pour Azure SQL Database et l’autre pour les bases de données Azure SQL Managed Instance.

Option Azure SQL Analytics Description Prise en charge de SQL Database Prise en charge de SQL Managed Instance
Ressource par type Perspective qui compte toutes les ressources surveillées. Oui Oui
Aperçus Fournit une exploration hiérarchique dans Intelligent Insights en matière de performances. Oui Oui
Erreurs Fournit une exploration hiérarchique des erreurs SQL qui se sont produites sur les bases de données. Oui Oui
Délais Fournit une exploration hiérarchique des délais d’expiration SQL qui se sont produits sur les bases de données. Oui Non
Blocages Fournit une exploration hiérarchique des blocages SQL qui se sont produits sur les bases de données. Oui Non
Attentes de base de données Fournit une exploration hiérarchique des statistiques d’attente SQL au niveau de la base de données. Inclut des résumés du temps d’attente total et du temps d’attente par type d’attente. Oui Non
Durée de la requête Fournit une exploration hiérarchique des statistiques d’exécution de requête, telles que la durée de requête, l’utilisation du processeur, l’utilisation des E/S de données, l’utilisation des E/S de journal. Oui Oui
Attentes des requêtes Fournit une exploration hiérarchique des statistiques d’attente de requête par catégorie d’attente. Oui Oui

Configuration d’Azure SQL Analytics (préversion)

Utilisez le processus décrit dans Ajouter des solutions Azure Monitor à partir de la galerie de solutions pour ajouter Azure SQL Analytics (préversion) à votre espace de travail Log Analytics.

Configurer Azure SQL Database pour diffuser en continu les données de télémétrie des diagnostics

Une fois que vous avez créé la solution Azure SQL Analytics dans votre espace de travail, vous devez configurer chaque ressource que vous souhaitez surveiller pour diffuser en continu ses données de télémétrie de diagnostic vers Azure SQL Analytics. Suivez des instructions détaillées sur cette page :

La page ci-dessus fournit également des instructions sur l’activation de la prise en charge de la surveillance de plusieurs abonnements Azure à partir d’un seul espace de travail Azure SQL Analytics sous la forme d’un seul volet de verre.

Utiliser Azure SQL Analytics (préversion)

Accédez à votre déploiement SQL Analytics à partir de la page Solutions Legacy de l’espace de travail Log Analytics.

Azure SQL Analytics fournit deux vues distinctes : une pour la supervision de SQL Database et l’autre pour la surveillance de SQL Managed Instance.

Affichage des données Azure SQL Analytics

Le tableau de bord inclut la vue d’ensemble de toutes les bases de données supervisées par différentes perspectives. Pour que différentes perspectives fonctionnent, vous devez activer les métriques ou les journaux appropriés sur vos ressources SQL pour être transmis en continu vers l'espace de travail de Log Analytics.

Si certaines métriques ou journaux d’activité ne sont pas diffusés en continu dans Azure Monitor, les vignettes dans Azure SQL Analytics ne sont pas remplies avec des informations de surveillance.

Vue de la base de données SQL

Une fois la vignette Azure SQL Analytics pour la base de données sélectionnée, le tableau de bord de surveillance s’affiche.

Capture d’écran montrant le tableau de bord de surveillance.

La sélection de l’une des vignettes ouvre un rapport d’exploration dans la perspective concernée. Une fois la perspective sélectionnée, le rapport d’exploration est ouvert.

Capture d’écran montrant le rapport détaillé sur la perspective spécifique.

Chaque perspective de cette vue fournit des résumés au niveau de l’abonnement, du serveur, du pool élastique et de la base de données. En outre, chaque perspective montre une perspective spécifique au rapport à droite. La sélection de l’abonnement, du serveur, du pool ou de la base de données dans la liste continue l’exploration.

Aperçu de l'instance SQL gérée

Une fois la vignette Azure SQL Analytics pour les bases de données sélectionnée, le tableau de bord de surveillance s’affiche.

Vue d’ensemble d’Azure SQL Analytics

En sélectionnant l’une des vignettes, on ouvre un rapport détaillé dans un contexte spécifique. Une fois la perspective sélectionnée, le rapport d’exploration est ouvert.

La sélection de la vue SQL Managed Instance affiche des détails sur l’utilisation de l’instance, les bases de données d’instance et les données de télémétrie sur les requêtes exécutées sur l’instance managée.

Délais d’expiration d’Azure SQL Analytics

Rapport Intelligent Insights

Azure SQL Database Intelligent Insights vous permet de savoir ce qui se passe avec les performances de toutes les bases de données Azure SQL. Tous les insights intelligents collectés peuvent être visualisés et accessibles par le biais de la perspective Insights.

Azure SQL Analytics Insights

Pools élastiques et rapports de base de données

Les pools élastiques et les bases de données ont leurs propres rapports spécifiques qui affichent toutes les données collectées pour la ressource dans le temps spécifié.

Base de données Azure SQL Analytics

Pool élastique Azure SQL

Rapports de requête

Grâce à la durée de la requête et aux perspectives d’attente de requête, vous pouvez mettre en corrélation les performances de n’importe quelle requête via le rapport de requête. Ce rapport compare les performances des requêtes entre différentes bases de données et facilite l’identification des bases de données qui effectuent bien la requête sélectionnée par rapport à celles qui sont lentes.

Requêtes Azure SQL Analytics

Autorisations

Pour utiliser Azure SQL Analytics (préversion), les utilisateurs doivent disposer d’une autorisation minimale du rôle Lecteur dans Azure. Toutefois, ce rôle n’autorise pas les utilisateurs à voir le texte de la requête ou à effectuer des actions de réglage automatique. Les rôles permissifs dans Azure qui autorisent l’utilisation d’Azure SQL Analytics dans toute la mesure sont Propriétaire, Contributeur, Contributeur SQL DB ou Contributeur SQL Server. Vous pouvez également envisager de créer un rôle personnalisé dans le portail avec des autorisations spécifiques requises uniquement pour utiliser Azure SQL Analytics et sans accès à la gestion d’autres ressources.

Créer un rôle personnalisé dans le portail

Remarque

Nous vous recommandons d’utiliser le module Azure Az PowerShell pour interagir avec Azure. Pour commencer, consultez Installer Azure PowerShell. Pour savoir comment migrer vers le module Az PowerShell, consultez Migrer Azure PowerShell depuis AzureRM vers Az.

Reconnaissant que certaines organisations appliquent des contrôles d’autorisation stricts dans Azure, recherchez le script PowerShell suivant permettant la création d’un rôle personnalisé « Opérateur de supervision SQL Analytics » dans le portail Azure avec les autorisations de lecture et d’écriture minimales requises pour utiliser Azure SQL Analytics dans sa totalité.

Remplacez « {SubscriptionId} » dans le script ci-dessous par votre ID d’abonnement Azure, puis exécutez le script connecté en tant que rôle Propriétaire ou Contributeur dans Azure.

 Connect-AzAccount
 Select-AzSubscription {SubscriptionId}
 $role = Get-AzRoleDefinition -Name Reader
 $role.Name = "SQL Analytics Monitoring Operator"
 $role.Description = "Lets you monitor database performance with Azure SQL Analytics as a reader. Does not allow change of resources."
 $role.IsCustom = $true
 $role.Actions.Add("Microsoft.SQL/servers/databases/read");
 $role.Actions.Add("Microsoft.SQL/servers/databases/topQueries/queryText/*");
 $role.Actions.Add("Microsoft.Sql/servers/databases/advisors/read");
 $role.Actions.Add("Microsoft.Sql/servers/databases/advisors/write");
 $role.Actions.Add("Microsoft.Sql/servers/databases/advisors/recommendedActions/read");
 $role.Actions.Add("Microsoft.Sql/servers/databases/advisors/recommendedActions/write");
 $role.Actions.Add("Microsoft.Sql/servers/databases/automaticTuning/read");
 $role.Actions.Add("Microsoft.Sql/servers/databases/automaticTuning/write");
 $role.Actions.Add("Microsoft.Sql/servers/advisors/read");
 $role.Actions.Add("Microsoft.Sql/servers/advisors/write");
 $role.Actions.Add("Microsoft.Sql/servers/advisors/recommendedActions/read");
 $role.Actions.Add("Microsoft.Sql/servers/advisors/recommendedActions/write");
 $role.Actions.Add("Microsoft.Resources/deployments/write");
 $role.AssignableScopes = "/subscriptions/{SubscriptionId}"
 New-AzRoleDefinition $role

Une fois le nouveau rôle créé, attribuez ce rôle à chaque utilisateur que vous devez accorder des autorisations personnalisées pour utiliser Azure SQL Analytics.

Analyser les données et créer des alertes

L’analyse des données dans Azure SQL Analytics est basée sur le langage Log Analytics pour vos requêtes et rapports personnalisés. Recherchez la description des données disponibles collectées à partir de la ressource de base de données pour l’interrogation personnalisée dans les métriques et les journaux disponibles.

Les alertes automatisées dans Azure SQL Analytics sont basées sur l’écriture d’une requête Log Analytics qui déclenche une alerte en cas de condition remplie. Recherchez ci-dessous plusieurs exemples sur les requêtes Log Analytics sur lesquelles les alertes peuvent être configurées dans Azure SQL Analytics.

Créer des alertes pour Azure SQL Database

Vous pouvez facilement créer des alertes avec les données provenant de ressources Azure SQL Database. Voici quelques requêtes de journal utiles que vous pouvez utiliser avec une alerte de journal :

Processeur élevé

AzureMetrics
| where ResourceProvider=="MICROSOFT.SQL"
| where ResourceId contains "/DATABASES/"
| where MetricName=="cpu_percent"
| summarize AggregatedValue = max(Maximum) by bin(TimeGenerated, 5m)
| render timechart

Remarque

  • La configuration préalable de cette alerte est que les bases de données surveillées diffusent des métriques de base vers l’espace de travail Log Analytics utilisé par Azure SQL Analytics.
  • Remplacez la valeur MetricName cpu_percent par dtu_consumption_percent pour obtenir des résultats DTU élevés à la place.

Utilisation élevée du processeur sur les pools élastiques

AzureMetrics
| where ResourceProvider=="MICROSOFT.SQL"
| where ResourceId contains "/ELASTICPOOLS/"
| where MetricName=="cpu_percent"
| summarize AggregatedValue = max(Maximum) by bin(TimeGenerated, 5m)
| render timechart

Remarque

  • La configuration préalable de cette alerte est que les bases de données surveillées diffusent des métriques de base vers l’espace de travail Log Analytics utilisé par Azure SQL Analytics.
  • Remplacez la valeur de MetricName cpu_percent par dtu_consumption_percent pour obtenir des résultats DTU élevés à la place.

Stockage en moyenne supérieure à 95% au cours de la dernière heure

let time_range = 1h;
let storage_threshold = 95;
AzureMetrics
| where ResourceId contains "/DATABASES/"
| where MetricName == "storage_percent"
| summarize max_storage = max(Average) by ResourceId, bin(TimeGenerated, time_range)
| where max_storage > storage_threshold
| distinct ResourceId

Remarque

  • La configuration préalable de cette alerte est que les bases de données surveillées diffusent des métriques de base vers l’espace de travail Log Analytics utilisé par Azure SQL Analytics.
  • Cette requête nécessite la configuration d’une règle d’alerte pour déclencher une alerte lorsqu’il existe des résultats (> 0 résultats) de la requête, indiquant que la condition existe sur certaines bases de données. La sortie est une liste de ressources de base de données qui se trouvent au-dessus du storage_threshold dans le cadre de time_range défini.
  • Le résultat est une liste de ressources de base de données qui se trouvent au-dessus du storage_threshold dans le contexte défini par time_range.

Alerte sur Intelligent Insights

Important

Si une base de données fonctionne correctement et qu’aucune intelligence Insights n’a été générée, cette requête échoue avec un message d’erreur : Échec de la résolution de l’expression scalaire nommée rootCauseAnalysis_s. Ce comportement est attendu pour tous les cas où il n’existe pas d’insights intelligents pour la base de données.

let alert_run_interval = 1h;
let insights_string = "hitting its CPU limits";
AzureDiagnostics
| where Category == "SQLInsights" and status_s == "Active"
| where TimeGenerated > ago(alert_run_interval)
| where rootCauseAnalysis_s contains insights_string
| distinct ResourceId

Remarque

  • La configuration préalable de cette alerte est que les bases de données surveillées diffusent le journal des diagnostics SQLInsights vers l’espace de travail Log Analytics utilisé par Azure SQL Analytics.
  • Cette requête nécessite la configuration d’une règle d’alerte pour s’exécuter avec la même fréquence que alert_run_interval pour éviter les résultats en double. La règle doit être configurée pour déclencher l’alerte lorsqu’il existe des résultats (> 0 résultats) de la requête.
  • Personnalisez l’intervalle alert_run_interval de temps pour vérifier si la condition s’est produite sur les bases de données configurées pour diffuser en continu le journal SQLInsights vers Azure SQL Analytics.
  • Personnalisez *insights_string* pour capturer le texte de l'analyse de la cause racine dans Insights. Il s’agit du même texte affiché dans l’interface utilisateur d’Azure SQL Analytics que vous pouvez utiliser à partir des insights existants. Vous pouvez également utiliser la requête ci-dessous pour afficher le texte de tous les insights générés sur votre abonnement. Utilisez la sortie de la requête pour collecter les chaînes distinctes pour configurer des alertes sur Insights.
AzureDiagnostics
| where Category == "SQLInsights" and status_s == "Active"
| distinct rootCauseAnalysis_s

Créer des alertes pour SQL Managed Instance

Le niveau de stockage est supérieur à 90%

let storage_percentage_threshold = 90;
AzureDiagnostics
| where Category =="ResourceUsageStats"
| summarize (TimeGenerated, calculated_storage_percentage) = arg_max(TimeGenerated, todouble(storage_space_used_mb_s) *100 / todouble (reserved_storage_mb_s))
   by ResourceId
| where calculated_storage_percentage > storage_percentage_threshold

Remarque

  • La configuration préalable de cette alerte est que l’instance managée surveillée dispose du streaming du journal ResourceUsageStats activé sur l’espace de travail Log Analytics utilisé par Azure SQL Analytics.
  • Cette requête nécessite la configuration d’une règle d’alerte pour déclencher une alerte lorsqu’il existe des résultats (> 0 résultats) de la requête, indiquant que la condition existe sur l’instance managée. La sortie est le pourcentage de consommation du stockage sur l’instance gérée.

La consommation moyenne du processeur est supérieure à 95% au cours de la dernière heure.

let cpu_percentage_threshold = 95;
let time_threshold = ago(1h);
AzureDiagnostics
| where Category == "ResourceUsageStats" and TimeGenerated > time_threshold
| summarize avg_cpu = max(todouble(avg_cpu_percent_s)) by ResourceId
| where avg_cpu > cpu_percentage_threshold

Remarque

  • La configuration préalable de cette alerte est que l’instance managée surveillée dispose du streaming du journal ResourceUsageStats activé sur l’espace de travail Log Analytics utilisé par Azure SQL Analytics.
  • Cette requête nécessite la configuration d’une règle d’alerte pour déclencher une alerte lorsqu’il existe des résultats (> 0 résultats) de la requête, indiquant que la condition existe sur l’instance managée. La sortie est le taux moyen d'utilisation du processeur sur une période définie pour l'instance gérée.

Tarification

Bien qu'Azure SQL Analytics (préversion) soit gratuit, des frais s'appliquent lorsque la consommation de télémétrie de diagnostic dépasse les unités gratuites d'ingestion de données allouées chaque mois. Consultez la tarification Log Analytics. Les unités gratuites d’ingestion de données fournies permettent une surveillance gratuite de plusieurs bases de données chaque mois. Des bases de données plus actives avec des charges de travail plus lourdes ingèrent plus de données que de bases de données inactives. Vous pouvez facilement surveiller votre consommation d’ingestion des données dans Azure SQL Analytics en sélectionnant l’espace de travail OMS dans le menu de navigation d’Azure SQL Analytics, puis en sélectionnant Utilisation et Estimation des coûts.

Étapes suivantes