Compartilhar via


Gerenciar um dispositivo Azure Stack Edge Pro FPGA por meio do Windows PowerShell

Importante

Os dispositivos de FPGA do Azure Stack Edge Pro atingiram o fim da vida útil em fevereiro de 2024.

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.

  1. Execute uma sessão do Windows PowerShell como administrador.

  2. 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.

  3. Atribua uma variável ao endereço IP do dispositivo.

    $ip = "<device_ip>"

    Substitua <device_ip> pelo endereço IP do seu dispositivo.

  4. 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

  5. Inicie uma sessão do Windows PowerShell no dispositivo:

    Enter-PSSession -ComputerName $ip -Credential $ip\EdgeUser -ConfigurationName Minishell

  6. 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:

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.

  1. Para abrir a sessão do PowerShell, digite:

    pwsh

  2. 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:

  1. Conecte-se à interface do PowerShell do seu dispositivo.

  2. 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.

  1. Conectar-se à interface do PowerShell.

  2. 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

  1. Conectar-se à interface do PowerShell.

  2. 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.

  1. Conectar-se à interface do PowerShell.

  2. 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.

  1. Conectar-se à interface do PowerShell.

  2. 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.

  1. Conectar-se à interface do PowerShell.

  2. 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
    
  3. Anote a ID do contêiner cujos logs são necessários.

  4. 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.

  1. Conectar-se à interface do PowerShell.

  2. 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