Compartilhar via


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

Aplica-se:SQL Server

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

  • Ponto de extremidade 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 esse ponto de extremidade.

  • Endpoint de telemetria

    Os logs do Azure Connected Machine Agent, os logs da extensão do Azure para o SQL Server e os dados das Exibições de Gerenciamento Dinâmico (DMV) são enviados para esse ponto de extremidade.

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

Quando a comunicação com esses pontos de extremidade é bloqueada, o serviço tem os seguintes sintomas:

Estado atual da extensão do Azure

Você pode exibir o estado atual da extensão do Azure para SQL Server no portal. Os dados são atualizados a cada 30 minutos.

Estado saudável

Captura de tela do portal de extensão do Azure para SQL Server em bom estado.

Estado Insalubre

Captura de tela da extensão do portal do Azure para SQL Server em um estado não íntegro.

Verifique se você tem um problema ao se conectar aos pontos de extremidade de DPS ou telemetria

Existem duas maneiras de verificar se você enfrenta problemas de conectividade com o DPS ou os endpoints de telemetria.

Verifique o status da Extensão 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, 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 valor uploadStatus. 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 bloqueando a comunicação com o ponto de extremidade 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 os logs da Extensão do Azure para 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 da Extensão do Azure para SQL Server, o arquivo de log é:

unifiedagent.log

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

ExtensionLog_0.log

Verifique as entradas de log que indiquem um problema de conexão com o DPS ou com os endpoints de telemetria.

Investigação de pontos de extremidade de servidor Web

Você pode usar várias ferramentas para sondar os endpoints 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á uma rota não autenticada no endpoint de telemetria.

Para o DPS:

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

Para o governo dos EUA na 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.

Verificar conectividade para todas as regiões

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

Nota

Para a região do governo dos EUA na Virgínia, 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)

Verificar a compatibilidade de versão do TLS

O ponto de extremidade do serviço de processamento de dados dá suporte às seguintes versões do TLS: TLS 1.2 e 1.3. Não há suporte para o Windows Server 2012 e versões mais antigas.

Para pontos de extremidade de telemetria, não há suporte para o Windows Server 2012 R2 e versões mais antigas.

Se uma versão do TLS sem suporte estiver sendo usada, você poderá ver um erro no log

<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 de ponto de extremidade

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

Plano de fundo adicional

A Extensão do Azure para SQL Server usa os seguintes pontos de extremidade:

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

Substitua <region> pelo nome curto da região do Azure onde o recurso de máquina Arc está localizado. O nome curto é 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 em East US 2, o nome abreviado da região será eastus2 e o ponto de extremidade da telemetria é:

telemetry.eastus2.arcdataservices.com

Se sua extensão for anterior a 11 de março de 2024, ela poderá usar endpoints mais antigos. Atualize sua extensão para usar o endpoint atual.

Nota

Os valores de endpoint 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 configurações de proxy.

Consulte o Azure Resource Graph para obter estatísticas de upload de telemetria

Use o Azure Resource Graph para consultar o status de upload 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

Localizar 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 do Erro

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

Valor do status de upload do DPS Código de erro do HTTP Sugestões para resolução de problemas
0 Causa provável: um firewall está bloqueando a transmissão dos dados para o DPS. Abra o firewall para o ponto de extremidade DNS do 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 para os 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 por meio de um proxy HTTP que requer autenticação. No momento, não há suporte para o uso de um proxy HTTP que exija autenticação. Utilize um proxy HTTP sem autenticação ou não utilize proxy algum.
Forbidden 403 Verifique se o Microsoft.AzureArcData provedor de recursos está registrado na assinatura. Se o Azure Connected Machine Agent estiver funcionando conforme o esperado e esse erro não se resolver 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 a qual endpoint ele está tentando se conectar, pesquise por dataprocessingservice nos logs. 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 Azure Connected Machine Agent em uma região em que o provedor de recursos Microsoft.AzureArcData para um SQL Server habilitado pelo Azure Arc esteja disponível. Confira também a disponibilidade da região.
É possível que o cache de resolvedor DNS não seja atualizado para seu computador. Para atualizar:
- Na 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 que ocorre 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 por meio do portal do Azure.