Condividi tramite


Risolvere i problemi con lo strumento di diagnostica dell'infrastruttura sorvegliata

Questo articolo descrive l'uso dello strumento di diagnostica dell'infrastruttura sorvegliata per identificare e correggere gli errori comuni nella distribuzione, nella configurazione e nel funzionamento dell'infrastruttura sorvegliata. Sono inclusi il servizio Sorveglianza host (HGS), tutti gli host sorvegliati e i servizi di supporto, ad esempio DNS e Active Directory.

Si applica a: Windows Server 2022, Windows Server 2019, Windows Server 2016

Lo strumento di diagnostica può essere usato per eseguire un primo passaggio alla valutazione di un'infrastruttura sorvegliata che riporta errori, fornendo agli amministratori un punto di partenza per la risoluzione delle interruzioni e l'identificazione di asset non configurati correttamente. Lo strumento non è una sostituzione per una buona comprensione del funzionamento di un tessuto sorvegliato e serve solo per verificare rapidamente i problemi più comuni riscontrati durante le operazioni quotidiane.

La documentazione completa dei cmdlet usati in questo articolo è disponibile nelle informazioni di riferimento sul modulo HgsDiagnostics.

Nota

Quando si esegue lo strumento di diagnostica dell'infrastruttura sorvegliata (Get-HgsTrace-RunDiagnostics), è possibile che venga restituito uno stato non corretto, a indicare che la configurazione HTTPS viene interrotta quando in realtà non lo è o è inutilizzata. Questo errore può risultare indipendentemente dalla modalità di attestazione di HGS. Le possibili cause radice sono le seguenti:

  • HTTPS è effettivamente configurato/interrotto in modo non corretto
  • Si sta usando l'attestazione attendibile dell'amministratore e la relazione di trust viene interrotta. Ciò è indipendentemente dal fatto che HTTPS sia configurato correttamente, in modo non corretto o non in uso. La diagnostica restituirà tale stato non corretto solo quando è destinato a un host Hyper-V. Se la diagnostica è destinata al servizio Sorveglianza host, lo stato restituito sarà corretto.

Avvio rapido

È possibile diagnosticare un host sorvegliato o un nodo HGS richiamando il seguente comando da una sessione di Windows PowerShell con privilegi di amministratore locale:

Get-HgsTrace -RunDiagnostics -Detailed

In questo modo viene rilevato automaticamente il ruolo dell'host corrente e vengono diagnosticati eventuali problemi pertinenti che possono essere rilevati automaticamente. Tutti i risultati generati durante questo processo vengono visualizzati a causa della presenza dell'opzione -Detailed.

Nella parte restante di questo argomento verrà illustrata una procedura dettagliata sull'utilizzo avanzato di Get-HgsTrace per eseguire operazioni come la diagnosi di più host contemporaneamente e il rilevamento di errori di configurazione complessa tra nodi.

Panoramica della diagnostica

La diagnostica dell'infrastruttura sorvegliata è disponibile in qualsiasi host con strumenti e funzionalità correlate alle macchine virtuali schermate installate, inclusi gli host che eseguono Server Core. Attualmente, la diagnostica è inclusa nelle funzionalità/nei pacchetti seguenti:

  • Ruolo Servizio Sorveglianza host (HGS)
  • Supporto per Sorveglianza host per Hyper-V
  • Strumenti di schermatura VM per la gestione dell'infrastruttura
  • Strumenti di amministrazione remota del server

Ciò significa che gli strumenti di diagnostica saranno disponibili in tutti gli host sorvegliati, i nodi HGS, alcuni server di gestione dell'infrastruttura e qualsiasi workstation Windows 10 con Strumenti di amministrazione remota del server (RSAT) installati. La diagnostica può essere richiamata da uno dei computer su citati allo scopo di diagnosticare qualsiasi host sorvegliato o nodo HGS in un'infrastruttura sorvegliata; usando le destinazioni di traccia remota, la diagnostica può individuare e connettersi agli host diversi dal computer che esegue la diagnostica.

Ogni host di destinazione della diagnostica viene definito "destinazione di traccia". Le destinazioni di traccia vengono identificate dai relativi nomi host e ruoli. I ruoli descrivono la funzione eseguita da una determinata destinazione di traccia in un'infrastruttura sorvegliata. Attualmente, le destinazioni di traccia supportano i ruoli HostGuardianService e GuardedHost. Si noti che è possibile che un host occupi più ruoli contemporaneamente e che sia supportato anche dalla diagnostica, ma questo non deve essere eseguito negli ambienti di produzione. Gli host HGS e Hyper-V devono essere mantenuti separati e distinti in qualsiasi momento.

Gli amministratori possono avviare qualsiasi attività di diagnostica eseguendo Get-HgsTrace. Questo cmdlet esegue due funzioni distinte in base alle opzioni fornite in fase di esecuzione: raccolta di tracce e diagnosi. Questi due elementi combinati costituiscono lo strumento di diagnostica dell'infrastruttura sorvegliata nella sua interezza. Anche se non è richiesta in modo esplicito, la diagnostica più utile richiede tracce che possono essere raccolte solo con credenziali di amministratore nella destinazione di traccia. Se l’utente che esegue la raccolta di tracce detiene privilegi insufficienti, le tracce che richiedono l'elevazione dei privilegi avranno esito negativo mentre tutte le altre esito positivo. Ciò consente la diagnosi parziale nel caso in cui ad eseguire la valutazione sia un operatore con privilegi limitati.

Raccolta di tracce

Per impostazione predefinita, Get-HgsTrace si limiterà a raccogliere solo le tracce, salvandole in una cartella temporanea. Le tracce saranno quindi contenute all’interno di una cartella, denominata in base all'host di destinazione, in cui sono inseriti file formattati appositamente che descrivono la modalità di configurazione dell'host. Le tracce contengono anche metadati che descrivono il modo in cui la diagnostica è stata richiamata per raccogliere le tracce. Questi dati vengono usati dalla diagnostica per riattivare le informazioni riguardanti l'host durante l'esecuzione della diagnosi manuale.

Se necessario, le tracce possono essere esaminate manualmente. Tutti i formati sono leggibili (XML) o possono essere facilmente controllati usando strumenti standard (ad esempio, certificati X509 ed estensioni della shell di crittografia di Windows). Si noti tuttavia che le tracce non sono progettate per la diagnosi manuale ed è sempre più efficace elaborare le tracce con le strutture di diagnosi di Get-HgsTrace.

I risultati dell'esecuzione della raccolta di tracce non indicano l'integrità di un determinato host. Indicano semplicemente che le tracce sono state raccolte in maniera corretta. È necessario usare le funzionalità di diagnosi di Get-HgsTrace per determinare se le tracce indicano un ambiente con errori.

Usando il parametro -Diagnostic è possibile limitare la raccolta di tracce solo a quelle necessarie per gestire la diagnostica specificata. In questo modo si riduce la quantità di dati raccolti e le autorizzazioni necessarie per richiamare la diagnostica.

Diagnosi

Le tracce raccolte possono essere diagnosticate in base a Get-HgsTrace la posizione delle tracce tramite il parametro -Path e specificando l'opzione -RunDiagnostics. Inoltre, Get-HgsTrace può eseguire la raccolta e la diagnosi in un singolo passaggio fornendo l'opzione -RunDiagnostics e un elenco di destinazioni di traccia. Se non vengono fornite destinazioni di traccia, il computer corrente viene usato come destinazione implicita, con il relativo ruolo dedotto esaminando i moduli di Windows PowerShell installati.

La diagnosi fornirà risultati in un formato gerarchico che mostra le destinazioni di traccia, i set di diagnostica e la diagnostica individuale responsabili di un determinato errore. Gli errori includono elementi consigliati per la correzione e la risoluzione se è possibile stabilire quale azione deve essere eseguita successivamente. Per impostazione predefinita, i risultati di superamento della verifica diagnostica e quelli irrilevanti vengono nascosti. Per visualizzare tutti gli elementi testati dalla diagnostica, specificare l'opzione -Detailed. In questo modo tutti i risultati vengono visualizzati indipendentemente dal relativo stato.

È possibile limitare il set di diagnostica eseguito usando il -Diagnostic parametro . In questo modo è possibile specificare le classi di diagnostica da eseguire sulle destinazioni di traccia ed eliminare tutte le altre. Tra gli esempi di classi di diagnostica disponibili vi sono rete, procedure consigliate e hardware client. Consultare la documentazione cmdlet per trovare un elenco aggiornato della diagnostica disponibile.

Avviso

La diagnostica non è una sostituzione per una pipeline di monitoraggio e risposta agli eventi imprevisti avanzata. È disponibile un pacchetto di System Center Operations Manager per il monitoraggio delle infrastrutture sorvegliate, nonché vari canali del registro eventi che possono essere monitorati per rilevare i problemi in anticipo. La diagnostica può quindi essere usata per valutare rapidamente tali errori e stabilire un corso d’azione.

Diagnostica di destinazione

Get-HgsTrace opera su destinazioni di traccia. Una destinazione di traccia è un oggetto che corrisponde a un nodo HGS o a un host sorvegliato all'interno di un'infrastruttura sorvegliata. Può essere considerato come un'estensione di a PSSession, che include informazioni richieste solo dalla diagnostica, ad esempio il ruolo dell'host nell'infrastruttura. Le destinazioni possono essere generate in modo implicito (ad esempio, diagnosi locale o manuale) o in modo esplicito con il New-HgsTraceTarget cmdlet .

Diagnosi locale

Per impostazione predefinita, Get-HgsTrace si rivolge al localhost (ad esempio, dove viene invocato il cmdlet). Questa operazione viene definita destinazione locale implicita. La destinazione locale implicita viene usata solo quando non vengono fornite destinazioni nel parametro -Target e non vengono trovate tracce preesistenti in -Path.

La destinazione locale implicita usa l'inferenza del ruolo per determinare il ruolo svolto dall'host corrente nell'infrastruttura sorvegliata. Si basa sui moduli di Windows PowerShell installati, che corrispondono approssimativamente alle funzionalità installate nel sistema. La presenza del HgsServer modulo fa sì che la destinazione di traccia assuma il ruolo HostGuardianService e la presenza del HgsClient modulo fa sì che la destinazione di traccia assuma il ruolo GuardedHost. È possibile che un determinato host disponga di entrambi i moduli presenti nel qual caso verrà considerato sia un oggetto HostGuardianService che un GuardedHostoggetto .

Di conseguenza, l’invocazione predefinita della diagnostica per la raccolta di tracce a livello locale:

Get-HgsTrace

Equivale a quanto segue:

New-HgsTraceTarget -Local | Get-HgsTrace

Suggerimento

Get-HgsTrace può accettare destinazioni tramite la pipeline o direttamente tramite il parametro -Target. Non esiste alcuna differenza tra i due dal punto di vista operativo.

Diagnosi remota tramite destinazioni di traccia

È possibile diagnosticare in remoto un host generando destinazioni di traccia con informazioni di connessione remota. Tutto ciò che è necessario è il nome host e un set di credenziali in grado di connettersi tramite la comunicazione remota di Windows PowerShell.

$server = New-HgsTraceTarget -HostName "hgs-01.secure.contoso.com" -Role HostGuardianService -Credential (Enter-Credential)
Get-HgsTrace -RunDiagnostics -Target $server

In questo esempio viene generato un prompt per raccogliere le credenziali utente remote e quindi eseguire la diagnostica usando l'host remoto in per hgs-01.secure.contoso.com completare la raccolta di tracce. Le tracce risultanti vengono scaricate in localhost e quindi diagnosticate. I risultati della diagnosi vengono presentati di come avviene durante l'esecuzione della diagnosi locale. Analogamente, non è necessario specificare un ruolo perché può essere dedotto in base ai moduli di Windows PowerShell installati nel sistema remoto.

La diagnosi remota usa la comunicazione remota di Windows PowerShell per tutti gli accessi all'host remoto. Pertanto, è un prerequisito per cui la destinazione di traccia ha la comunicazione remota di Windows PowerShell abilitata (vedere Abilitare PSRemoting) e che localhost è configurato correttamente per l'avvio delle connessioni alla destinazione.

Nota

Nella maggior parte dei casi, è necessario che localhost faccia parte della stessa foresta di Active Directory e che venga usato un nome host DNS valido. Se l'ambiente usa un modello federativo più complesso o si desidera usare indirizzi IP diretti per la connettività, potrebbe essere necessario eseguire una configurazione aggiuntiva, ad esempio l'impostazione degli host attendibili WinRM.

È possibile verificare che un'istanza di una destinazione di traccia venga creata e configurata correttamente per l'accettazione delle connessioni tramite il cmdlet Test-HgsTraceTarget:

$server = New-HgsTraceTarget -HostName "hgs-01.secure.contoso.com" -Role HostGuardianService -Credential (Enter-Credential)
$server | Test-HgsTraceTarget

Questo cmdlet restituisce $True se e solo se Get-HgsTrace sarebbe possibile stabilire una sessione di diagnostica remota con la destinazione di traccia. In caso di errore, questo cmdlet restituisce informazioni sullo stato pertinenti per una risoluzione dei problemi di connessione remota di Windows PowerShell.

Credenziali implicite

Quando si esegue la diagnosi remota da un utente con privilegi sufficienti per connettersi in remoto alla destinazione di traccia, non è necessario fornire le credenziali a New-HgsTraceTarget. Il cmdlet Get-HgsTrace riutilizza automaticamente le credenziali dell'utente che ha richiamato il cmdlet all'apertura di una connessione.

Avviso

Alcune restrizioni si applicano al riutilizzo delle credenziali, in particolare quando si esegue ciò che è noto come "secondo hop". Ciò si verifica quando si tenta di riutilizzare le credenziali dall'interno di una sessione remota collegandosi a un altro computer. È necessario configurare CredSSP per supportare questo scenario, ma non rientra nell'ambito della gestione e della risoluzione dei problemi dell'infrastruttura sorvegliata.

Uso di Windows PowerShell Just Enough Administration (JEA) e diagnostica

La diagnosi remota supporta l'uso di endpoint Windows PowerShell vincolati da JEA. Per impostazione predefinita, le destinazioni di traccia remota si connetteranno usando l'endpoint microsoft.powershell predefinito. Se la destinazione di traccia ha il HostGuardianService ruolo , tenterà anche di usare l'endpoint microsoft.windows.hgs , che viene configurato quando viene installato HGS.

Se si vuole usare un endpoint personalizzato, è necessario specificare il nome di configurazione della sessione durante la costruzione della destinazione di traccia usando il parametro -PSSessionConfigurationName, come nell’esempio di seguito:

New-HgsTraceTarget -HostName "hgs-01.secure.contoso.com" -Role HostGuardianService -Credential (Enter-Credential) -PSSessionConfigurationName "microsoft.windows.hgs"

Diagnosi di più host

È possibile passare più destinazioni di traccia a Get-HgsTrace contemporaneamente. Ciò include una combinazione di destinazioni locali e remote. Ogni destinazione viene tracciata a sua volta e quindi le tracce di ogni destinazione verranno diagnosticate contemporaneamente. Lo strumento di diagnostica può usare la maggiore conoscenza della distribuzione per identificare errori di configurazione complessi tra nodi che altrimenti non sarebbero rilevabili. L'uso di questa funzionalità richiede solo la fornitura di tracce da più host contemporaneamente (nel caso di diagnosi manuale) o la destinazione di più host quando si richiama Get-HgsTrace (in caso di diagnosi remota).

Di seguito è riportato un esempio di uso della diagnosi remota per valutare un'infrastruttura composta da due nodi HGS e da due host sorvegliati, in cui viene usato uno degli host sorvegliati per avviare Get-HgsTrace.

$hgs01 = New-HgsTraceTarget -HostName "hgs-01.secure.contoso.com" -Credential (Enter-Credential)
$hgs02 = New-HgsTraceTarget -HostName "hgs-02.secure.contoso.com" -Credential (Enter-Credential)
$gh01 = New-HgsTraceTarget -Local
$gh02 = New-HgsTraceTarget -HostName "guardedhost-02.contoso.com"
Get-HgsTrace -Target $hgs01,$hgs02,$gh01,$gh02 -RunDiagnostics

Nota

Non è necessario diagnosticare l'intera infrastruttura sorvegliata durante la diagnosi di più nodi. In molti casi è sufficiente includere tutti i nodi che possono essere coinvolti in una determinata condizione di errore. Si tratta in genere di un subset degli host sorvegliati e di alcuni nodi del cluster HGS.

Diagnosi manuale con tracce salvate

A volte può essere necessario eseguire di nuovo la diagnostica senza raccogliere di nuovo le tracce oppure non si dispone delle credenziali necessarie per diagnosticare in remoto tutti gli host nell'infrastruttura contemporaneamente. La diagnosi manuale è un meccanismo tramite il quale è comunque possibile eseguire un'intera valutazione dell'infrastruttura usando Get-HgsTrace, ma senza usare la raccolta di tracce remote.

Prima di eseguire la diagnosi manuale, è necessario assicurarsi che gli amministratori di ogni host nell'infrastruttura che verranno valutati siano pronti e disposti a eseguire comandi per conto dell'utente. L'output di traccia diagnostica non espone informazioni generalmente considerate sensibili, ma è visibile all'utente per determinare se è sicuro esporre queste informazioni ad altri utenti.

Nota

Le tracce non sono anonime e rivelano la configurazione di rete, le impostazioni PKI e altre configurazioni talvolta considerate informazioni private. Pertanto, le tracce devono essere trasmesse solo a entità attendibili all'interno di un'organizzazione e mai rese pubbliche.

I passaggi per eseguire una diagnosi manuale sono i seguenti:

  1. Richiedere che ogni amministratore host esegua Get-HgsTrace specificando un -Path noto e l'elenco di diagnostica che si intende eseguire sulle tracce risultanti. Ad esempio:

    Get-HgsTrace -Path C:\Traces -Diagnostic Networking,BestPractices
    
  2. Richiedere a ogni amministratore host di creare il pacchetto della cartella delle tracce risultante e inviarla all'utente. Questo processo può essere effettuato tramite posta elettronica, condivisioni di file o qualsiasi altro meccanismo basato su criteri operativi e procedure stabiliti dall'organizzazione.

  3. Unire tutte le tracce ricevute in una singola cartella, senza altri contenuti o cartelle.

    Si supponga, ad esempio, che gli amministratori inviino tracce raccolte da quattro computer denominati HGS-01, HGS-02, RR1N2608-12 e RR1N2608-13. Ogni amministratore avrebbe inviato una cartella con lo stesso nome. Si assemblerebbe una struttura di directory che verrebbe visualizzata nel modo seguente:

    FabricTraces
    |- HGS-01
    |  |- TargetMetadata.xml
    |  |- Metadata.xml
    |  |- [any other trace files for this host]
    |- HGS-02
    |  |- [...]
    |- RR1N2608-12
    |  |- [...]
    |- RR1N2608-13
       |- [..]
    
  4. Eseguire la diagnostica, fornendo il percorso per la cartella di traccia assemblata nel parametro -Path e specificando l'opzione -RunDiagnostics, nonché la diagnostica per cui è stato richiesto agli amministratori di raccogliere le tracce. La diagnostica presuppone che non possa accedere agli host trovati all'interno del percorso e tenterà quindi di usare solo le tracce precolletate. Se sono presenti tracce mancanti o danneggiate, la diagnostica darà esito negativo solo per i test interessati e procederà come di norma. Ad esempio:

    Get-HgsTrace -RunDiagnostics -Diagnostic Networking,BestPractices -Path ".\FabricTraces"
    

Combinazione di tracce salvate con destinazioni aggiuntive

In alcuni casi, potrebbe essere presente un set di tracce precolletate che si desidera aumentare con tracce host aggiuntive. È possibile combinare tracce precolletate con destinazioni aggiuntive che verranno tracciate e diagnosticate in una singola chiamata di diagnostica.

Seguendo le istruzioni per raccogliere e assemblare una cartella di traccia specificata in precedenza, chiamare Get-HgsTrace con destinazioni di traccia aggiuntive non trovate nella cartella di traccia precolleta:

$hgs03 = New-HgsTraceTarget -HostName "hgs-03.secure.contoso.com" -Credential (Enter-Credential)
Get-HgsTrace -RunDiagnostics -Target $hgs03 -Path .\FabricTraces

Il cmdlet di diagnostica identificherà tutti gli host pre-selezionati e l'host aggiuntivo che deve comunque essere tracciato e eseguirà la traccia necessaria. Verrà quindi diagnosticata la somma di tutte le tracce precolletate e appena raccolte. La cartella di traccia risultante conterrà sia le tracce precedenti che le nuove.

Problemi noti

Il modulo di diagnostica dell'infrastruttura sorvegliata presenta limitazioni note quando viene eseguito in Windows Server 2019 o Windows 10, versione 1809, e versioni più recenti del sistema operativo. L'uso delle funzionalità seguenti può restituire risultati errati:

  • Attestazione della chiave host
  • Configurazione HGS di sola attestazione (per scenari Always Encrypted di SQL Server)
  • Uso degli artefatti dei criteri v1 in un server HGS in cui il criterio di attestazione predefinito è v2

Un errore durante Get-HgsTrace l'uso di queste funzionalità non indica necessariamente che il server HGS o l'host sorvegliato non è configurato correttamente. Usare altri strumenti di diagnostica come Get-HgsClientConfiguration in un host sorvegliato per verificare se un host ha superato l'attestazione.