Partekatu bidez


Solución de problemas de conectividad con el servicio de procesamiento de datos y los puntos de conexión de telemetría

Se aplica a:SQL Server

Además de los puntos de conexión habituales, la extensión de Azure Arc para SQL Server se conecta a otros dos puntos de conexión:

  • Punto de conexión del servicio de procesamiento de datos (DPS)

    La información de inventario recopilada sobre instancias, bases de datos, grupos de disponibilidad y datos de uso de SQL Server para fines de facturación se envía a este punto de conexión.

  • Punto de conexión de telemetría

    Los registros del agente de Azure Connected Machine, la extensión de Azure para los registros de SQL Server y los datos de vistas de administración dinámica (DMV) se envían a este punto de conexión.

La comunicación con estos puntos de conexión usa HTTPS con SSL/TLS y el puerto TCP/443 para conexiones seguras cifradas. El agente inicia la comunicación para enviar los datos a Azure. Azure nunca inicia la comunicación. Por lo tanto, la conectividad con estos puntos de conexión es unidireccional.

Cuando se bloquee la comunicación a estos puntos de conexión, el servicio presentará los siguientes síntomas:

Estado actual de la extensión de Azure

Puedes ver el estado actual de la extensión de Azure para SQL Server en el portal. El estado se actualiza cada 15 minutos.

Estado correcto:

Captura de pantalla del portal para la extensión de Azure para SQL Server en un estado correcto.

Estado incorrecto:

Captura de pantalla del portal de la extensión de Azure para SQL Server en un estado no saludable.

Compruebe si tiene un problema al conectarse a los puntos de conexión de telemetría o DPS

Hay dos formas de comprobar si tiene problemas al conectarse a los puntos de conexión de telemetría o DPS.

Compruebe la extensión de Azure para ver el estado de SQL Server en Azure Portal

Si está conectado a Azure en general, la extensión de Azure para SQL Server notifica su estado en Azure Portal.

  • Vaya a la vista Máquinas: Azure Arc en Azure Portal, busque la máquina por su nombre y selecciónela.
  • Seleccione Extensiones.
  • Seleccione WindowsAgent.SqlServer o LinuxAgent.SqlServer para mostrar los detalles.
  • Examine el Mensaje de estado y el valor uploadStatus. Si no es OK, hay un problema al conectarse al DPS. Si es 0, es probable que haya un firewall que bloquee la comunicación con el punto de conexión de DPS. Puede haber detalles adicionales en el mensaje de estado o el código de error uploadStatus que puede proporcionar información sobre el problema de conectividad.

Compruebe la extensión de Azure para ver los registros de SQL Server

El archivo de registro de extensión está en:

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

El nombre del archivo de registro depende de la versión de la extensión de Azure para SQL Server. Para la versión más reciente de la extensión de Azure para SQL Server, el archivo de registro es el siguiente:

unifiedagent.log

Para la versión 1.1.24724.69 de la extensión y versiones anteriores, el archivo de registro es:

ExtensionLog_0.log

Compruebe si hay entradas de registro que indican un problema al conectarse a los puntos de conexión de telemetría o DPS.

Sondeo de puntos de conexión de servidor web

Puede usar varias herramientas para sondear los puntos de conexión del servidor web para DPS y telemetría. Por ejemplo, Invoke-WebRequest o curl.

En el ejemplo siguiente se usa Invoke-Webrequest:

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

Un posible código de estado de respuesta es:

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

Se espera un código 401 porque no hay ninguna ruta no autenticada en el punto de conexión de telemetría.

Para DPS:

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

Para Virginia del Gobierno de EE. UU., reemplace arcdataservices.com con arcdataservices.azure.us. Este ejemplo sería:

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

Un posible código de estado de respuesta es:

StatusCode        : 200

StatusDescription : OK

Se espera 200, ya que hay una ruta no autenticada.

Conectividad de sondeo a todas las regiones

Puede sondear la conectividad a todas las regiones con el script de PowerShell test-connectivity.ps1.

Nota:

Para la región de Virginia del Gobierno de EE. UU., reemplace por arcdataservices.comarcdataservices.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)

Comprobación de la compatibilidad de versiones de TLS

El punto de conexión del servicio de procesamiento de datos admite las siguientes versiones de TLS: TLS 1.2 y 1.3. No se admiten Windows Server 2012 ni versiones anteriores.

En el caso de los puntos de conexión de telemetría, Windows Server 2012 R2 y versiones anteriores no se admiten.

Si se usa una versión tls no admitida, es posible que vea un error en el registro.

<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.

Referencia de puntos de conexión

Para conectarse a Azure, los puntos de conexión usan *.arcdataservices.com.

Segundo plano adicional

La extensión de Azure para SQL Server usa los siguientes puntos de conexión:

  • DPS: dataprocessingservice.<region>.arcdataservices.com, o para la región de Virginia del Gobierno de EE. UU., *.<region>.arcdataservices.azure.us.
  • Telemetría telemetry.<region>.arcdataservices.com

Sustituya <region> por el nombre corto de la región de Azure donde se encuentra el recurso de la máquina de Arc. El nombre corto se deriva del nombre de la región de Azure sin espacios y en minúsculas.

Por ejemplo, si el recurso de la máquina de Arc se encuentra en el este de EE. UU. 2, el nombre corto de la región es eastus2 y el punto de conexión de telemetría es el siguiente:

telemetry.eastus2.arcdataservices.com

Si la extensión es anterior al 11 de marzo de 2024, podría usar puntos de conexión anteriores. Actualice la extensión para usar el punto de conexión actual.

Nota:

Los valores del punto de conexión antes de *.arcdataservices.com están sujetos a cambios.

Uso de un servidor proxy HTTPS para la conectividad saliente

Si la red requiere el uso de un servidor proxy HTTPS para la conectividad saliente, puede obtener más información sobre cómo configurarlo en Actualización o eliminación de la configuración de proxy.

Consulta de Azure Resource Graph para estadísticas de carga de telemetría

Use Azure Resource Graph para consultar el estado de carga de su entorno.

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

Búsqueda de extensiones de SQL que no se han conectado a DPS en mucho tiempo

Consulte Azure Resource Graph para buscar extensiones que no se han conectado a DPS recientemente.

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 error

En la tabla siguiente se muestran algunos de los valores comunes de estado de carga de DPS y lo que puede hacer para solucionar problemas.

Valor de estado de carga de DPS Código de error HTTP Sugerencias de solución de problemas
0 Causa probable: un firewall bloquea la transmisión de los datos al DPS. Abra el firewall en el punto de conexión DNS para DPS (TCP, puerto: 443).
OK 200 La conexión funciona según lo previsto.
Bad request 400 Causa posible: el nombre del recurso (instancia de SQL Server o nombre de base de datos) no se ajusta a las convenciones de nomenclatura de recursos de Azure. Por ejemplo, si el nombre de la base de datos es una palabra reservada.
Unauthorized 401 Causa probable: la extensión está configurada para enviar datos a través de un proxy HTTP que requiere autenticación. Actualmente no se admite el uso de un proxy HTTP que requiera autenticación. Use un proxy HTTP no autenticado o ningún proxy.
Forbidden 403 Asegúrese de que el Microsoft.AzureArcData proveedor de recursos está registrado en la suscripción. Si el agente de Azure Connected Machine funciona según lo previsto y este error no se resuelve después de un reinicio, cree un caso de soporte técnico con el Soporte técnico de Microsoft a través de Azure Portal.
NotFound 404 El punto de conexión al que la extensión intenta conectarse no existe.

Para comprobar a qué punto de conexión intenta conectarse, busque los registros de dataprocessingservice. Esta condición puede ocurrir si el agente de Azure Connected Machine se ha implementado y conectado a una región de Azure en la que el Microsoft.AzureArcData proveedor de recursos aún no está disponible. Vuelva a implementar el agente de Azure Connected Machine en una región en la que esté disponible el proveedor de recursos Microsoft.AzureArcData para aSQL Server habilitado por Azure Arc. Consulte también Disponibilidad de la región.
Es posible que la caché del resolutor de DNS no se actualice para tu máquina. Para actualizar:
- En Windows, ejecute: ipconfig /flushdns
- En Linux (si systemd se usa) ejecute: sudo resolvectl flush-caches
Conflict 409 Causa probable: error temporal que se produce dentro del DPS. Si esto no se resuelve a sí mismo, cree un caso de soporte técnico con el soporte técnico de Microsoft a través de Azure Portal.
InternalServerError 500 Se trata de un error que se produce dentro del DPS. Crea un caso de soporte técnico con el Soporte técnico de Microsoft a través de Azure Portal.