Report and inventory hardware and OS information with Azure IoT and OSConfig
Importante
A versão 1.0.3 (publicada em 28 de junho de 2022) inclui alterações interruptivas nos nomes dos membros que podem afetar os usuários existentes. Para obter mais informações, consulte: Transição de nomes de membro de PascalCase para camelCase na versão 1.0.3
Público-alvo e escopo
Este artigo foi projetado para dar suporte a pessoas que provisionam ou gerenciam dispositivos com o Azure IoT. Se isso não soar como você, considere dar uma olhada na documentação audiências para OSConfig.
Este artigo descreve e demonstra o uso dos módulos DeviceInformation e TPM para obter informações do dispositivo, incluindo sistema operacional, versão, presença do TPM, memória e muito mais.
Dica
Se você estiver aqui para a referência do modelo de objeto, poderá ignorar os exemplos de Casos de uso para as informações de referência
Exemplos de casos de uso
Esses exemplos podem servir como pontos de partida para você se adaptar ao seu ambiente exclusivo.
Pré-requisitos para experimentar os exemplos em sistemas dinâmicos
Se você estiver usando este artigo para referência (por exemplo, você está aqui para copiar um nome de propriedade), não há pré-requisitos.
Se você quiser experimentar os exemplos em sistemas dinâmicos (recomendado), então:
Você precisará de uma conta do Azure com um Hub IoT
Este artigo pressupõe alguma familiaridade com Hub IoT e ferramentas relacionadas. Por exemplo, ele pressupõe que você esteja confortável criando Hubs IoT e anexando dispositivos. Se você preferir uma introdução passo a passo mais prescritiva à instalação e ao uso do OSConfig do zero, consulte: Início Rápido: Gerenciar um único dispositivo IoT virtual usando a CLI do Azure .
Você precisará de pelo menos um dispositivo Linux com o agente OSConfig instalado e conectado ao Azure IoT.
Para obter mais informações, consulte: Como e onde instalar o agente OSConfig para Linux.
Você usará o Portal do Azure ou a CLI do Azure para interagir com os dispositivos por meio do Hub IoT
Para obter mais etapas, escolha sua experiência preferida:
- Verifique se você está conectado ao Portal do Azure e pode acessar a página Visão geral do Hub IoT
Exemplo A. Obter todas as propriedades de informações do dispositivo
Neste exemplo, simplesmente recuperamos todas as informações do dispositivo disponíveis nesses dois namespaces. Espera-se que você use essas informações como parte de um cenário de inventário em sua solução de nuvem ou em um cenário de diagnóstico.
Instruções passo a passo após a captura de tela
- Navegue até o gêmeo OSConfig para o dispositivo de sua escolha
- Na página do Hub IoT no Portal do Azure, navegue até Dispositivos Gerenciamento de Dispositivos > (ou Gerenciamento de Dispositivos > IoT Edge se o dispositivo tiver IoT Edge instalado)
- Clique no nome do dispositivo na lista de IDs do dispositivo
- Em Identidades do Módulo, clique na ID do módulo osconfig
- Clique em Módulo Identidade Gêmeo
- Role para exibir as
DeviceInfo
seções eTpm
emproperties.reported
e anote as informações disponíveis, incluindocpuType
,osVersion
,totalMemory
,tpmVersion
e várias outras.
Exemplo B. Gerar um relatório tabular de informações do sistema operacional e da CPU entre dispositivos
Para este exemplo, somente o bash/Cloud Shell, o exemplo em escala é preenchido. Isso mostra o uso Hub IoT funções de consulta junto com o recurso da CLI do --output table
Azure. Espera-se que você integre esses pontos de dados em seus próprios fluxos de trabalho de nuvem, exibindo tabelas conforme necessário para seus operadores de solução.
Não aplicável. Navegue até Pré-requisitos para experimentar os exemplos em sistemas dinâmicos neste documento e escolha "Bash/Cloud Shell".
Exemplo C. Contar dispositivos com e sem TPMs
Este exemplo usará o operador GROUP BY da Consulta IoT do Azure, aplicado em informações do TPM expostas por OSConfig.
Não aplicável, consulte Portal do Azure, em escala.
Informações de referência
Descrição do modelo de objeto
Esta seção descreve as propriedades do gêmeo e os comportamentos correspondentes.
Dica
Nos casos em que o ponto de vista gêmeo sem formatação desejado/relatado difere do ponto de vista aprimorado de DTDL, o primeiro é dado primeiro seguido pelo último entre parênteses.
DeviceInfo
Caminho:
properties.reported.DeviceInfo
(DeviceInfo
componente)Descrição: informações de todo o dispositivo, como nome do sistema operacional, versão do sistema operacional, tipo de CPU etc.
Membros
Nome Type Observações osName string Nome do sistema operacional, como Ubuntu, Debian etc. osVersion string Versão do sistema operacional, como "20.04", etc. cpuType string Identificador ISA de alto nível, como "aarch64", "x86_64", etc. cpuVendorId string Identificador de fornecedor, como "ARM", "GenuineIntel", etc. cpuModel string Identificador do processador, como "Cortex-A72", etc. totalMemory INT RAM instalada, conforme visto pelo sistema operacional freeMemory INT RAM disponível (na hora de início do serviço)¹, conforme visto pelo sistema operacional kernelName string Nome do kernel, como "Linux" kernelVersion string Informações adicionais de build do kernel, como "#75-Ubuntu SMP PREEMPT Fri Jun 3 14:24:57 UTC 2022" kernelRelease string Identificador de versão de build do kernel, como "5.4.0-1065-raspi" Productvendor string Refere-se ao contexto do fornecedor de produtos do dispositivo, como "Contoso Systems, Inc"; muitas vezes em branco productName string Nome do produto do dispositivo, como "Raspberry Pi 4 Modelo B Rev 1.4" productVersion string Versão do produto do dispositivo; muitas vezes em branco systemCapabilities string Em lshw -c system
systemConfiguration string Em lshw -c system
osConfigVersion string Número de versão do agente OSConfig que representa o dispositivo ¹ A
freeMemory
propriedade foi projetada para caracterização geral do sistema, não para monitoramento dinâmico. Dessa forma, ele só atualiza o valor após o início do serviço, evitando que a CPU e as despesas de rede atualizem continuamente esse valor. Para monitoramento contínuo da memória gratuita, consulte Azure Monitor.Conteúdo de exemplo (como visto na seção de
properties.reported
gêmeos)"DeviceInfo": { "__t": "c", "osName": "Ubuntu", "osVersion": "20.04.4", "cpuType": "aarch64", "cpuVendorId": "ARM", "cpuModel": "Cortex-A72", "totalMemory": 7998708, "freeMemory": 7168776, "kernelName": "Linux", "kernelVersion": "#75-Ubuntu SMP PREEMPT Fri Jun 3 14:24:57 UTC 2022", "kernelRelease": "5.4.0-1065-raspi", "productVendor": "", "productName": "Raspberry Pi 4 Model B Rev 1.4", "productVersion": "", "systemCapabilities": "smp cp15_barrier setend swp tagged_addr_disabled", "systemConfiguration": "", "osConfigVersion": "1.0.3.2022062801" }
Tpm
Caminho:
properties.reported.Tpm
(Tpm
componente)Descrição: presença e status do TPM expostos ao sistema operacional
Membros
Nome Type Observações tpmStatus enumeração de ints 0 (desconhecido), 1 (detectado), 2 (não detectado) tpmVersion string Versão da interface TPM, por exemplo, "2.0" tpmManufacturer string Identificador, por exemplo, "IFX" Example payload (as seen in twin's
properties.reported
section)"Tpm": { "__t": "c", "tpmStatus": 1, "tpmVersion": "2.0", "tpmManufacturer": "IFX" }
Próximas etapas
Para obter uma visão geral dos cenários e funcionalidades do OSConfig, consulte:
Para obter exemplos práticos específicos, consulte: