Övervaka Azure SQL Database med hjälp av Azure SQL Analytics (förhandsversion)

GÄLLER FÖR: Azure SQL Database, Azure SQL Managed Instance

Varning

Azure SQL Analytics (förhandsversion) är en integrering med Azure Monitor, där många övervakningslösningar inte längre är under aktiv utveckling. Fler övervakningsalternativ finns i Övervakning och prestandajustering i Azure SQL Database och Azure SQL Managed Instance.

Azure SQL Analytics (förhandsversion) är en avancerad molnövervakningslösning för övervakning av prestanda för alla dina Azure SQL databaser i stor skala och över flera prenumerationer i en enda vy. Azure SQL Analytics samlar in och visualiserar viktiga prestandamått med inbyggd intelligens för felsökning av prestanda.

Genom att använda dessa insamlade mått kan du skapa anpassade övervakningsregler och aviseringar. Azure SQL Analytics hjälper dig att identifiera problem i varje lager i programstacken. Azure SQL Analytics använder Azure Diagnostics mått tillsammans med Azure Monitor-vyer för att presentera data om alla dina Azure SQL databaser på en enda Log Analytics-arbetsyta. Azure Monitor hjälper dig att samla in, korrelera och visualisera strukturerade och ostrukturerade data.

Anslutna källor

Azure SQL Analytics är en molnbaserad övervakningslösning som stöder strömning av diagnostiktelemetri för alla dina Azure SQL databaser. Eftersom Azure SQL Analytics inte använder agenter för att ansluta till Azure Monitor stöder det inte övervakning av SQL Server som finns lokalt eller på virtuella datorer.

Ansluten källa Stöds Description
Diagnostikinställningar Ja Azure-mått och loggdata skickas till Azure Monitor-loggar direkt av Azure.
Azure Storage-konto No Azure Monitor läser inte data från ett lagringskonto.
Windows-agenter No Direkta Windows-agenter används inte av Azure SQL Analytics.
Linux-agenter No Direkta Linux-agenter används inte av Azure SQL Analytics.
System Center Operations Manager-hanteringsgrupp No En direktanslutning från Operations Manager-agenten till Azure Monitor används inte av Azure SQL Analytics.

Azure SQL Analytics-alternativ

I tabellen nedan beskrivs alternativ som stöds för två versioner av instrumentpanelen Azure SQL Analytics, en för Azure SQL Database och den andra för Azure SQL Managed Instance databaser.

Azure SQL Analytics-alternativ Description SQL Database support Stöd för SQL Managed Instance
Resurs efter typ Perspektiv som räknar alla resurser som övervakas. Ja Yes
Insikter Ger hierarkisk ökad detaljnivå i Intelligent Insights i prestanda. Ja Yes
Fel Ger hierarkisk detaljnivå i SQL-fel som har inträffat på databaserna. Ja Yes
Timeouter Ger hierarkisk detaljnivå i SQL-timeouter som har inträffat på databaserna. Ja Inga
Blockeringar Ger hierarkisk detaljnivå i SQL-blockeringar som har inträffat på databaserna. Ja Inga
Databasen väntar Ger hierarkisk ökad detaljnivå i SQL-väntestatistik på databasnivå. Innehåller sammanfattningar av total väntetid och väntetid per väntetyp. Ja Inga
Frågevaraktighet Ger hierarkisk ökad detaljnivå i frågekörningsstatistiken, till exempel frågevaraktighet, CPU-användning, data-I/O-användning, logg-I/O-användning. Ja Yes
Fråga väntar Ger hierarkisk ökad detaljnivå i frågeväntestatistiken efter väntekategori. Ja Yes

Konfiguration av Azure SQL Analytics (förhandsversion)

Använd processen som beskrivs i Lägg till Azure Monitor-lösningar från lösningsgalleriet för att lägga till Azure SQL Analytics (förhandsversion) på Log Analytics-arbetsytan.

Konfigurera Azure SQL Database för att strömma diagnostiktelemetri

När du har skapat Azure SQL Analytics-lösning på din arbetsyta måste du konfigurera varje resurs som du vill övervaka för att strömma diagnostiktelemetrin till Azure SQL Analytics. Följ detaljerade anvisningar på den här sidan:

Ovanstående sida innehåller också instruktioner om hur du aktiverar stöd för övervakning av flera Azure-prenumerationer från en enda Azure SQL Analytics-arbetsyta som en enda fönsterruta.

Använda Azure SQL Analytics (förhandsversion)

Gå till SQL Analytics-distributionen från sidan Äldre lösningar på Log Analytics-arbetsytan.

Azure SQL Analytics innehåller två separata vyer: en för övervakning SQL Database och en annan vy för övervakning SQL Managed Instance.

Visa Azure SQL Analytics-data

Instrumentpanelen innehåller en översikt över alla databaser som övervakas med olika perspektiv. För att olika perspektiv ska fungera måste du aktivera rätt mått eller loggar på dina SQL-resurser som ska strömmas till Log Analytics-arbetsytan.

Om vissa mått eller loggar inte strömmas till Azure Monitor fylls inte panelerna i Azure SQL Analytics med övervakningsinformation.

SQL Database vy

När panelen Azure SQL Analytics för databasen har valts visas instrumentpanelen för övervakning.

Skärmbild som visar instrumentpanelen för övervakning.

Om du väljer någon av panelerna öppnas en rapport med ökad detaljnivå i det specifika perspektivet. När perspektivet har valts öppnas rapporten för ökad detaljnivå.

Skärmbild som visar rapporten för ökad detaljnivå i det specifika perspektivet.

Varje perspektiv i den här vyn innehåller sammanfattningar på prenumerations-, server-, elastisk pool- och databasnivå. Dessutom visar varje perspektiv ett perspektiv som är specifikt för rapporten till höger. Om du väljer prenumeration, server, pool eller databas i listan fortsätter du att öka detaljnivån.

SQL Managed Instance vy

När panelen Azure SQL Analytics för databaserna har valts visas instrumentpanelen för övervakning.

Översikt över Azure SQL Analytics

Om du väljer någon av panelerna öppnas en rapport med ökad detaljnivå i det specifika perspektivet. När perspektivet har valts öppnas rapporten för ökad detaljnivå.

Om du väljer SQL Managed Instance vy visas information om instansanvändning, instansdatabaser och telemetri för de frågor som körs över den hanterade instansen.

timeouter för Azure SQL analytics

Intelligent Insights-rapport

Azure SQL Database Intelligent Insights låter dig veta vad som händer med prestanda för alla Azure SQL databaser. Alla intelligenta insikter som samlas in kan visualiseras och nås via insiktsperspektivet.

Azure SQL Analytics Insights

Elastiska pooler och databasrapporter

Både elastiska pooler och databaser har egna specifika rapporter som visar alla data som samlas in för resursen under den angivna tiden.

Azure SQL Analytics-databas

Azure SQL elastisk pool

Köra frågor mot rapporter

Genom frågevaraktigheten och frågevänteperspektiven kan du korrelera prestanda för alla frågor via frågerapporten. Den här rapporten jämför frågeprestanda för olika databaser och gör det enkelt att hitta databaser som utför den valda frågan väl jämfört med de som är långsamma.

Azure SQL Analytics-frågor

Behörigheter

Om du vill använda Azure SQL Analytics (förhandsversion) måste användarna beviljas en minsta behörighet för rollen Läsare i Azure. Den här rollen tillåter dock inte att användarna ser frågetexten eller utför automatiska justeringsåtgärder. Mer tillåtande roller i Azure som tillåter användning av Azure SQL Analytics i största möjliga utsträckning är ägare, deltagare, SQL DB-deltagare eller SQL Server deltagare. Du kanske också vill skapa en anpassad roll i portalen med specifika behörigheter som endast krävs för att använda Azure SQL Analytics och utan åtkomst till att hantera andra resurser.

Skapa en anpassad roll i portalen

Anteckning

Vi rekommenderar att du använder Azure Az PowerShell-modulen för att interagera med Azure. Se Installera Azure PowerShell för att komma igång. Information om hur du migrerar till Az PowerShell-modulen finns i artikeln om att migrera Azure PowerShell från AzureRM till Az.

Med tanke på att vissa organisationer tillämpar strikta behörighetskontroller i Azure hittar du följande PowerShell-skript som gör det möjligt att skapa en anpassad roll "SQL Analytics Monitoring Operator" i Azure Portal med den minsta läs- och skrivbehörighet som krävs för att använda Azure SQL Analytics i största möjliga utsträckning.

Ersätt {SubscriptionId} i skriptet nedan med ditt Azure-prenumerations-ID och kör skriptet som loggas in som en ägar- eller deltagarroll i 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

När den nya rollen har skapats tilldelar du den här rollen till varje användare som du behöver för att bevilja anpassade behörigheter för att använda Azure SQL Analytics.

Analysera data och skapa aviseringar

Dataanalys i Azure SQL Analytics baseras på Log Analytics-språk för dina anpassade frågor och rapporter. Hitta en beskrivning av tillgängliga data som samlas in från databasresursen för anpassade frågor i mått och loggar som är tillgängliga.

Automatiserade aviseringar i Azure SQL Analytics baseras på att skriva en Log Analytics-fråga som utlöser en avisering när ett villkor uppfylls. Nedan finns flera exempel på Log Analytics-frågor där aviseringar kan konfigureras i Azure SQL Analytics.

Skapa aviseringar för Azure SQL Database

Du kan enkelt skapa aviseringar med data som kommer från Azure SQL Database-resurser. Här följer några användbara loggfrågor som du kan använda med en loggavisering:

Hög CPU

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

Anteckning

  • Ett förhandskrav för att konfigurera den här aviseringen är att övervakade databaser strömmar grundläggande mått till Log Analytics-arbetsytan som används av Azure SQL Analytics.
  • Ersätt MetricName-värdet cpu_percent med dtu_consumption_percent för att få höga DTU-resultat i stället.

Hög CPU på elastiska pooler

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

Anteckning

  • Ett förhandskrav för att konfigurera den här aviseringen är att övervakade databaser strömmar grundläggande mått till Log Analytics-arbetsytan som används av Azure SQL Analytics.
  • Ersätt MetricName-värdet cpu_percent med dtu_consumption_percent för att få höga DTU-resultat i stället.

Lagring i genomsnitt över 95 % under de senaste 1 tim

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

Anteckning

  • Ett förhandskrav för att konfigurera den här aviseringen är att övervakade databaser strömmar grundläggande mått till Log Analytics-arbetsytan som används av Azure SQL Analytics.
  • Den här frågan kräver att en aviseringsregel konfigureras för att utlösa en avisering när det finns resultat (> 0 resultat) från frågan, vilket anger att villkoret finns på vissa databaser. Utdata är en lista över databasresurser som ligger ovanför inom storage_threshold den time_range definierade.
  • Utdata är en lista över databasresurser som ligger ovanför inom storage_threshold den time_range definierade.

Avisering om intelligenta insikter

Viktigt

Om en databas fungerar bra och inga Intelligent Insights har genererats misslyckas den här frågan med ett felmeddelande: Det gick inte att matcha skalärt uttryck med namnet rootCauseAnalysis_s. Det här beteendet förväntas i alla fall där det inte finns några intelligenta insikter för databasen.

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

Anteckning

  • Ett förhandskrav för att konfigurera den här aviseringen är att övervakade databaser strömmar SQLInsights-diagnostikloggen till Log Analytics-arbetsytan som används av Azure SQL Analytics.
  • Den här frågan kräver att en aviseringsregel konfigureras för att köras med samma frekvens som alert_run_interval för att undvika duplicerade resultat. Regeln bör konfigureras för att utlösa aviseringen när det finns resultat (> 0 resultat) från frågan.
  • alert_run_interval Anpassa för att ange tidsintervallet för att kontrollera om villkoret har inträffat på databaser som konfigurerats för att strömma SQLInsights-loggen till Azure SQL Analytics.
  • Anpassa insights_string för att samla in utdata från rotorsaksanalystexten i Insights. Det här är samma text som visas i användargränssnittet för Azure SQL Analytics som du kan använda från befintliga insikter. Du kan också använda frågan nedan för att se texten för alla insikter som genereras i din prenumeration. Använd utdata från frågan för att samla de distinkta strängarna för att konfigurera aviseringar i Insights.
AzureDiagnostics
| where Category == "SQLInsights" and status_s == "Active"
| distinct rootCauseAnalysis_s

Skapa aviseringar för SQL Managed Instance

Lagringsutrymmet är över 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

Anteckning

  • Ett förhandskrav för att konfigurera den här aviseringen är att den övervakade hanterade instansen har strömning av ResourceUsageStats-logg aktiverad till Log Analytics-arbetsytan som används av Azure SQL Analytics.
  • Den här frågan kräver att en aviseringsregel konfigureras för att utlösa en avisering när det finns resultat (> 0 resultat) från frågan, som anger att villkoret finns på den hanterade instansen. Utdata är lagringsprocentförbrukning på den hanterade instansen.

Den genomsnittliga CPU-förbrukningen är över 95 % under de senaste 1 tim

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

Anteckning

  • Ett förhandskrav för att konfigurera den här aviseringen är att den övervakade hanterade instansen har strömning av ResourceUsageStats-logg aktiverad till Log Analytics-arbetsytan som används av Azure SQL Analytics.
  • Den här frågan kräver att en aviseringsregel konfigureras för att utlösa en avisering när det finns resultat (> 0 resultat) från frågan, som anger att villkoret finns på den hanterade instansen. Utdata är genomsnittlig förbrukning i procent av CPU-användning under den definierade perioden på den hanterade instansen.

Prissättning

Även om Azure SQL Analytics (förhandsversion) är kostnadsfri att använda, kan förbrukning av diagnostiktelemetri ovanför de kostnadsfria enheter för datainmatning som allokeras varje månad tillämpas, se Priser för Log Analytics. De kostnadsfria datainmatningsenheterna möjliggör kostnadsfri övervakning av flera databaser varje månad. Mer aktiva databaser med tyngre arbetsbelastningar matar in mer data jämfört med inaktiva databaser. Du kan enkelt övervaka förbrukningen av datainmatning i Azure SQL Analytics genom att välja OMS-arbetsyta på navigeringsmenyn i Azure SQL Analytics och sedan välja Användning och Uppskattade kostnader.

Nästa steg