Gerenciar um dispositivo Azure Stack Edge Pro FPGA por meio do Windows PowerShell
Importante
Os dispositivos FPGA do Azure Stack Edge Pro atingirão o fim da vida útil em fevereiro de 2024. Se você estiver considerando novas implantações, recomendamos que explore os dispositivos de GPU do Azure Stack Edge Pro 2 ou a GPU do Azure Stack Edge Pro para suas cargas de trabalho.
A solução FPGA do Azure Stack Edge Pro permite processar dados e enviá-los pela rede para o Azure. Este artigo descreve algumas das tarefas de configuração e gerenciamento do seu dispositivo FPGA do Azure Stack Edge Pro. Você pode usar o portal do Azure, a IU da Web local ou a interface do Windows PowerShell para gerenciar seu dispositivo.
Este artigo se concentra nas tarefas que você realiza usando a interface do PowerShell.
Este artigo inclui os seguintes procedimentos:
- Conectar-se à interface do PowerShell
- Criar um pacote de suporte
- Carregar um certificado
- Redefinir o dispositivo
- Exibir informações do dispositivo
- Obter logs de computação
- Monitorar e solucionar problemas de módulos de computação
Conectar-se à interface do PowerShell
Dependendo do sistema operacional do cliente, os procedimentos para se conectar remotamente ao dispositivo são diferentes.
Remotamente, conecte-se usando um cliente do Windows
Antes de começar, verifique se o cliente do Windows está executando o Windows PowerShell 5.0 ou posterior.
Siga estas etapas para conectar-se remotamente a partir de um cliente Windows.
Execute uma sessão do Windows PowerShell como administrador.
Verifique se o serviço de Gerenciamento Remoto do Windows está em execução no cliente. No prompt de comando, digite:
winrm quickconfig
Para obter mais informações, confira Instalação e configuração para Gerenciamento Remoto do Windows.
Atribua uma variável ao endereço IP do dispositivo.
$ip = "<device_ip>"
Substitua
<device_ip>
pelo endereço IP do seu dispositivo.Para adicionar o endereço IP do seu dispositivo à lista de hosts confiáveis do cliente, digite o seguinte comando:
Set-Item WSMan:\localhost\Client\TrustedHosts $ip -Concatenate -Force
Inicie uma sessão do Windows PowerShell no dispositivo:
Enter-PSSession -ComputerName $ip -Credential $ip\EdgeUser -ConfigurationName Minishell
Forneça a senha quando solicitada. Use a mesma senha usada para entrar na IU da Web local. A senha da IU da web local padrão é Password1. Ao se conectar com êxito ao dispositivo usando o PowerShell remoto, você verá o seguinte exemplo de saída:
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>
Conecte-se remotamente a partir de um cliente Linux
No cliente Linux que você usará para se conectar:
- Instale o PowerShell Core para Linux mais recente do GitHub para obter o recurso SSH remoto.
- Instale apenas o pacote
gss-ntlmssp
do módulo NTLM. Para clientes Ubuntu, use o seguinte comando:sudo apt-get install gss-ntlmssp
Para obter mais informações, vá para Comunicação remota do PowerShell por SSH.
Siga essas etapas para se conectar remotamente de um cliente NFS.
Para abrir a sessão do PowerShell, digite:
pwsh
Para se conectar usando o cliente remoto, digite:
Enter-PSSession -ComputerName $ip -Authentication Negotiate -ConfigurationName Minishell -Credential ~\EdgeUser
Quando solicitado, forneça a senha usada para entrar em seu dispositivo.
Observação
Este procedimento não funciona em Mac OS.
Criar um pacote de suporte
Se você tiver problemas com o dispositivo, pode criar um pacote de suporte a partir dos logs do sistema. O Suporte da Microsoft usa este pacote para solucionar os problemas. Siga estas etapas para criar um pacote de suporte:
Use o comando
Get-HcsNodeSupportPackage
para criar um pacote de suporte. O uso do cmdlet é como segue: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>]
O cmdlet coleta logs do seu dispositivo e copia esses logs para uma rede específica ou compartilhamento local.
Os parâmetros usados são os seguintes:
-Path
- Especifique a rede ou o caminho local para onde copiar o pacote de suporte. (obrigatório)-Credential
- Especifique as credenciais para acessar o caminho protegido.-Zip
- Especifique para gerar um arquivo zip.-Include
- Especifique para incluir os componentes a serem incluídos no pacote de suporte. Se não for especificado,Default
é assumido.-IncludeArchived
- Especifique para incluir logs arquivados no pacote de suporte.-IncludePeriodicStats
- Especifique para incluir logs periódicos de estatísticas no pacote de suporte.
Carregar um certificado
Um certificado SSL adequado garante que você esteja enviando informações criptografadas para o servidor correto. Além da criptografia, o certificado também permite a autenticação. Você pode carregar seu próprio certificado SSL confiável por meio da interface do PowerShell do dispositivo.
Use o
Set-HcsCertificate
cmdlet para carregar o certificado. Quando solicitado, forneça os seguintes parâmetros:CertificateFilePath
- Caminho para o compartilhamento que contém o arquivo de certificado no formato .pfx.CertificatePassword
- Uma senha usada para proteger o certificado.Credentials
: nome de usuário para acessar o compartilhamento que contém o certificado. Forneça a senha para o compartilhamento de rede quando solicitado.O exemplo a seguir mostra o uso deste cmdlet:
Set-HcsCertificate -Scope LocalWebUI -CertificateFilePath "\\myfileshare\certificates\mycert.pfx" -CertificatePassword "mypassword" -Credential "Username"
Você também pode carregar certificados do IoT Edge para habilitar uma conexão segura entre o dispositivo do IoT Edge e os dispositivos downstream que podem se conectar a ele. Há três arquivos (formato.pem) que você precisa instalar:
- Certificado de AC raiz ou AC do proprietário
- Certificado de autoridade de certificação de dispositivo
- Chave privada do dispositivo
O seguinte exemplo mostra o uso desse cmdlet para instalar certificados 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"
Ao executar esse cmdlet, você será solicitado a fornecer a senha para o compartilhamento de rede.
Para obter mais informações sobre certificados, acesse Certificados do Azure IoT Edge ou Instalar certificados em um gateway.
Exibir informações do dispositivo
Use o
Get-HcsApplianceInfo
para obter as informações de seu dispositivo.O exemplo a seguir mostra o uso deste 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
Aqui está uma tabela que resume algumas das informações importantes do dispositivo:
Parâmetro Descrição FriendlyName O nome amigável do dispositivo, conforme configurado por meio da IU da web local durante a implantação do dispositivo. O nome amigável padrão é o número de série do dispositivo. SerialNumber O número de série do dispositivo é um número exclusivo atribuído na fábrica. Modelar O modelo para seu dispositivo Azure Stack Edge ou Data Box Gateway. O modelo é físico para o Azure Stack Edge e virtual para o Data Box Gateway. FriendlySoftwareVersion A cadeia de caracteres amigável que corresponde à versão do software do dispositivo. Para uma pré-visualização do sistema em execução, a versão amigável do software seria Data Box Edge 1902. HcsVersion A versão do software HCS em execução no seu dispositivo. Por exemplo, a versão do software HCS correspondente ao Data Box Edge 1902 é 1.4.771.324. LocalCapacityInMb A capacidade local total do dispositivo em megabits. IsRegistered Este valor indica se o seu dispositivo está ativado com o serviço.
Redefinir o seu dispositivo
Para redefinir o dispositivo, você precisa apagar com segurança todos os dados no disco de dados e no disco de inicialização do dispositivo.
Use o cmdlet Reset-HcsAppliance
para apagar os discos de dados e o disco de inicialização ou apenas os discos de dados. As opções SecureWipeBootDisk
e SecureWipeDataDisks
permitem apagar os discos de dados e o disco de inicialização, respectivamente.
A opção SecureWipeBootDisk
apaga o disco de inicialização e torna o dispositivo inutilizável. Ela deverá ser usada somente quando o dispositivo precisar ser devolvido à Microsoft. Para obter mais informações, confira Devolver o dispositivo à Microsoft.
Se você usar a redefinição do dispositivo na IU da Web local, somente os discos de dados serão apagados com segurança, mas o disco de inicialização permanecerá intacto. O disco de inicialização contém a configuração do dispositivo.
No prompt de comando, digite:
Reset-HcsAppliance -SecureWipeBootDisk -SecureWipeDataDisks
O seguinte exemplo mostra como usar este 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
Obter logs de computação
Se a função de computação estiver configurada em seu dispositivo, você também poderá obter os logs de computação por meio da interface do PowerShell.
Use o
Get-AzureDataBoxEdgeComputeRoleLogs
para obter os logs de computação para seu dispositivo.O exemplo a seguir mostra o uso deste cmdlet:
Get-AzureDataBoxEdgeComputeRoleLogs -Path "\\hcsfs\logs\myacct" -Credential "username" -FullLogCollection
Aqui está uma descrição dos parâmetros usados para o cmdlet:
Path
: forneça um caminho de rede para o compartilhamento no qual você deseja criar o pacote de log de computação.Credential
: forneça o nome de usuário para o compartilhamento de rede. Quando você executar esse cmdlet, será necessário fornecer a senha de compartilhamento.FullLogCollection
: esse parâmetro garante que o pacote de log conterá todos os logs de computação. Por padrão, o pacote de log contém apenas um subconjunto de logs.
Monitorar e solucionar problemas de módulos de computação
Em um dispositivo Azure Stack Edge que tem a função de computação configurada, você pode solucionar problemas ou monitorar o dispositivo usando dois conjuntos diferentes de comandos.
- Usando os comandos do
iotedge
. Esses comandos estão disponíveis para operações básicas do seu dispositivo. - Usando os comandos do
dkrdbe
. Esses comandos estão disponíveis para um conjunto de operações extensivo do seu dispositivo.
Para executar qualquer um do conjunto de comandos acima, você precisa conectar-se à interface do PowerShell.
Usar os comandos do iotedge
Para ver uma lista de comandos disponíveis, conecte-se à interface do PowerShell e use a função iotedge
.
[10.100.10.10]: PS>iotedge -? Usage: iotedge COMMAND
Commands:
check
list
logs
restart
[10.100.10.10]: PS>
A tabela a seguir tem uma breve descrição dos comandos disponíveis para iotedge
:
command | Descrição |
---|---|
check |
Executar verificações automatizadas para problemas comuns de configuração e conectividade |
list |
Listar módulos |
logs |
Buscar os logs de um módulo |
restart |
Parar e reiniciar um módulo |
Usar os comandos do dkrdbe
Para ver uma lista de comandos disponíveis, conecte-se à interface do PowerShell e use a função dkrdbe
.
[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>
A tabela a seguir tem uma breve descrição dos comandos disponíveis para dkrdbe
:
command | Descrição |
---|---|
image |
Gerenciar imagens. Para remover imagens não utilizadas, use: dkrdbe image prune -a -f |
images |
Listar imagens |
inspect |
Retornar informações de baixo nível sobre objetos do Docker |
login |
Entrar em um registro do Docker |
logout |
Sair de um registro do Docker |
logs |
Buscar os logs de um contêiner |
port |
Listar mapeamentos de porta ou um mapeamento específico para o contêiner |
ps |
Listar contêineres |
pull |
Efetuar pull de uma imagem ou repositório de um registro |
start |
Iniciar um ou mais contêineres interrompidos |
stats |
Exibir uma transmissão ao vivo de estatísticas sobre uso de recursos de contêineres |
stop |
Parar um ou mais contêineres em execução |
system |
Gerenciar Docker |
top |
Exibir os processos em execução de um contêiner |
Para obter ajuda para qualquer comando disponível, use dkrdbe <command-name> --help
.
Por exemplo, para entender o uso do comando port
, digite:
[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>
Os comandos disponíveis para a função dkrdbe
usam os mesmos parâmetros que os usados para os comandos normais do Docker. Para as opções e parâmetros usados com o comando Docker, acesse Usar a linha de comando do Docker.
Para verificar se o módulo foi implantado com êxito
Os módulos de computação são contêineres que têm uma lógica de negócios implementada. Para verificar se um módulo de computação foi implantado com êxito, execute o comando ps
e verifique se o contêiner (correspondente ao módulo de computação) está em execução.
Para obter a lista de todos os contêineres (incluindo os que estão em pausa), execute o comando ps -a
.
[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 houver um erro na criação da imagem de contêiner ou durante a extração da imagem, execute logs edgeAgent
. EdgeAgent
é o contêiner de runtime do IoT Edge que é responsável por provisionar outros contêineres.
Como o logs edgeAgent
despeja todos os logs, uma boa maneira de ver os erros recentes é usar a opção --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).
Para obter logs de contêiner
Para obter logs de um contêiner específico, primeiro liste o contêiner e, em seguida, obtenha os logs para o contêiner do seu interesse.
Para obter uma lista dos contêineres em execução, execute o comando
ps
.[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
Anote a ID do contêiner cujos logs são necessários.
Para obter os logs de um contêiner específico, execute o comando
logs
que fornece a ID do contêiner.[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.
Para monitorar as estatísticas de uso do dispositivo
Para monitorar a memória, o uso da CPU e a E/S no dispositivo, use o comando stats
.
Execute o comando
stats
para desabilitar a transmissão ao vivo e efetuar pull somente do primeiro resultado.dkrdbe stats --no-stream
O exemplo a seguir mostra o uso deste 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>
Sair da sessão remota
Para sair da sessão remota do PowerShell, feche a janela do PowerShell.
Próximas etapas
- Implante a FPGA do Azure Stack Edge Pro no portal do Azure.