Come monitorare le connessioni da punto a sito per rete WAN virtuale
Questa sezione illustra come creare una cartella di lavoro di Azure che mostra i dati pertinenti dei client VPN utente connessi ad Azure rete WAN virtuale.
Prima di iniziare
Per completare la procedura descritta in questo articolo, è necessario avere una rete WAN virtuale, un hub e un Gateway VPN utente. Per creare queste risorse, seguire la procedura descritta in questo articolo: Creare una rete WAN virtuale, un hub e un gateway
Architettura della soluzione della cartella di lavoro
Quando si lavora con Azure rete WAN virtuale e si esaminano le metriche, viene spesso eseguita dall'interno del contesto di una cartella di lavoro di Azure. In questa soluzione si userà ciò che è già disponibile nella cartella di lavoro di Azure e lo arricchire con altri dettagli, in particolare sulle connessioni attive.
AzureDiagnostics: Questi log vengono ricevuti abilitando il debug P2S tramite le impostazioni di debug di Monitoraggio di Azure e abilitando i log seguenti: GatewayDiagnosticLog, IKEDiagnosticLog, P2SDiagnosticLog, AllMetrics. Alcuni log sono rumorosi e costosi relativi ai costi di Log Analytics, specialmente IKEDiagnostics.
Get-AzP2sVpnGatewayDetailedConnectionHealth: Si tratta di un comando di PowerShell (in esecuzione in un'app per le funzioni) per ottenere i dettagli delle sessioni attive. Questo comando supporta solo l'archiviazione dei dati in un account di archiviazione in base a una chiave di firma di accesso condiviso.
La figura seguente illustra i componenti coinvolti nella soluzione suggerita:
Il servizio VPN è in esecuzione nel gateway VPN VWAN di Azure vWAN. Ha associato metriche e impostazioni di debug che possono essere lette da una cartella di lavoro di Azure. Per ottenere le informazioni aggiuntive che il comando di PowerShell può fornire, è possibile scegliere di eseguire questo comando in un'app per le funzioni di Azure. Dall'app per le funzioni viene archiviato l'output in un account di archiviazione di Azure.
L'output archiviato nell'account di archiviazione viene recuperato dall'interno della cartella di lavoro usando una funzione speciale denominata "externaldata".
Creare un account di archiviazione di Azure
Nella barra Delle risorse di ricerca del portale digitare Account di archiviazione.
Selezionare Account di archiviazione nei risultati. Nella pagina Account di archiviazione selezionare + Crea per aprire la pagina Crea un account di archiviazione .
Nella scheda Nozioni di base della pagina Crea rete WAN compilare i campi. Modificare i valori di esempio da applicare all'ambiente.
- Sottoscrizione: selezionare la sottoscrizione da usare
- Gruppo di risorse: Creare nuovi o usare esistente
- Nome account di archiviazione: digitare il nome che si vuole chiamare l'account di archiviazione
- Area: selezionare un'area per l'account di archiviazione
- Prestazioni: Standard o Premium. Standard è adeguato ai nostri scopi di monitoraggio
- Ridondanza: scegliere tra archiviazione con ridondanza locale, archiviazione con ridondanza geografica, archiviazione con ridondanza della zona e archiviazione con ridondanza geografica
Al termine della compilazione dei campi, nella parte inferiore della pagina selezionare Avanti: Avanzate>.
Nella pagina Avanzate compilare i campi seguenti.
- Richiedere il trasferimento sicuro per le operazioni dell'API REST: scegliere Abilitato.
- Abilitare l'accesso pubblico DEL BLOB: scegliere Disabilitato.
- Abilitare l'accesso alla chiave dell'account di archiviazione: scegliere Abilitato.
- Impostazione predefinita per l'autorizzazione di Azure Active Directory nel portale di Azure: scegliere Abilitato.
- Versione minima TLS: scegliere versione 1.2.
Selezionare Rivedi e crea nella parte inferiore per eseguire la convalida.
Dopo aver superato la convalida, selezionare Crea per creare l'account di archiviazione.
Creare un contenitore
Al termine della distribuzione, passare alla risorsa.
Nel pannello sinistro selezionare Contenitori in Archiviazione dati.
Selezionare + Contenitore per creare un nuovo contenitore.
Digitare un nome per il contenitore e selezionare Crea.
Creare e caricare BLOB nel contenitore
Nel computer aprire un'applicazione editor di testo, ad esempio Blocco note.
Lasciare vuoto il file di testo e selezionare File -> Salva con nome.
Salvare il file di testo vuoto con un nome scelto seguito dall'estensione .json .
Indietro alla sezione Contenitori nel portale.
Selezionare nella seconda riga, che corrisponde al contenitore creato (non $logs).
Se viene visualizzato questo messaggio di avviso rosso che indica ""Non si dispone dell'autorizzazione...", selezionare Passa alla chiave di accesso come metodo di autenticazione. Si trova sotto la casella di avviso rosso.
Selezionare Carica.
Selezionare il file corrispondente al file JSON vuoto nel computer e selezionare Carica.
Dopo il caricamento del file, selezionare nel file JSON e passare alla scheda Genera firma di accesso condiviso .
In Metodo di firma scegliere Chiave account.
In Autorizzazioni assegnare la chiave alle autorizzazioni seguenti: lettura, aggiunta, creazione e scrittura.
Scegliere una data e un'ora di scadenza per la chiave.
Selezionare Genera token di firma di accesso condiviso e URL.
Copiare il token di firma di accesso condiviso BLOB e l'URL della firma di accesso condiviso BLOB in una posizione sicura.
Creare un'app per le funzioni di Azure
Nella barra Delle risorse di ricerca digitare App per le funzioni nel portale.
Selezionare App per le funzioni nei risultati. Nella pagina App per le funzioni selezionare + Crea per aprire la pagina Crea app per le funzioni .
Nella scheda Nozioni di base della pagina Crea rete WAN compilare i campi. Modificare i valori di esempio da applicare all'ambiente.
- Sottoscrizione: selezionare la sottoscrizione da usare
- Gruppo di risorse: Creare nuovi o usare esistente
- Nome app per le funzioni: scegliere un nome per l'app per le funzioni
- Pubblica: selezionare codice
- Stack di runtime: selezionare PowerShell Core
- Versione: scegliere 7.0 (o la versione preferita)
- Area: scegliere l'area preferita
Le schede rimanenti sono facoltative per modificare, quindi è possibile selezionare Rivedi e crea e quindi selezionare Crea al passaggio della convalida.
Passare alla risorsa app per le funzioni .
Selezionare Identità in Impostazioni nel pannello sinistro. Attivare il pulsante Stato su Attiva per Sistema assegnato e selezionare Salva.
Selezionare Configurazione in Impostazioni nel pannello sinistro.
Creare le 7 voci seguenti immettendo il nome e il valore, quindi selezionare OK dopo ogni valore.
Nome Valore "resourcegroup" gruppo di risorse "sasuri" @Microsoft.KeyVault(SecretUri=https://\<keyvaultname>.vault.azure.net/secrets/sasuri/\<version>)
--> aggiornare di conseguenza dopo la creazione dell'insieme di credenziali delle chiavi nella sezione successiva."sottoscrizione" ID sottoscrizione "tenantname" ID tenant "vpngw" Questo nome è simile <a guid-eastus-ps2-gw>. È possibile ottenerlo dalle impostazioni VPN utente dell'hub VWAN. Selezionare Salva.
Selezionare Funzioni nel pannello sinistro e selezionare + Crea.
Compilare i campi.
- Ambiente di sviluppo: sviluppare nel portale
- Modello: Trigger timer
- Nuova funzione: scegliere un nome per la funzione
- Pianificazione: immettere un'espressione cron del formato '{second} {minute} {hour} {day} {month} {day} {day} {day of the week}' per specificare la pianificazione
Selezionare Codice e test nel pannello sinistro e digitare il codice seguente nel file run.ps1 . Selezionare Salva.
# Input bindings are passed in via param block. param($Timer) # Get the current universal time in the default string format. $currentUTCtime = (Get-Date).ToUniversalTime() # The 'IsPastDue' property is "true" when the current function invocation is later than scheduled. if($Timer.IsPastDue){ Write-Host "PowerShell timer is running late!" } ## Write an information log with current time. Write-Host "PowerShell timer trigger function ran! TIME:$currentUTCtime" $tenantname = $env:appsetting_tenantname $subscription = $env:appsetting_subscription $resourceGroup = $env:appsetting_resourcegroup $vpngw = $env:appsetting_vpngw $sasuri = $env:appsetting_sasuri Write-Host "Connecting to Managed Identity..." connect-azaccount -tenant $tenantname -identity -subscription $subscription Write-Host "Executing File Update..." Get-AzP2sVpnGatewayDetailedConnectionHealth -name $vpngw -ResourceGroupName $resourceGroup -OutputBlobSasUrl $sasuri Write-Host "Function Execution Completed!"
Tornare alla pagina App per le funzioni e selezionare servizio app Editor nel pannello sinistro in Strumenti di sviluppo. Selezionare quindi Vai -->.
Passare a requirements.psd1 e rimuovere il commento dalla riga che inizia con 'Az'... come illustrato.
Affinché il comando get-AzP2sVpnGatewayDetailedConnectionHealth abbia esito positivo, è necessario disporre delle autorizzazioni appropriate per le informazioni. Passare al gruppo di risorse e scegliere "Controllo di accesso (IAM)" nel pannello sinistro. Corrisponde alla gestione delle identità e degli accessi. Assegnare l'accesso in lettura FunctionApp tramite il gruppo di risorse.
Creare un Azure Key Vault
Nella barra Cerca risorse del portale digitare Insiemi di credenziali delle chiavi.
Selezionare + Crea nei risultati per aprire la pagina Crea un insieme di credenziali delle chiavi .
Nella scheda Informazioni di base compilare i campi. Modificare i valori di esempio da applicare all'ambiente.
- Sottoscrizione: selezionare la sottoscrizione da usare.
- Gruppo di risorse: crearne uno nuovo o usarne uno esistente.
- Nome dell'account di archiviazione: digitare il nome che si vuole chiamare l'insieme di credenziali delle chiavi.
- Area: selezionare un'area per l'account di archiviazione.
- Piano tariffario: Standard o Premium. Lo standard è adeguato ai nostri scopi di monitoraggio.
Selezionare Avanti: Criteri di >accesso .
In Modello di autorizzazione scegliere Criteri di accesso dell'insieme di credenziali.
Lasciare disabilitate le opzioni in Accesso alle risorse .
In Criteri di accesso selezionare + Crea.
Selezionare Avanti per passare alla scheda Principale . Digitare il nome dell'app per le funzioni e selezionarlo.
Selezionare Avanti due volte per passare alla quarta scheda: Rivedi e crea e seleziona Crea nella parte inferiore.
Verrà ora visualizzato il criterio di accesso appena creato nella sezione Criteri di accesso . La modifica dei valori predefiniti nella scheda Rete è facoltativa, quindi selezionare Rivedi e crea nell'angolo in basso a sinistra.
Passare a Segreti in Oggetti nel pannello sinistro della risorsa dell'insieme di credenziali delle chiavi. Selezionare + Genera/Importa e aggiungi segreto come indicato di seguito:
- Nome: sasuri
- value: <SASURI>
- Abilitato: Sì
Indietro alla scheda Configurazione per l'app per le funzioni e modificare la voce seguente. Il valore proviene dal campo Identificatore segreto visualizzato dopo aver fatto clic sul segreto:
- Nome: "sasuri"
- Valore:
@Microsoft.KeyVault(SecretUri=https://\<keyvaultname>.vault.azure.net/secrets/sasuri/\<version>)
Creare una cartella di lavoro di Azure
La cartella di lavoro di Azure è ora pronta per la creazione. Si userà una combinazione di funzionalità predefinite e i dettagli della sessione aggiunti dalla soluzione dell'app per le funzioni.
Passare alla risorsa rete WAN virtuale e selezionare Informazioni dettagliate in Monitoraggio nel pannello a sinistra. Selezionare Cartelle di lavoro e quindi + Nuovo.
Aggiungere la query seguente alla cartella di lavoro. Sostituire "SASURI" con l'URI sas.
let P2Svpnconnections = (externaldata (resource:string, UserNameVpnConnectionHealths: dynamic) [ @"SASURI" ] with(format="multijson")); P2Svpnconnections | mv-expand UserNameVpnConnectionHealths | extend Username = parse_json(UserNameVpnConnectionHealths).UserName | extend VpnConnectionHealths = parse_json(parse_json(UserNameVpnConnectionHealths).VpnConnectionHealths) | mv-expand VpnConnectionHealths | extend VpnConnectionId = parse_json(VpnConnectionHealths).VpnConnectionId, VpnConnectionDuration = parse_json(VpnConnectionHealths).VpnConnectionDuration, VpnConnectionTime = parse_json(VpnConnectionHealths).VpnConnectionTime, PublicIpAddress = parse_json(VpnConnectionHealths).PublicIpAddress, PrivateIpAddress = parse_json(VpnConnectionHealths).PrivateIpAddress, MaxBandwidth = parse_json(VpnConnectionHealths).MaxBandwidth, EgressPacketsTransferred = parse_json(VpnConnectionHealths).EgressPacketsTransferred, EgressBytesTransferred = parse_json(VpnConnectionHealths).EgressBytesTransferred, IngressPacketsTransferred = parse_json(VpnConnectionHealths).IngressPacketsTransferred, IngressBytesTransferred = parse_json(VpnConnectionHealths).IngressBytesTransferred, MaxPacketsPerSecond = parse_json(VpnConnectionHealths).MaxPacketsPerSecond | extend PubIp = tostring(split(PublicIpAddress, ":").[0]) | project Username, VpnConnectionId, VpnConnectionDuration, VpnConnectionTime, PubIp, PublicIpAddress, PrivateIpAddress, MaxBandwidth, EgressPacketsTransferred, EgressBytesTransferred, IngressPacketsTransferred, IngressBytesTransferred, MaxPacketsPerSecond;
Per visualizzare i risultati, selezionare il pulsante blu Esegui query per visualizzare i risultati.
Se viene visualizzato l'errore seguente, tornare al file (vpnstatfile.json) nel BLOB del contenitore di archiviazione e rigenerare l'URL della firma di accesso condiviso. Incollare quindi l'URL di firma di accesso condiviso aggiornato nella query.
Salvare la cartella di lavoro in modo che venga restituita in un secondo momento.
Per le metriche seguenti, è necessario abilitare la registrazione diagnostica aggiungendo le impostazioni di diagnostica in portale di Azure. Compilare i campi obbligatori per la sottoscrizione e il gruppo di risorse. Per il tipo di risorsa digitare "microsoft.network/p2svpngateways". Aggiungere un'impostazione di diagnostica (o modificare l'impostazione di diagnostica corrente) per il gateway da punto a sito da monitorare.
Abilitare allLogs e allMetrics e scegliere di inviare all'area di lavoro Log Analytics come destinazione. Alcuni log sono rumorosi e potrebbero essere costosi (in particolare IKEDiagnosticLog). Di conseguenza, è possibile abilitare solo log specifici da visualizzare invece di abilitare allLogs.
Query di esempio
La sezione seguente illustra le query di esempio.
Connessioni utente da sito a sito con esito positivo con IP
Autenticazione EAP (Extensible Authentication Protocol) completata
Informazioni sull'utente VPN da sito a sito
Connessioni VPN da sito a sito riuscite per utente
Connessioni VPN da sito a sito
Connessioni VPN da sito a sito riuscite
Connessioni VPN da sito a sito non riuscite
Numero di connessioni VPN per P2SDiagnosticLog
IKEDiagnosticLog
Dettagli aggiuntivi sulla diagnostica IKE
Statistiche VPN da sito a sito
Passaggi successivi
Per altre informazioni sulle domande frequenti, vedere la pagina rete WAN virtuale domande frequenti.