Partilhar via


Solucionar problemas de conectividade com o serviço de processamento de dados e endpoints de telemetria

Aplica-se a:Servidor SQL

Além dos pontos de extremidade usuais, a extensão do Azure Arc para SQL Server se conecta a dois outros pontos de extremidade:

  • Endpoint do serviço de processamento de dados (DPS)

    As informações de inventário coletadas sobre instâncias do SQL Server, bancos de dados, grupos de disponibilidade e dados de uso para fins de cobrança são enviadas para este ponto de extremidade.

  • Ponto de acesso de telemetria

    Os logs do agente do Azure Connected Machine, a extensão do Azure para logs do SQL Server e os dados das Vistas de Gestão Dinâmica (DMV) são enviados para este ponto de extremidade.

A comunicação com esses pontos de extremidade usa HTTPS com SSL/TLS e a porta TCP/443 para conexões seguras e encriptadas. O agente inicia a comunicação para enviar os dados para o Azure. O Azure nunca inicia a comunicação. A conectividade com esses pontos finais é, portanto, apenas uma maneira.

Quando a comunicação para esses endpoints é bloqueada, o serviço apresenta os seguintes problemas:

Estado atual da extensão do Azure

Você pode exibir o estado atual da extensão do Azure para SQL Server no portal. O status é atualizado a cada 15 minutos.

Estado saudável:

Captura de ecrã da extensão do portal do Azure para SQL Server num estado saudável.

Estado insalubre:

Captura de ecrã do portal da extensão do Azure para SQL Server em um estado não saudável.

Verifique se tem problemas ao se conectar ao DPS ou aos endpoints de telemetria.

Há duas maneiras de verificar se tem problemas de conectividade com o DPS ou os endpoints de telemetria.

Verifique o status da Extensão do Azure para SQL Server no portal do Azure

Se estiver conectado ao Azure em geral, a Extensão do Azure para SQL Server relatará seu status no portal do Azure.

  • Navegue até a exibição Máquinas - Azure Arc no portal do Azure e localize a máquina pelo nome e selecione-a.
  • Selecione Extensões.
  • Selecione WindowsAgent.SqlServer ou LinuxAgent.SqlServer para exibir os detalhes.
  • Observe a mensagem de status e o uploadStatus valor. Se for algo diferente de OK, há um problema com a conexão com o DPS. Se for 0, é provável que haja um firewall a bloquear a comunicação com o endpoint DPS. Pode haver mais detalhes na mensagem de status ou no código de erro uploadStatus que podem fornecer informações sobre o problema de conectividade.

Verifique a extensão do Azure para logs do SQL Server

O arquivo de log de extensão está em:

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

O nome do arquivo de log depende da versão da Extensão do Azure para SQL Server. Para a versão mais recente do Azure Extension for SQL Server, o arquivo de log é:

unifiedagent.log

Para a versão de extensão 1.1.24724.69 e anteriores, o arquivo de log é:

ExtensionLog_0.log

Verifique se há entradas de log que indiquem um problema de conexão com o DPS ou os pontos de extremidade de telemetria.

Sondar endpoints do servidor web

Você pode usar várias ferramentas para sondar os pontos de extremidade do servidor web para DPS e telemetria. Por exemplo, Invoke-WebRequest ou curl.

O exemplo a seguir usa Invoke-Webrequest:

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

Um possível código de status de resposta é:

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

401 é esperado porque não há nenhuma rota não autenticada no ponto de extremidade de telemetria.

Para DPS:

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

Para o governo dos EUA Virgínia, substitua arcdataservices.com por arcdataservices.azure.us. Este exemplo seria:

Invoke-WebRequest dataprocessingservice.<region>.arcdataservices.azure.us

Um possível código de status de resposta é:

StatusCode        : 200

StatusDescription : OK

Espera-se 200, pois há uma rota não autenticada.

Conectividade da sonda para todas as regiões

Você pode investigar a conectividade com todas as regiões com o script PowerShell test-connectivity.ps1.

Observação

Para a região da Virgínia do governo dos EUA, substitua arcdataservices.com por arcdataservices.azure.us.

#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)

Verifique a compatibilidade da versão TLS

O ponto de extremidade do serviço de processamento de dados suporta as seguintes versões TLS: TLS 1.2 e 1.3. O Windows Server 2012 e versões mais antigas não são suportados.

Para endpoints de telemetria, Windows Server 2012 R2 e versões anteriores não é suportado.

Se estiver a ser utilizada uma versão TLS não suportada, poderá ver um erro no registo

<date time>|ERROR|SqlServerExtension.Service|Request failed with exception 'System.Net.Http.HttpRequestException: The SSL connection could not be established, see inner exception.

---> System.Security.Authentication.AuthenticationException: Authentication failed because the remote party sent a TLS alert: 'HandshakeFailure'.

---> System.ComponentModel.Win32Exception (0x80090326): The message received was unexpected or badly formatted.

Referência do ponto final

Para se conectar ao Azure, os pontos de extremidade usam *.arcdataservices.com.

Antecedentes adicionais

A extensão Azure para SQL Server usa os seguintes endpoints.

  • DPS: dataprocessingservice.<region>.arcdataservices.com, ou para a região da Virgínia do governo dos Estados Unidos, *.<region>.arcdataservices.azure.us.
  • Telemetria telemetry.<region>.arcdataservices.com

Substitua <region> pelo nome abreviado da região do Azure onde o recurso de máquina Arc está localizado. O nome abreviado é derivado do nome da região do Azure sem espaços e em minúsculas.

Por exemplo, se o recurso da máquina Arc estiver localizado no Leste dos EUA 2 , o nome abreviado da região será eastus2 e o ponto de extremidade de telemetria será:

telemetry.eastus2.arcdataservices.com

Se a sua extensão for anterior a 11 de março de 2024, pode estar a usar endpoints mais antigos. Atualize sua extensão para usar o ponto de extremidade atual.

Observação

Os valores dos pontos finais antes de *.arcdataservices.com estão sujeitos a alterações.

Usar um servidor proxy HTTPS para conectividade de saída

Se sua rede exigir o uso de um servidor proxy HTTPS para conectividade de saída, você poderá ler mais sobre como configurar isso em Atualizar ou remover as configurações de proxy.

Consultar o Gráfico de Recursos do Azure para estatísticas de carregamento de telemetria

Use o Gráfico de Recursos do Azure para consultar o status de carregamento do seu ambiente.

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

Encontre extensões SQL que não se conectam ao DPS há muito tempo

Consulte o Azure Resource Graph para localizar extensões que não se conectaram ao DPS recentemente.

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

Códigos de erro

A tabela a seguir mostra alguns dos valores comuns de status de carregamento do DPS e o que você pode fazer para solucionar problemas adicionais.

Valor do estado de carregamento do DPS Código de erro HTTP Sugestões de solução de problemas
0 Causa provável: um firewall está bloqueando a transmissão dos dados para o DPS. Abra o firewall para permitir a comunicação com o ponto de extremidade DNS para o DPS (TCP, porta: 443).
OK 200 A conexão está funcionando conforme o esperado.
Bad request 400 Causa possível: o nome do recurso (instância do SQL Server ou nome do banco de dados) não está em conformidade com as convenções de nomenclatura de recursos do Azure. Por exemplo, se o nome do banco de dados for uma palavra reservada .
Unauthorized 401 Causa provável: a extensão está configurada para enviar dados através de um proxy HTTP que requer autenticação. O uso de um proxy HTTP que requer autenticação não é suportado no momento. Utilize um proxy HTTP não autenticado ou não utilize proxy.
Forbidden 403 Verifique se o Microsoft.AzureArcData provedor de recursos está registrado na assinatura. Se o agente da Máquina Conectada do Azure estiver funcionando conforme o esperado e esse erro não se resolver sozinho após uma reinicialização, crie um caso de suporte com o Suporte da Microsoft por meio do portal do Azure.
NotFound 404 O ponto de extremidade ao qual a extensão está tentando se conectar não existe.

Para verificar qual endpoint ele está tentando se conectar, pesquise nos logs por dataprocessingservice. Essa condição pode acontecer se o agente do Azure Connected Machine foi implantado e conectado a uma região do Azure na qual o Microsoft.AzureArcData provedor de recursos ainda não está disponível. Reimplante o agente do Azure Connected Machine em uma região em que o Microsoft.AzureArcData provedor de recursos para aSQL Server habilitado pelo Azure Arc esteja disponível. Consulte também Disponibilidade da região.
É possível que o cache do resolvedor de DNS não seja atualizado para sua máquina. Para atualizar:
- Em execução do Windows: ipconfig /flushdns
- No Linux (se systemd estiver sendo usado) execute: sudo resolvectl flush-caches
Conflict 409 Causa provável: erro temporário acontecendo dentro do DPS. Se isso não se resolver, crie um caso de suporte com o Suporte da Microsoft por meio do portal do Azure.
InternalServerError 500 Este é um erro que está acontecendo dentro do DPS. Crie um caso de suporte com o Suporte da Microsoft através do portal do Azure.