Udostępnij za pośrednictwem


Rozwiązywanie problemów z łącznością z usługą przetwarzania danych i punktami końcowymi telemetrii

Dotyczy:programu SQL Server

Oprócz zwykłych punktów końcowych rozszerzenie usługi Azure Arc dla programu SQL Server łączy się z dwoma innymi punktami końcowymi:

  • Punkt końcowy usługi przetwarzania danych (DPS)

    Zebrane informacje dotyczące spisu instancji SQL Server, baz danych, grup dostępności i danych użytkowania na potrzeby rozliczeń są wysyłane do tego punktu końcowego.

  • Punkt końcowy telemetrii

    Dzienniki agenta połączonej maszyny platformy Azure, rozszerzenie platformy Azure dla dzienników programu SQL Server oraz dane dynamicznych widoków zarządzania (DMV) są wysyłane do tego punktu końcowego.

Komunikacja z tymi punktami końcowymi używa protokołu HTTPS z protokołem SSL/TLS i portem TCP/443 na potrzeby szyfrowanych bezpiecznych połączeń. Agent inicjuje komunikację w celu wysyłania danych do platformy Azure. Platforma Azure nigdy nie inicjuje komunikacji. Łączność z tymi punktami końcowymi jest zatem tylko jednym ze sposobów.

Gdy komunikacja z tymi punktami końcowymi jest zablokowana, usługa ma następujące objawy:

Bieżący stan rozszerzenia platformy Azure

Bieżący stan rozszerzenia platformy Azure dla programu SQL Server można wyświetlić w portalu. Stan jest odświeżany co 15 minut.

Stan dobrej kondycji:

Zrzut ekranu portalu rozszerzenia Azure dla SQL Server w zdrowym stanie.

Stan złej kondycji:

Zrzut ekranu portalu rozszerzenia Azure dla SQL Server w stanie złej kondycji.

Sprawdź, czy masz problem z nawiązywaniem połączenia z punktami końcowymi usługi DPS lub telemetrii

Istnieją dwa sposoby sprawdzania, czy występują problemy z łącznością z punktami końcowymi usługi DPS lub telemetrii.

Sprawdź stan rozszerzenia platformy Azure pod kątem programu SQL Server w witrynie Azure Portal

Jeśli połączenie jest ogólnie połączone z platformą Azure, rozszerzenie platformy Azure dla programu SQL Server zgłasza stan w witrynie Azure Portal.

  • Przejdź do widoku Machines — Azure Arc w witrynie Azure Portal i znajdź maszynę według nazwy i wybierz ją.
  • Wybierz Extensions.
  • Wybierz windowsAgent.SqlServer lub LinuxAgent.SqlServer, aby wyświetlić szczegóły.
  • Przyjrzyj się komunikatu o stanie i wartości uploadStatus. Jeśli jest to coś innego niż OK, jest problem z połączeniem z systemem DPS. Jeśli 0, prawdopodobnie zapora blokuje komunikację z punktem końcowym usługi DPS. W komunikacie o stanie może być więcej szczegółów lub kod błędu uploadStatus, który może zapewnić wgląd w problem z łącznością.

Sprawdzanie dzienników rozszerzenia platformy Azure dla programu SQL Server

Plik dziennika rozszerzenia znajduje się pod adresem:

C:\ProgramData\GuestConfig\extension_logs\Microsoft.AzureData.WindowsAgent.SqlServer\

Nazwa pliku dziennika zależy od wersji rozszerzenia platformy Azure dla programu SQL Server. W przypadku najnowszej wersji rozszerzenia platformy Azure dla programu SQL Server plik dziennika to:

unifiedagent.log

W przypadku wersji rozszerzenia 1.1.24724.69 i starszych plik dziennika to:

ExtensionLog_0.log

Sprawdź wpisy dziennika wskazujące problem podczas nawiązywania połączenia z punktami końcowymi usługi DPS lub telemetrii.

Sonduj punkty końcowe serwera internetowego

Za pomocą różnych narzędzi można sondować punkty końcowe serwera WWW pod kątem DPS i telemetrii. Na przykład Invoke-WebRequest lub curl.

W poniższym przykładzie użyto Invoke-Webrequest:

Invoke-WebRequest telemetry.<region>.arcdataservices.com

Możliwy kod stanu odpowiedzi to:

Invoke-WebRequest: Response status code does not indicate success: 401 (Unauthorized).

Oczekiwano wartości 401, ponieważ nie ma żadnej nieuwierzytelnionej ścieżki w punkcie końcowym telemetrii.

W przypadku usługi DPS:

Invoke-WebRequest dataprocessingservice.<region>.arcdataservices.com

Możliwy kod stanu odpowiedzi to:

StatusCode        : 200

StatusDescription : OK

Ten przypadek powinien zwrócić wartość 200, ponieważ istnieje nieuwierzytelniona trasa.

Łączność sondy ze wszystkimi regionami

Możesz sondować łączność ze wszystkimi regionami za pomocą skryptu programu test-connectivity.ps1 PowerShell.

#This script repeatedly probes all regions for connectivity to the Azure Arc data services/Arc-enabled SQL Server endpoints for telemetry and the data processing service.
#The script will output the status of the connectivity to the console.
#The script will run indefinitely until stopped by the user.
#The script will iterate through all regions in the $regions array.
#The list of regions are updated as of June 7,2024 to reflect all publicly available, supported Azure regions for Arc-enabled SQL Server.

$regions = @(
    "East US",
    "East US 2",
    "West US 2",
    "West US 3",
    "Central US",
    "North Central US",
    "South Central US",
    "West Central US",
    "Canada Central",
    "Canada East",
    "UK South",
    "UK West",
    "France Central",
    "West Europe",
    "North Europe",
    "Switzerland North",
    "Central India",
    "Brazil South",
    "South Africa North",
    "UAE North",
    "Japan East",
    "Korea Central",
    "Southeast Asia",
    "Australia East",
    "Sweden Central",
    "Norway East"
)

$regions = $regions | ForEach-Object { $_.Replace(" ", "") }

do{
    $regions | ForEach-Object {
        $dps_url =  "dataprocessingservice.$_.arcdataservices.com"
        $ti_url =  "telemetry.$_.arcdataservices.com"
        try{
            $dps_response_time = Measure-Command { $response = Invoke-WebRequest -Uri $dps_url -Method Get }
            $dps_result = ($response).StatusCode
        }catch{
            $dps_result = $_.Exception.Message
        }
        try{
            $ti_response_time = Measure-Command { $response = Invoke-WebRequest -Uri $ti_url -Method Get -SkipHttpErrorCheck }
        }catch{
            if($_.Exception.Message -like "*401*"){
                $ti_result = "Expected"
            }
            else {
                $ti_result = $_.Exception.Message
            }
        }
        if ($ti_response_time.TotalSeconds -gt 3 -or $dps_response_time.TotalSeconds -gt 3 -or $dps_result -ne 200 -or $ti_result -ne "Expected") {
            Write-Host $dps_result "($dps_response_time) " $ti_result " ($ti_response_time) :: $_" -ForegroundColor Red
        }
        elseif ($ti_response_time.TotalSeconds -gt 1 -or $dps_response_time.TotalSeconds -gt 1) {
            Write-Host $dps_result "($dps_response_time) " $ti_result " ($ti_response_time) :: $_" -ForegroundColor Yellow
        }
        else
        {
            Write-Host $dps_result "($dps_response_time) " $ti_result " ($ti_response_time) :: $_"
        }
    }
    Write-Host "====================================================================="
} while($true)

Referencja punktu końcowego

Aby nawiązać połączenie z platformą Azure, punkty końcowe używają *.arcdataservices.com.

Dodatkowe informacje

Począwszy od 12 marca, 2024 r., rozszerzenie usługi Azure dla programu SQL Server używa następujących punktów końcowych:

  • DPS: dataprocessingservice.<region>.arcdataservices.com
  • Telemetria telemetry.<region>.arcdataservices.com

Zastąp <region> krótką nazwą regionu świadczenia usługi Azure, w którym znajduje się zasób maszyny arc. Krótka nazwa pochodzi z nazwy regionu platformy Azure bez spacji i wszystkich małych liter.

Jeśli na przykład zasób maszyny Arc znajduje się w Wschodnie USA 2, krótką nazwą regionu jest eastus2, a punkt końcowy telemetrii to:

telemetry.eastus2.arcdataservices.com

Jeśli rozszerzenie jest starsze niż 11 marca 2024 r., może używać starszych punktów końcowych. Zaktualizuj rozszerzenie, aby używało bieżącego punktu końcowego.

Notatka

Wartości punktu końcowego przed *.arcdataservices.com mogą ulec zmianie.

Używanie serwera proxy HTTPS na potrzeby łączności wychodzącej

Jeśli Twoja sieć wymaga używania serwera proxy HTTPS dla łączności wychodzącej, możesz dowiedzieć się więcej na temat konfigurowania tych ustawień w Aktualizuj lub usuń ustawienia serwera proxy.

Wykonywanie zapytań względem usługi Azure Resource Graph pod kątem statystyk przekazywania danych telemetrycznych

Użyj usługi Azure Resource Graph, aby zapytać o status przesyłania dla Twojego środowiska.

resources
    | where type =~ 'microsoft.hybridcompute/machines/extensions'
    | where properties.type in ('WindowsAgent.SqlServer','LinuxAgent.SqlServer')
    | parse id with * '/providers/Microsoft.HybridCompute/machines/' machineName '/extensions/' *
    | parse properties with * 'uploadStatus : ' uploadStatus ';' *
    | project uploadStatus, subscriptionId, resourceGroup, machineName
    | where uploadStatus !in ('OK') //comment this out to see all upload stats
    | order by uploadStatus desc

Znajdowanie rozszerzeń SQL, które nie nawiązały połączenia z usługą DPS przez długi czas

Wykonaj zapytanie usługi Azure Resource Graph, aby znaleźć rozszerzenia, które nie zostały ostatnio połączone z usługą DPS.

resources
    | where type =~ 'microsoft.hybridcompute/machines/extensions'
    | where properties.type in ('WindowsAgent.SqlServer','LinuxAgent.SqlServer')
    | parse id with * '/providers/Microsoft.HybridCompute/machines/' machineName '/extensions/' *
    | parse properties with * 'timestampUTC : ' timestampUTC ';' *
    | project timestampUTC, subscriptionId, resourceGroup, machineName
    | order by timestampUTC desc

Kody błędów

W poniższej tabeli przedstawiono niektóre z typowych wartości statusu przesyłania DPS oraz czynności, które można podjąć w celu dalszego rozwiązywania problemów.

Wartość stanu przekazywania usługi DPS Kod błędu HTTP Sugestie dotyczące rozwiązywania problemów
0 Prawdopodobna przyczyna: zapora blokuje przesyłanie danych do usługi DPS. Otwórz zaporę do punktu końcowego DNS dla usługi DPS (TCP, port: 443).
OK 200 Połączenie działa zgodnie z oczekiwaniami.
Bad request 400 Możliwa przyczyna: nazwa zasobu (wystąpienie programu SQL Server lub nazwa bazy danych) nie jest zgodna z konwencjami nazewnictwa zasobów platformy Azure. Jeśli na przykład nazwa bazy danych to zastrzeżone słowo.
Unauthorized 401 Prawdopodobna przyczyna: rozszerzenie jest skonfigurowane do wysyłania danych za pośrednictwem serwera proxy HTTP, który wymaga uwierzytelniania. Korzystanie z serwera proxy HTTP wymagającego uwierzytelniania nie jest obecnie obsługiwane. Użyj nieuwierzytelnionego serwera proxy HTTP lub bez serwera proxy.
Forbidden 403 Jeśli agent usługi Azure Connected Machine działa zgodnie z oczekiwaniami i ten błąd nie zostanie rozwiązany po ponownym uruchomieniu, utwórz zgłoszenie do pomocy technicznej firmy Microsoft za pośrednictwem witryny Azure Portal.
NotFound 404 Punkt końcowy, z którego próbuje nawiązać połączenie rozszerzenie, nie istnieje.

Aby sprawdzić, z którym punktem końcowym próbuje nawiązać połączenie, przeszukaj dzienniki pod kątem dataprocessingservice. Ten warunek może wystąpić, jeśli agent usługi Azure Connected Machine został wdrożony i połączony z regionem świadczenia usługi Azure, w którym dostawca zasobów Microsoft.AzureArcData nie jest jeszcze dostępny. ponownie wdrożyć agenta połączonej maszyny platformy Azure w regionie, w którym jest dostępny dostawca zasobów Microsoft.AzureArcData dla serwera aSQL włączonego przez usługę Azure Arc. Zobacz również Dostępność regionów.

Istnieje możliwość, że pamięć podręczna programu rozpoznawania nazw DNS nie jest odświeżona na Twoim komputerze. Aby odświeżyć:
— W systemie Windows uruchom polecenie: ipconfig /flushdns
— w systemie Linux (jeśli jest używana systemd) uruchom polecenie: sudo resolvectl flush-caches
Conflict 409 Prawdopodobna przyczyna: tymczasowy błąd występujący wewnątrz usługi DPS. Jeśli to nie rozwiąże problemu, utwórz zgłoszenie do pomocy technicznej firmy Microsoft za pośrednictwem witryny Azure Portal.
InternalServerError 500 Jest to błąd, który występuje wewnątrz usługi DPS. Utwórz zgłoszenie do pomocy technicznej firmy Microsoft za pośrednictwem witryny Azure Portal.