Risolvere i problemi di connettività agli endpoint del servizio di elaborazione dati e di telemetria
Si applica a:SQL Server
Oltre agli endpoint consueti, l'estensione Azure Arc per SQL Server effettua la connessione a due altri endpoint:
Endpoint del servizio di elaborazione dati (DPS)
Le informazioni di inventario raccolte su istanze di SQL Server, database, gruppi di disponibilità e dati di utilizzo per scopi di fatturazione vengono inviate a questo endpoint.
Endpoint di telemetria
I log dell'agente di Azure Connected Machine, i log dell'estensione Azure per SQL Server e i dati DMV (Dynamic Managed View) vengono inviati a questo endpoint.
La comunicazione con questi endpoint usa HTTPS con SSL/TLS e la porta TCP/443 per realizzare connessioni protette crittografate. L'agente avvia la comunicazione per inviare i dati ad Azure. Azure non avvia mai la comunicazione. Di conseguenza, la connettività a questi endpoint è esclusivamente unidirezionale.
Quando la comunicazione con questi endpoint viene bloccata, il servizio ha i sintomi seguenti:
- Le istanze di SQL Server non vengono visualizzate nel portale di Azure. L'endpoint DPS è bloccato.
- I dati non vengono visualizzati nella visualizzazione dashboard delle prestazioni dell'istanza di SQL Server. Se l'endpoint DPS è sbloccato ma l'endpoint di telemetria è bloccato.
- Viene visualizzato un errore nello stato dell'estensione Azure per SQL Server nel portale di Azure Esaminare Controllare lo stato dell'estensione Azure per SQL Server nel portale di Azure.
- Viene visualizzato un errore nel log dell'estensione Azure per SQL Server. Esaminare Controllare i log dell'estensione Azure per SQL Server.
Stato corrente dell'estensione Azure
È possibile visualizzare lo stato corrente dell'estensione Azure per SQL Server nel portale. Lo stato viene aggiornato ogni 15 minuti.
Stato integro:
Stato non integro:
Controllare se si verifica un problema durante la connessione agli endpoint DPS o di telemetria
Esistono due modi per controllare eventuali problemi di connettività agli endpoint DPS o di telemetria.
Controllare lo stato dell'estensione Azure per SQL Server nel portale di Azure
Se è connessa ad Azure in generale, l'estensione Azure per SQL Server segnala lo stato nel portale di Azure.
- Passare alla vista Computer - Azure Arc nel portale di Azure e individuare il computer in base al nome e selezionarlo.
- Selezionare Estensioni.
- Selezionare WindowsAgent.SqlServer o LinuxAgent.SqlServer per visualizzare i dettagli.
- Esaminare il messaggio di stato e il valore
uploadStatus
. Se è diverso da OK, si è verificato un problema con la connessione al DPS. Se è 0, è probabile che sia presente un firewall che blocca la comunicazione con l'endpoint DPS. Nel messaggio di stato o nel codice di erroreuploadStatus
potrebbero essere presenti dettagli aggiuntivi che forniscono informazioni dettagliate sul problema di connettività.
Controllare i log dell'estensione Azure per SQL Server
Il file di resoconto dell'estensione si trova in:
C:\ProgramData\GuestConfig\extension_logs\Microsoft.AzureData.WindowsAgent.SqlServer\
Il nome del file di log dipende dalla versione dell'estensione di Azure per SQL Server. Per la versione più recente dell'estensione di Azure per SQL Server, il file di log è:
unifiedagent.log
Per la versione 1.1.24724.69
dell'estensione e precedenti, il file di resoconto è:
ExtensionLog_0.log
Verificare la presenza di voci di log che indicano un problema di connessione agli endpoint DPS o di telemetria.
Endpoint del server Web probe
È possibile usare vari strumenti per eseguire il probe degli endpoint del server Web per il DPS e la telemetria. Ad esempio, Invoke-WebRequest
o curl
.
Nell'esempio seguente viene usato Invoke-Webrequest
:
Invoke-WebRequest telemetry.<region>.arcdataservices.com
Un possibile codice di stato della risposta è:
Invoke-WebRequest: Response status code does not indicate success: 401 (Unauthorized).
Si prevede un codice 401 in quanto non è presente alcuna route non autenticata nell'endpoint di telemetria.
Per DPS:
Invoke-WebRequest dataprocessingservice.<region>.arcdataservices.com
Un possibile codice di stato della risposta è:
StatusCode : 200
StatusDescription : OK
Questo dovrebbe restituire un codice 200 in quanto è presente una route non autenticata.
Connettività probe in tutte le aree
È possibile eseguire il probe della connettività in tutte le aree con lo script di PowerShell test-connectivity.ps1.
#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)
Riferimento dell'endpoint
Per connettersi ad Azure, gli endpoint usano *.arcdataservices.com
.
Sfondo aggiuntivo
A partire da marzo 12 2024, l'estensione di Azure per SQL Server usa gli endpoint seguenti:
- DPS:
dataprocessingservice.<region>.arcdataservices.com
- Telemetria
telemetry.<region>.arcdataservices.com
Sostituire <region>
con il nome breve dell'area di Azure in cui si trova la risorsa del computer di Arc. Il nome breve è derivato dal nome dell'area di Azure senza spazi e con tutte le lettere minuscole.
Ad esempio, se la risorsa del computer di Arc si trova negli Stati Uniti orientali 2, il nome breve dell'area è eastus2
e l’endpoint di telemetria è:
telemetry.eastus2.arcdataservices.com
Se l'estensione è precedente al 11 marzo 2024, potrebbe usare endpoint meno recenti. Aggiorna l'estensione per usare l'endpoint corrente.
Nota
I valori dell'endpoint prima di *.arcdataservices.com
sono soggetti a modifiche.
Usare un server proxy HTTPS per la connettività in uscita
Se la rete richiede l'uso di un server proxy HTTPS per la connettività in uscita, è possibile trovare ulteriori informazioni sulla configurazione in Aggiornare o rimuovere le impostazioni proxy.
Eseguire query su Azure Resource Graph per ottenere statistiche di caricamento di telemetria
Usare Azure Resource Graph per eseguire una query sullo stato di caricamento per l'ambiente in uso.
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
Trovare le estensioni SQL che non sono connesse al servizio Device Provisioning in un lungo periodo di tempo
Eseguire query su Azure Resource Graph per trovare le estensioni che non sono state connesse al servizio DPS di recente.
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
Codici di errore
La tabella seguente illustra alcuni dei valori comuni dello stato di caricamento di DPS e che cose si può fare per risolvere ulteriori problemi.
Valore dello stato di caricamento di DPS | Codice di errore HTTP | Suggerimenti per la risoluzione dei problemi |
---|---|---|
0 |
Causa probabile: un firewall blocca la trasmissione dei dati al DPS. Aprire il firewall verso l'endpoint DNS per il DPS (TCP, porta: 443). | |
OK |
200 | La connessione funziona come previsto. |
Bad request |
400 | Possibile causa: il nome della risorsa (istanza di SQL Server o il nome del database) non è conforme alle convenzioni di denominazione delle risorse di Azure. Ad esempio, se il nome del database è una parola riservata. |
Unauthorized |
401 | Causa probabile: l'estensione è configurata per l'invio di dati attraverso un proxy HTTP che richiede l'autenticazione. L'uso di un proxy HTTP che richiede l'autenticazione non è attualmente supportato. Usare un proxy HTTP non autenticato o nessun proxy. |
Forbidden |
403 | Se per il resto l'agente di Azure Connected Machine funziona come previsto e questo errore non si risolve dopo un riavvio, creare un caso di supporto presso il supporto tecnico Microsoft attraverso il portale di Azure. |
NotFound |
404 | L'endpoint a cui l'estensione sta provando a connettersi non esiste. Per verificare l'endpoint a cui si sta tentando di connettersi, cercare i log dataprocessingservice . Questa condizione può verificarsi se l'agente di Azure Connected Machine è stato implementato e connesso a un'area di Azure in cui il provider di risorse Microsoft.AzureArcData non è ancora disponibile.
Implementare nuovamente l'agente di Azure Connected Machine in un'area in cui il provider di risorse Microsoft.AzureArcData per un SQL Server abilitato da Azure Arc è disponibile. Si veda Disponibilità a livello di area.È possibile che la cache del resolver DNS non venga aggiornata per il computer. Per aggiornare: - In Windows eseguire: ipconfig /flushdns - In Linux (se è in uso systemd ) eseguire: sudo resolvectl flush-caches |
Conflict |
409 | Causa probabile: si verifica un errore temporaneo all'interno del DPS. Se non si risolve da solo, creare un caso di supporto presso il supporto tecnico Microsoft attraverso il portale di Azure. |
InternalServerError |
500 | Si tratta di un errore che si verifica all'interno del DPS. Creare un caso di supporto presso il supporto tecnico Microsoft attraverso il portale di Azure. |
Contenuto correlato
- Risolvere i problemi relativi all'estensione Azure per SQL Server
- Risolvere i problemi relativi alla valutazione delle procedure consigliate su SQL Server
- Configurare la valutazione delle procedure consigliate di SQL
- Visualizzare i database SQL Server - Azure Arc
- Gestire le opzioni di licenza e fatturazione di SQL Server
- Log attività di SQL Server abilitato da Azure Arc e database
- Dati raccolti da SQL Server con abilitazione Arc