Włączenie monitorowania wydajności dla Microsoft SQL (podgląd)

Ten artykuł wyjaśnia, jak włączyć i wyłączyć monitorowanie wydajności dla usług Microsoft SQL, aby dane o wydajności pojawiały się na stronie Wydajność w Database Hub. Umożliwienie monitorowania wydajności nie wiąże się z dodatkowymi kosztami. Nie musisz wdrażać ani utrzymywać agentów monitorujących, magazynów danych ani innej infrastruktury monitorującej.

Important

Ta funkcja jest dostępna w wersji zapoznawczej.

Kroki włączania monitorowania wydajności różnią się w zależności od usługi. Po włączeniu monitoringu każda usługa wysyła dane wydajnościowe do tego samego potoku telemetrycznego. Database Hub wykorzystuje te dane, aby pomagać identyfikować problemy z wydajnością i tworzyć pulpity nawigacyjne. Możesz też bezpośrednio wykonywać zapytania do danych telemetrycznych za pomocą KQL. Aby uzyskać więcej informacji, zobacz Telemetria monitorowania wydajności zapytań. Ten artykuł obejmuje następujące usługi:

Możesz przeglądać zasoby Microsoft SQL w Bazie Danych z Azure, Fabric oraz lokalnie. Uwzględniono następujące typy zasobów:

  • Azure SQL Database
  • Azure SQL Managed Instance
  • SQL Server na maszynach wirtualnych Azure
  • SQL Server obsługiwany przez Azure Arc
  • Elastyczne pule usługi Azure SQL Database
  • Baza danych SQL na platformie Fabric

Następujące typy zasobów są widoczne w Bazie Danych, ale strona Wydajność ich jeszcze nie obsługuje:

  • Baza danych SQL na platformie Fabric
  • Elastyczne pule usługi Azure SQL Database
  • Azure SQL Managed Instance
  • Monitorowanie wydajności nie zbiera danych z baz danych w elastycznych pulach Azure SQL Database ani z replik wtórnych.

Dostępność regionalna i obsługa danych

Monitorowanie wydajności jest dostępne dla zasobów Microsoft SQL w następujących regionach Azure. Nie są obsługiwane chmury rządowe, suwerenne ani odizolowane w wersji zapoznawczej. Aby uzyskać więcej informacji, zobacz Dostępność regionów usługi Fabric.

  • Brazylia Południowa
  • Kanada Środkowa
  • Kanada Wschodnia
  • Środkowe stany USA
  • Wschodnie stany USA
  • Wschodnie stany USA 2
  • Północno-środkowe stany USA
  • Południowo-środkowe stany USA
  • Zachodnio-środkowe stany USA
  • Zachodnie stany USA
  • Zachodnie stany USA 2
  • Zachodnie stany USA 3

Monitorowanie wydajności zbiera dane o wydajności z dynamicznych widoków zarządzania (DMV) na Twoich zasobach SQL. Monitorowanie wydajności nie zbiera żadnych danych osobowych ani zawartości klientów, a dane nie są przechowywane w stanie spoczynku poza obszarem geograficznym monitorowanego zasobu SQL.

Zarejestruj dostawcę zasobów platformy Azure

Aby zobaczyć dane z monitorowania wydajności, zarejestruj dostawcę Microsoft.AzureArcData zasobów w każdej subskrypcji, która zawiera zasoby bazy, którą chcesz monitorować. Więcej informacji można znaleźć w artykule Az Provider Register.

az provider register --namespace Microsoft.AzureArcData

Aby sprawdzić stan rejestracji, wykonaj następujące polecenie. Rejestracja jest zakończona, gdy polecenie zwraca Registered.

az provider show --namespace Microsoft.AzureArcData --query "registrationState" --output tsv

Włącz monitorowanie wydajności dla usługi Azure SQL Database

Użyj jednej z następujących metod:

  • W centrum bazy danych przejdź do strony Estate, wybierz zasób, a następnie wybierz Włącz monitorowanie wydajności.
  • Uruchom następujący skrypt T-SQL na każdej bazie użytkowników, którą chcesz monitorować. Nie uruchamiaj skryptu w bazie master danych. Aby zastosować skrypt na wielu serwerach jednocześnie, rozważ zapytania wieloserwerowe w SQL Server Management Studio (SSMS). Dodaj rozszerzoną właściwość MS_EnablePerformanceMonitoringPreview do każdej bazy użytkowników, którą chcesz monitorować.
IF EXISTS (
    SELECT 1
    FROM sys.extended_properties
    WHERE class = 0
      AND name = N'MS_EnablePerformanceMonitoringPreview'
)
BEGIN
    EXEC sys.sp_updateextendedproperty
        @name = N'MS_EnablePerformanceMonitoringPreview',
        @value = N'true';
END
ELSE
BEGIN
    EXEC sys.sp_addextendedproperty
        @name = N'MS_EnablePerformanceMonitoringPreview',
        @value = N'true';
END;
GO

Jak wyłączyć monitorowanie wydajności dla Azure SQL Database

Aby przestać zbierać dane o wydajności dla bazy danych użytkownika, zmień @value = N'true' na w @value = N'false' obu wywołaniach procedur, a następnie ponownie uruchom skrypt T-SQL na tej bazie.

Włączenie monitorowania wydajności dla SQL Server na maszynach wirtualnych Azure

Aby umożliwić monitorowanie wydajności SQL Server na maszynach wirtualnych Azure, dodaj flagę DatabaseWatcheronAzureVM funkcji do publicznych ustawień rozszerzenia SQL IaaS Agent. Rozszerzenie następnie zbiera dane o wydajności z instancji SQL Server i wykorzystuje zarządzaną tożsamość VM przypisaną przez system do przesłania ich do regionalnego punktu końcowego telemetrii. Monitorowanie jest konfigurowane dla każdej maszyny wirtualnej. Włączenie flagi funkcji na jednej maszynie wirtualnej nie umożliwia monitorowania na innych maszynach.

Aby uzyskać weryfikację, rozwiązywanie problemów oraz pełną listę zebranych zbiorów danych, zobacz Włączenie monitorowania wydajności dla SQL Server na maszynach maszynowych Azure.

Wymagania wstępne dla SQL Server na Azure VMs

  • Monitorowanie wydajności obsługuje SQL Server 2016 SP1 oraz późniejsze wersje na maszynach wirtualnych Azure. Wersje SQL Server wcześniejsze niż SQL Server 2016 SP1 nie są obsługiwane.
  • Performance Monitoring zbiera wszystkie zbiory danych dla edycji SQL Server Enterprise i Standard. W edycjach SQL Server Developer, Express i Evaluation monitoring wydajności zbiera wyłącznie dane o połączeniach klientów.
  • Musisz zainstalować rozszerzenie SQL IaaS Agent lub nowszą 2.0.229.0 wersję w trybie pełnego zarządzania. Musisz włączyć rozszerzenie, a jego stan aprowizacji musi mieć wartość Succeeded.
  • VM musi mieć włączoną systemowo przypisaną tożsamość zarządzaną .
  • Zasób instancji SQL Server musi być dostępny poprzez zunifikowany inwentarz.
  • Musisz zarejestrować dostawcę Microsoft.AzureArcData zasobów na subskrypcję.
  • VM musi umożliwić wychodzącą łączność HTTPS na portie 443 do telemetry.<region>.arcdataservices.com, gdzie <region> jest regionem Azure, który hostuje VM.
  • Potrzebujesz najnowszej wersji Azure CLI.
  • Potrzebujesz uprawnień do przeglądania i aktualizacji rozszerzeń na maszynie wirtualnej, takich jak członkostwo w roli Wirtualnego Współtwórcy .

Jak włączyć monitorowanie wydajności dla SQL Server na maszynach wirtualnych Azure

Important

Ustawienia rozszerzenia SQL IaaS Agent nie są sumowane. Gdy aktualizujesz rozszerzenie, uwzględnij wszystkie istniejące ustawienia publiczne, aby uniknąć nieumyślnego wyłączenia innej funkcji.

Następujące kroki PowerShell to pobranie aktualnych ustawień publicznych, dodanie flagi funkcji monitorowania wydajności oraz zastosowanie połączonych ustawień do rozszerzenia.

  1. Otwórz PowerShell w środowisku, gdzie zainstalowany jest Azure CLI, a następnie zaloguj się do Azure.

    az login
    
  2. Ustaw zmienne dla swojej maszyny wirtualnej SQL Server.

    $subscriptionId = "<subscription-id>"
    $resourceGroup = "<resource-group>"
    $vmName = "<vm-name>"
    
    az account set --subscription $subscriptionId
    
  3. Pobierz aktualne ustawienia rozszerzenia SQL IaaS Agent.

    $extension = az vm extension show `
      --resource-group $resourceGroup `
      --vm-name $vmName `
      --name SqlIaasExtension `
      --query "{settings:settings,typeHandlerVersion:typeHandlerVersion}" `
      --output json | ConvertFrom-Json
    
    if ($null -eq $extension.settings) {
      $settings = [pscustomobject]@{}
    }
    else {
      $settings = $extension.settings
    }
    
  4. Dodaj flagę DatabaseWatcheronAzureVM cech, zachowując istniejące flagi cech.

    $monitoringFlag = [pscustomobject]@{
      Name = "DatabaseWatcheronAzureVM"
      Enable = $true
    }
    
    $featureFlags = @(
      $settings.FeatureFlags |
        Where-Object { $_.Name -ne $monitoringFlag.Name }
    )
    $featureFlags += $monitoringFlag
    
    $settings | Add-Member `
      -MemberType NoteProperty `
      -Name FeatureFlags `
      -Value $featureFlags `
      -Force
    
  5. Zapisz połączone ustawienia i zastosuj je do rozszerzenia SQL IaaS Agent.

    $settingsPath = Join-Path $env:TEMP "sqlvm-performance-monitoring-settings.json"
    
    try {
      $settings |
        ConvertTo-Json -Depth 50 |
        Out-File -FilePath $settingsPath -Encoding utf8
    
      az vm extension set `
        --resource-group $resourceGroup `
        --vm-name $vmName `
        --publisher Microsoft.SqlServer.Management `
        --name SqlIaaSAgent `
        --extension-instance-name SqlIaasExtension `
        --settings "@$settingsPath"
    }
    finally {
      Remove-Item $settingsPath -ErrorAction SilentlyContinue
    }
    
  6. Powtarzaj te kroki dla każdej maszyny wirtualnej, którą chcesz monitorować.

Rozszerzenie automatycznie ładuje publiczne ustawienia. Nie musisz restartować usługi SQL Server IaaS Agent ani maszyny wirtualnej. Większość danych o wydajności jest dostępna w ciągu 3 do 5 minut od momentu wejścia ustawienia w życie. Niektóre dane oparte na inwentarzach mogą trwać nawet do 15 minut.

Aby potwierdzić, że monitoring działa, sprawdź status rozszerzenia:

az vm extension show `
  --resource-group $resourceGroup `
  --vm-name $vmName `
  --name SqlIaasExtension `
  --instance-view `
  --query "instanceView.statuses[0].message" `
  --output tsv

Gdy monitorowanie wydajności jest włączone i pomyślnie przesyła dane, status zawiera DatabaseMonitorArcPlugin: {"State":"Running","MetricsUploadStatus":"OK"}. Aby potwierdzić, że dane są dostępne, uruchom testowe zapytanie połączenia w telemetrii monitorowania wydajności zapytań.

Wyłącz monitorowanie wydajności dla SQL Server na maszynach wirtualnych Azure

Aby przestać zbierać nowe dane wydajnościowe dla maszyny wirtualnej, ustaw flagę DatabaseWatcheronAzureVM funkcji na .false Połącz tę zmianę z istniejącymi ustawieniami publicznymi, aby inne funkcje rozszerzenia SQL IaaS Agent nie były dotknięte.

  1. Wykonaj kroki 1 do 3 w sekcji Włącz monitorowanie wydajności SQL Server na maszynach wirtualnych Azure, aby się zalogować, ustawić zmienne i pobrać aktualne ustawienia.

  2. Ustaw flagę funkcji DatabaseWatcheronAzureVM na false, zachowując istniejące flagi funkcji.

    $monitoringFlag = [pscustomobject]@{
      Name = "DatabaseWatcheronAzureVM"
      Enable = $false
    }
    
    $featureFlags = @(
      $settings.FeatureFlags |
        Where-Object { $_.Name -ne $monitoringFlag.Name }
    )
    $featureFlags += $monitoringFlag
    
    $settings | Add-Member `
      -MemberType NoteProperty `
      -Name FeatureFlags `
      -Value $featureFlags `
      -Force
    
  3. Ukończ krok 5 w dokumencie Włączanie monitorowania wydajności dla programu SQL Server na maszynach wirtualnych platformy Azure, aby zastosować scalone ustawienia do rozszerzenia.

Odczekaj kilku minut, aż nowe ustawienie wejdzie w życie, a potem sprawdź status rozszerzenia, aby potwierdzić zmianę.

Włączenie monitorowania wydajności dla SQL Server włączonego przez Azure Arc

Monitorowanie wydajności SQL Server włączone przez Azure Arc jest domyślnie włączone. Gdy instancja spełnia wszystkie wymagania wstępne z tej sekcji, automatycznie zbiera dane o wydajności i nie musisz podejmować żadnych dodatkowych kroków. Więcej informacji można znaleźć w artykule Monitor SQL Server włączony przez Azure Arc.

Wymagania wstępne dotyczące programu SQL Server obsługiwanego przez usługę Azure Arc

  • Rozszerzenie Azure dla SQL Server (WindowsAgent.SqlServer) musi być wersją 1.1.2504.99 lub nowszą.
  • SQL Server musi działać na Windows. Program SQL Server w systemie Linux nie jest obsługiwany. SQL Server na Windows Server 2012 R2 i wcześniejszych wersjach nie jest obsługiwany.
  • SQL Server musi być wersją Standard lub Enterprise.
  • SQL Server musi być wersją 2016 SP1 lub nowsza.
  • Serwer musi mieć łączność z *.<region>.arcdataservices.com. Aby uzyskać więcej informacji, zobacz wymagania dotyczące sieci.
  • Typ licencji na serwerze SQL Server włączonym za pomocą usługi Azure Arc musi być typu Software Assurance lub pay-as-you-go.
  • Potrzebujesz roli Azure, która zawiera akcjęMicrosoft.AzureArcData/sqlServerInstances/getTelemetry/. Ta akcja jest uwzględniona we wbudowanej roli usługi Azure Hybrid Database Administrator - tylko do odczytu. Aby uzyskać więcej informacji, zobacz Wbudowane role platformy Azure.
  • Instancje klastra failover nie są obecnie obsługiwane.

Jak włączyć monitorowanie wydajności dla SQL Server włączonego przez Azure Arc

Poniższe polecenia umożliwiają zbieranie danych o wydajności. Polecenia mogą działać pomyślnie, ale system zbiera dane o wydajności tylko wtedy, gdy instancja spełnia wszystkie wymagania wstępne zawarte w tej sekcji.

Aby włączyć lub wyłączyć kolekcję w portalu Azure:

  1. Na stronie zasobów dla programu SQL Server obsługiwanego przez usługę Azure Arc wybierz pozycję Panel wydajności (wersja zapoznawcza).
  2. W górnej części okienka pulpitu wydajności nawigacyjnego wybierz Konfiguruj.
  3. W panelu Konfiguruj ustawienia monitoringu użyj przełącznika, aby włączyć zbieranie danych monitorujących.
  4. Wybierz pozycję Zastosuj ustawienia.

Aby włączyć kolekcję za pomocą Azure CLI, wykonaj następujące polecenie. Zastąp symbole zastępcze identyfikatorem subskrypcji, grupą zasobów i nazwą zasobu.

az resource update --ids "/subscriptions/<sub_id>/resourceGroups/<resource_group>/providers/Microsoft.AzureArcData/SqlServerInstances/<resource_name>" --set 'properties.monitoring.enabled=true' --api-version 2023-09-01-preview

Jak wyłączyć monitorowanie wydajności dla SQL Server włączonego przez Azure Arc

Aby włączyć lub wyłączyć kolekcję w portalu Azure:

  1. Na stronie zasobów dla programu SQL Server obsługiwanego przez usługę Azure Arc wybierz pozycję Panel wydajności (wersja zapoznawcza).
  2. W górnej części okienka pulpitu wydajności nawigacyjnego wybierz Konfiguruj.
  3. W panelu Konfiguruj ustawienia monitoringu użyj przełącznika, aby wyłączyć zbieranie danych monitorujących.
  4. Wybierz pozycję Zastosuj ustawienia.

Aby wyłączyć kolekcję za pomocą Azure CLI, wykonaj następujące polecenie. Zastąp symbole zastępcze identyfikatorem subskrypcji, grupą zasobów i nazwą zasobu.

az resource update --ids "/subscriptions/<sub_id>/resourceGroups/<resource_group>/providers/Microsoft.AzureArcData/SqlServerInstances/<resource_name>" --set 'properties.monitoring.enabled=false' --api-version 2023-09-01-preview

Następny krok