Gestire un dispositivo FPGA di Azure Stack Edge Pro tramite Windows PowerShell
Importante
I dispositivi FPGA di Azure Stack Edge Pro hanno raggiunto la fine della vita a febbraio 2024.
La soluzione FPGA di Azure Stack Edge Pro consente di elaborare i dati e inviarli in rete ad Azure. Questo articolo descrive alcune delle attività di configurazione e gestione per il dispositivo AZURE Stack Edge Pro FPGA. È possibile usare il portale di Azure, l'interfaccia utente Web locale o l'interfaccia di Windows PowerShell per gestire il dispositivo.
Questo articolo è incentrato sulle attività eseguite usando l'interfaccia di PowerShell.
In questo articolo sono incluse le seguenti procedure:
- Connettersi all'interfaccia di PowerShell
- Creare un pacchetto di supporto
- Caricamento del certificato
- Reimpostare il dispositivo
- Visualizzare le informazioni sul dispositivo
- Ottenere i log di calcolo
- Monitorare e risolvere i problemi dei moduli di calcolo
Connettersi all'interfaccia di PowerShell
A seconda del sistema operativo del client, le procedure per la connessione remota al dispositivo sono diverse.
Connettersi in remoto da un client Windows
Prima di iniziare, assicurarsi che il client Windows esegua Windows PowerShell 5.0 o versione successiva.
Seguire questa procedura per connettersi in remoto da un client Windows.
Avviare una sessione di Windows PowerShell come amministratore.
Assicurarsi che il servizio Gestione remota Windows sia in esecuzione nel client. Al prompt dei comandi digitare:
winrm quickconfig
Per altre informazioni, vedere Installazione e configurazione di Gestione remota Windows.
Assegnare una variabile all'indirizzo IP del dispositivo.
$ip = "<device_ip>"
Sostituire
<device_ip>
con l'indirizzo IP del dispositivo.Per aggiungere l'indirizzo IP del dispositivo all'elenco di host attendibili del client, digitare il comando seguente:
Set-Item WSMan:\localhost\Client\TrustedHosts $ip -Concatenate -Force
Avviare una sessione di Windows PowerShell nel dispositivo:
Enter-PSSession -ComputerName $ip -Credential $ip\EdgeUser -ConfigurationName Minishell
Fornire la password quando viene richiesto. Usare la stessa password usata per accedere all'interfaccia utente Web locale. La password predefinita dell'interfaccia utente Web locale è Password1. Quando si esegue correttamente la connessione al dispositivo usando PowerShell remoto, viene visualizzato l'output di esempio seguente:
Windows PowerShell Copyright (C) Microsoft Corporation. All rights reserved. PS C:\WINDOWS\system32> winrm quickconfig WinRM service is already running on this machine. PS C:\WINDOWS\system32> $ip = "10.100.10.10" PS C:\WINDOWS\system32> Set-Item WSMan:\localhost\Client\TrustedHosts $ip -Concatenate -Force PS C:\WINDOWS\system32> Enter-PSSession -ComputerName $ip -Credential $ip\EdgeUser -ConfigurationName Minishell WARNING: The Windows PowerShell interface of your device is intended to be used only for the initial network configuration. Please engage Microsoft Support if you need to access this interface to troubleshoot any potential issues you may be experiencing. Changes made through this interface without involving Microsoft Support could result in an unsupported configuration. [10.100.10.10]: PS>
Connettersi in remoto da un client Linux
Nel client Linux che verrà usato per connettersi:
- Installare la versione più recente di PowerShell Core per Linux da GitHub per ottenere la funzionalità di comunicazione remota SSH.
- Installare solo il
gss-ntlmssp
pacchetto dal modulo NTLM. Per i client Ubuntu, usare il comando seguente:sudo apt-get install gss-ntlmssp
Per altre informazioni, vedere Comunicazione remota di PowerShell su SSH.
Seguire questa procedura per connettersi in remoto da un client NFS.
Per aprire la sessione di PowerShell, digitare:
pwsh
Per la connessione tramite il client remoto, digitare:
Enter-PSSession -ComputerName $ip -Authentication Negotiate -ConfigurationName Minishell -Credential ~\EdgeUser
Quando richiesto, specificare la password usata per accedere al dispositivo.
Nota
Questa procedura non funziona in Mac OS.
Creare un pacchetto di supporto
Se si verificano problemi di dispositivo, è possibile creare un pacchetto di supporto dai log di sistema. supporto tecnico Microsoft usa questo pacchetto per risolvere i problemi. Per creare un pacchetto di supporto, seguire questa procedura:
Connettersi all’interfaccia di PowerShell del dispositivo.
Usare il
Get-HcsNodeSupportPackage
comando per creare un pacchetto di supporto. L'utilizzo del cmdlet è il seguente:Get-HcsNodeSupportPackage [-Path] <string> [-Zip] [-ZipFileName <string>] [-Include {None | RegistryKeys | EtwLogs | PeriodicEtwLogs | LogFiles | DumpLog | Platform | FullDumps | MiniDumps | ClusterManagementLog | ClusterLog | UpdateLogs | CbsLogs | StorageCmdlets | ClusterCmdlets | ConfigurationCmdlets | KernelDump | RollbackLogs | Symbols | NetworkCmdlets | NetworkCmds | Fltmc | ClusterStorageLogs | UTElement | UTFlag | SmbWmiProvider | TimeCmds | LocalUILogs | ClusterHealthLogs | BcdeditCommand | BitLockerCommand | DirStats | ComputeRolesLogs | ComputeCmdlets | DeviceGuard | Manifests | MeasuredBootLogs | Stats | PeriodicStatLogs | MigrationLogs | RollbackSupportPackage | ArchivedLogs | Default}] [-MinimumTimestamp <datetime>] [-MaximumTimestamp <datetime>] [-IncludeArchived] [-IncludePeriodicStats] [-Credential <pscredential>] [<CommonParameters>]
Il cmdlet raccoglie i log dal dispositivo e copia tali log in una rete o in una condivisione locale specificata.
I parametri usati sono i seguenti:
-Path
- Specificare la rete o il percorso locale in cui copiare il pacchetto di supporto. (obbligatorio)-Credential
- Specificare le credenziali per accedere al percorso protetto.-Zip
- Specificare per generare un file ZIP.-Include
- Specificare di includere i componenti da includere nel pacchetto di supporto. Se non specificato,Default
viene utilizzato .-IncludeArchived
- Specificare per includere i log archiviati nel pacchetto di supporto.-IncludePeriodicStats
- Specificare per includere i log stat periodici nel pacchetto di supporto.
Caricamento del certificato
Un certificato SSL appropriato garantisce che vengano inviate informazioni crittografate al server appropriato. Oltre alla crittografia, il certificato consente anche l'autenticazione. È possibile caricare il proprio certificato SSL attendibile tramite l'interfaccia di PowerShell del dispositivo.
Usare il
Set-HcsCertificate
cmdlet per caricare il certificato. Quando richiesto, specificare le informazioni seguenti:CertificateFilePath
- Percorso della condivisione che contiene il file del certificato in formato pfx .CertificatePassword
- Password usata per proteggere il certificato.Credentials
- Nome utente per accedere alla condivisione che contiene il certificato. Quando richiesto, fornire la password alla condivisione di rete.L'esempio seguente illustra l'utilizzo di questo cmdlet:
Set-HcsCertificate -Scope LocalWebUI -CertificateFilePath "\\myfileshare\certificates\mycert.pfx" -CertificatePassword "mypassword" -Credential "Username"
È anche possibile caricare certificati IoT Edge per abilitare una connessione sicura tra il dispositivo IoT Edge e i dispositivi downstream che possono connettersi a esso. Esistono tre file (formato pem ) che è necessario installare:
- Certificato CA radice o CA proprietaria
- Certificato CA del dispositivo
- Chiave privata del dispositivo
L'esempio seguente illustra l'utilizzo di questo cmdlet per installare i certificati IoT Edge:
Set-HcsCertificate -Scope IotEdge -RootCACertificateFilePath "\\hcfs\root-ca-cert.pem" -DeviceCertificateFilePath "\\hcfs\device-ca-cert.pem\" -DeviceKeyFilePath "\\hcfs\device-private-key.pem" -Credential "username"
Quando si esegue questo cmdlet, verrà richiesto di specificare la password per la condivisione di rete.
Per altre informazioni sui certificati, vedere Certificati di Azure IoT Edge o Installare i certificati in un gateway.
Visualizzare le informazioni sul dispositivo
Get-HcsApplianceInfo
Usare per ottenere le informazioni per il dispositivo.L'esempio seguente illustra l'utilizzo di questo cmdlet:
[10.100.10.10]: PS>Get-HcsApplianceInfo Id : b2044bdb-56fd-4561-a90b-407b2a67bdfc FriendlyName : DBE-NBSVFQR94S6 Name : DBE-NBSVFQR94S6 SerialNumber : HCS-NBSVFQR94S6 DeviceId : 40d7288d-cd28-481d-a1ea-87ba9e71ca6b Model : Virtual FriendlySoftwareVersion : Data Box Gateway 1902 HcsVersion : 1.4.771.324 IsClustered : False IsVirtual : True LocalCapacityInMb : 1964992 SystemState : Initialized SystemStatus : Normal Type : DataBoxGateway CloudReadRateBytesPerSec : 0 CloudWriteRateBytesPerSec : 0 IsInitialPasswordSet : True FriendlySoftwareVersionNumber : 1902 UploadPolicy : All DataDiskResiliencySettingName : Simple ApplianceTypeFriendlyName : Data Box Gateway IsRegistered : False
Ecco una tabella che riepiloga alcune delle informazioni importanti sul dispositivo:
Parametro Descrizione FriendlyName Nome descrittivo del dispositivo configurato tramite l'interfaccia utente Web locale durante la distribuzione del dispositivo. Il nome descrittivo predefinito è il numero di serie del dispositivo. SerialNumber Il numero di serie del dispositivo è un numero univoco assegnato alla factory. Modello Modello per il dispositivo Azure Stack Edge o Data Box Gateway. Il modello è fisico per Azure Stack Edge e virtuale per Data Box Gateway. FriendlySoftwareVersion Stringa descrittiva che corrisponde alla versione del software del dispositivo. Per un'anteprima di sistema in esecuzione, la versione software descrittiva sarebbe Data Box Edge 1902. HcsVersion Versione del software HCS in esecuzione nel dispositivo. Ad esempio, la versione del software HCS corrispondente a Data Box Edge 1902 è 1.4.771.324. LocalCapacityInMb Capacità locale totale del dispositivo in Megabit. IsRegistered Questo valore indica se il dispositivo è attivato con il servizio.
Reimpostare il dispositivo
Per ripristinare il dispositivo, è necessario cancellare in modo sicuro tutti i dati presenti nel disco dati e nel disco di avvio del dispositivo.
Usare il cmdlet Reset-HcsAppliance
per cancellare i dati presenti nei dischi dati e nel disco di avvio oppure solo nei dischi dati. Le SecureWipeBootDisk
opzioni e SecureWipeDataDisks
consentono di cancellare il disco di avvio e i dischi dati rispettivamente.
L'opzione SecureWipeBootDisk
consente di cancellare i dati nel disco di avvio e di rendere inutilizzabile il dispositivo. Deve essere usata solo quando è necessario restituire il dispositivo a Microsoft. Per altre informazioni, vedere Restituire il dispositivo a Microsoft.
Se si usa il ripristino del dispositivo nell'interfaccia utente Web locale, vengono cancellati in modo sicuro i dati solo nei dischi dati, mentre il disco di avvio rimane intatto. Il disco di avvio contiene la configurazione del dispositivo.
Al prompt dei comandi digitare:
Reset-HcsAppliance -SecureWipeBootDisk -SecureWipeDataDisks
Nell'esempio seguente viene illustrato come usare questo cmdlet:
[10.128.24.33]: PS>Reset-HcsAppliance -SecureWipeBootDisk -SecureWipeDataDisks Confirm Are you sure you want to perform this action? Performing the operation "Reset-HcsAppliance" on target "ShouldProcess appliance". [Y] Yes [A] Yes to All [N] No [L] No to All [?] Help (default is "Y"): N
Ottenere i log di calcolo
Se il ruolo di calcolo è configurato nel dispositivo, è anche possibile ottenere i log di calcolo tramite l'interfaccia di PowerShell.
Get-AzureDataBoxEdgeComputeRoleLogs
Usare per ottenere i log di calcolo per il dispositivo.L'esempio seguente illustra l'utilizzo di questo cmdlet:
Get-AzureDataBoxEdgeComputeRoleLogs -Path "\\hcsfs\logs\myacct" -Credential "username" -FullLogCollection
Ecco una descrizione dei parametri usati per il cmdlet :
Path
: specificare un percorso di rete per la condivisione in cui si vuole creare il pacchetto di log di calcolo.Credential
: specificare il nome utente per la condivisione di rete. Quando si esegue questo cmdlet, sarà necessario specificare la password di condivisione.FullLogCollection
: questo parametro garantisce che il pacchetto di log conterrà tutti i log di calcolo. Per impostazione predefinita, il pacchetto di log contiene solo un subset di log.
Monitorare e risolvere i problemi dei moduli di calcolo
In un dispositivo Azure Stack Edge con il ruolo di calcolo configurato, è possibile risolvere i problemi o monitorare il dispositivo usando due diversi set di comandi.
- Uso
iotedge
dei comandi. Questi comandi sono disponibili per le operazioni di base per il dispositivo. - Uso
dkrdbe
dei comandi. Questi comandi sono disponibili per un set completo di operazioni per il dispositivo.
Per eseguire uno dei seguenti set di comandi, è necessario connettersi all'interfaccia di PowerShell.
Usare iotedge
i comandi
Per visualizzare un elenco dei comandi disponibili, connettersi all'interfaccia di PowerShell e usare la iotedge
funzione .
[10.100.10.10]: PS>iotedge -? Usage: iotedge COMMAND
Commands:
check
list
logs
restart
[10.100.10.10]: PS>
La tabella seguente contiene una breve descrizione dei comandi disponibili per iotedge
:
Comando | Descrizione |
---|---|
check |
Eseguire controlli automatizzati per verificare la presenza di problemi comuni di configurazione e connettività |
list |
Elencare i moduli |
logs |
Recuperare i log di un modulo |
restart |
Arrestare e riavviare un modulo |
Usare dkrdbe
i comandi
Per visualizzare un elenco dei comandi disponibili, connettersi all'interfaccia di PowerShell e usare la dkrdbe
funzione .
[10.100.10.10]: PS>dkrdbe -?
Usage: dkrdbe COMMAND
Commands:
image [prune]
images
inspect
login
logout
logs
port
ps
pull
start
stats
stop
system [df]
top
[10.100.10.10]: PS>
La tabella seguente contiene una breve descrizione dei comandi disponibili per dkrdbe
:
Comando | Descrizione |
---|---|
image |
Gestire le immagini. Per rimuovere le immagini inutilizzate, usare: dkrdbe image prune -a -f |
images |
Elencare le immagini |
inspect |
Restituire informazioni di basso livello sugli oggetti Docker |
login |
Accedere a un registro Docker |
logout |
Disconnettersi da un registro Docker |
logs |
Recuperare i log di un contenitore |
port |
Elencare i mapping delle porte o un mapping specifico per il contenitore |
ps |
Elencare i contenitori |
pull |
Eseguire il pull di un'immagine o di un repository da un registro |
start |
Avviare uno o più contenitori arrestati |
stats |
Visualizzare un flusso live delle statistiche di utilizzo delle risorse dei contenitori |
stop |
Arrestare uno o più contenitori in esecuzione |
system |
Gestire Docker |
top |
Visualizzare i processi in esecuzione di un contenitore |
Per ottenere assistenza per qualsiasi comando disponibile, usare dkrdbe <command-name> --help
.
Ad esempio, per comprendere l'utilizzo del port
comando, digitare:
[10.100.10.10]: P> dkrdbe port --help
Usage: dkr port CONTAINER [PRIVATE_PORT[/PROTO]]
List port mappings or a specific mapping for the container
[10.100.10.10]: P> dkrdbe login --help
Usage: docker login [OPTIONS] [SERVER]
Log in to a Docker registry.
If no server is specified, the default is defined by the daemon.
Options:
-p, --password string Password
--password-stdin Take the password from stdin
-u, --username string Username
[10.100.10.10]: PS>
I comandi disponibili per la dkrdbe
funzione usano gli stessi parametri usati per i normali comandi docker. Per le opzioni e i parametri usati con il comando docker, passare a Usare la riga di comando Docker.
Per verificare se il modulo è stato distribuito correttamente
I moduli di calcolo sono contenitori con una logica di business implementata. Per verificare se un modulo di calcolo viene distribuito correttamente, eseguire il ps
comando e verificare se il contenitore (corrispondente al modulo di calcolo) è in esecuzione.
Per ottenere l'elenco di tutti i contenitori (inclusi quelli sospesi), eseguire il ps -a
comando .
[10.100.10.10]: P> dkrdbe ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d99e2f91d9a8 edgecompute.azurecr.io/filemovemodule2:0.0.1-amd64 "dotnet FileMoveModu…" 2 days ago Up 2 days movefile
0a06f6d605e9 edgecompute.azurecr.io/filemovemodule2:0.0.1-amd64 "dotnet FileMoveModu…" 2 days ago Up 2 days filemove
2f8a36e629db mcr.microsoft.com/azureiotedge-hub:1.0 "/bin/sh -c 'echo \"$…" 2 days ago Up 2 days 0.0.0.0:443->443/tcp, 0.0.0.0:5671->5671/tcp, 0.0.0.0:8883->8883/tcp edgeHub
acce59f70d60 mcr.microsoft.com/azureiotedge-agent:1.0 "/bin/sh -c 'echo \"$…" 2 days ago Up 2 days edgeAgent
[10.100.10.10]: PS>
Se si è verificato un errore durante la creazione dell'immagine del contenitore o durante il pull dell'immagine, eseguire logs edgeAgent
. EdgeAgent
è il contenitore di runtime di IoT Edge responsabile del provisioning di altri contenitori.
Poiché logs edgeAgent
esegue il dump di tutti i log, un buon modo per visualizzare gli errori recenti consiste nell'usare l'opzione --tail 20
.
[10.100.10.10]: PS>dkrdbe logs edgeAgent --tail 20
2019-02-28 23:38:23.464 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Util.Uds.HttpUdsMessageHandler] - Connected socket /var/run/iotedge/mgmt.sock
2019-02-28 23:38:23.464 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Util.Uds.HttpUdsMessageHandler] - Sending request http://mgmt.sock/modules?api-version=2018-06-28
2019-02-28 23:38:23.464 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Agent.Core.Agent] - Getting edge agent config...
2019-02-28 23:38:23.464 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Agent.Core.Agent] - Obtained edge agent config
2019-02-28 23:38:23.469 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Agent.Edgelet.ModuleManagementHttpClient] - Received a valid Http response from unix:///var/run/iotedge/mgmt.soc
k for List modules
--------------------CUT---------------------
--------------------CUT---------------------
08:28.1007774+00:00","restartCount":0,"lastRestartTimeUtc":"2019-02-26T20:08:28.1007774+00:00","runtimeStatus":"running","version":"1.0","status":"running","restartPolicy":"always
","type":"docker","settings":{"image":"edgecompute.azurecr.io/filemovemodule2:0.0.1-amd64","imageHash":"sha256:47778be0602fb077d7bc2aaae9b0760fbfc7c058bf4df192f207ad6cbb96f7cc","c
reateOptions":"{\"HostConfig\":{\"Binds\":[\"/home/hcsshares/share4-dl460:/home/input\",\"/home/hcsshares/share4-iot:/home/output\"]}}"},"env":{}}
2019-02-28 23:38:28.480 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Agent.Core.Planners.HealthRestartPlanner] - HealthRestartPlanner created Plan, with 0 command(s).
Per ottenere i log dei contenitori
Per ottenere i log per un contenitore specifico, elencare prima il contenitore e quindi ottenere i log per il contenitore a cui si è interessati.
Per ottenere l'elenco dei contenitori in esecuzione, eseguire il
ps
comando .[10.100.10.10]: P> dkrdbe ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d99e2f91d9a8 edgecompute.azurecr.io/filemovemodule2:0.0.1-amd64 "dotnet FileMoveModu…" 2 days ago Up 2 days movefile 0a06f6d605e9 edgecompute.azurecr.io/filemovemodule2:0.0.1-amd64 "dotnet FileMoveModu…" 2 days ago Up 2 days filemove 2f8a36e629db mcr.microsoft.com/azureiotedge-hub:1.0 "/bin/sh -c 'echo \"$…" 2 days ago Up 2 days 0.0.0.0:443->443/tcp, 0.0.0.0:5671->5671/tcp, 0.0.0.0:8883->8883/tcp edgeHub acce59f70d60 mcr.microsoft.com/azureiotedge-agent:1.0 "/bin/sh -c 'echo \"$…" 2 days ago Up 2 days edgeAgent
Prendere nota dell'ID contenitore per il contenitore per cui sono necessari i log.
Per ottenere i log per un contenitore specifico, eseguire il
logs
comando specificando l'ID contenitore.[10.100.10.10]: PS>dkrdbe logs d99e2f91d9a8 02/26/2019 18:21:45: Info: Opening module client connection. 02/26/2019 18:21:46: Info: Initializing with input: /home/input, output: /home/output. 02/26/2019 18:21:46: Info: IoT Hub module client initialized. 02/26/2019 18:22:24: Info: Received message: 1, SequenceNumber: 0 CorrelationId: , MessageId: 081886a07e694c4c8f245a80b96a252a Body: [{"ChangeType":"Created","ShareRelativeFilePath":"\\__Microsoft Data Box Edge__\\Upload\\Errors.xml","ShareName":"share4-dl460"}] 02/26/2019 18:22:24: Info: Moving input file: /home/input/__Microsoft Data Box Edge__/Upload/Errors.xml to /home/output/__Microsoft Data Box Edge__/Upload/Errors.xml 02/26/2019 18:22:24: Info: Processed event. 02/26/2019 18:23:38: Info: Received message: 2, SequenceNumber: 0 CorrelationId: , MessageId: 30714d005eb048e7a4e7e3c22048cf20 Body: [{"ChangeType":"Created","ShareRelativeFilePath":"\\f [10]","ShareName":"share4-dl460"}] 02/26/2019 18:23:38: Info: Moving input file: /home/input/f [10] to /home/output/f [10] 02/26/2019 18:23:38: Info: Processed event.
Per monitorare le statistiche di utilizzo del dispositivo
Per monitorare la memoria, l'utilizzo della CPU e l'I/O nel dispositivo, usare il stats
comando .
Eseguire il
stats
comando in modo da disabilitare il flusso live ed eseguire il pull solo del primo risultato.dkrdbe stats --no-stream
L'esempio seguente illustra l'utilizzo di questo cmdlet:
[10.100.10.10]: P> dkrdbe stats --no-stream CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS d99e2f91d9a8 movefile 0.0 24.4MiB / 62.89GiB 0.04% 751kB / 497kB 299kB / 0B 14 0a06f6d605e9 filemove 0.00% 24.11MiB / 62.89GiB 0.04% 679kB / 481kB 49.5MB / 0B 14 2f8a36e629db edgeHub 0.18% 173.8MiB / 62.89GiB 0.27% 4.58MB / 5.49MB 25.7MB / 2.19MB 241 acce59f70d60 edgeAgent 0.00% 35.55MiB / 62.89GiB 0.06% 2.23MB / 2.31MB 55.7MB / 332kB 14 [10.100.10.10]: PS>
Uscire dalla sessione remota
Per uscire dalla sessione remota di PowerShell, chiudere la finestra di PowerShell.
Passaggi successivi
- Distribuire Azure Stack Edge Pro FPGA in portale di Azure.