Report and inventory hardware and OS information with Azure IoT and OSConfig

重要

版本 1.0.3 (于 2022 年 6 月 28 日发布) 包括对成员名称的重大更改,这些更改可能会影响现有用户。 有关详细信息,请参阅: 成员名称在版本 1.0.3 中从 PascalCase 转换到 camelCase

受众和范围

本文旨在支持使用 Azure IoT 预配或管理设备 的人员。 如果这听起来不像你,请考虑查看 OSConfig 的受众文档

本文介绍如何使用 DeviceInformationTPM 模块获取设备信息,包括 操作系统版本TPM 状态内存等。

提示

如果在此处进行对象模型引用,则可以跳过 用例示例 ,转到 引用信息

用例示例

这些示例可以作为你适应独特环境的起点。

在实时系统上尝试示例的先决条件

例如,如果使用本文作为参考 (此处复制属性名称) ,则没有任何先决条件。

如果要尝试实时系统上的示例 (推荐) ,请:

  1. 需要一个具有IoT 中心的 Azure 帐户

    本文假设你已熟悉IoT 中心和相关工具。 例如,它假定你熟悉如何创建 IoT 中心和附加设备。 如果更喜欢从头开始安装和使用 OSConfig 的更规范的分步简介,请参阅: 快速入门:改为使用 Azure CLI 管理单个虚拟 IoT 设备

  2. 需要至少一台已安装 OSConfig 代理并连接到 Azure IoT 的 Linux 设备。

    有关详细信息,请参阅: 安装适用于 Linux 的 OSConfig 代理的方式和位置

  3. 你将使用 Azure 门户或 Azure CLI 通过IoT 中心

    有关后续步骤,请选择首选体验:

  1. 确保已登录到 Azure 门户并可以访问IoT 中心的“概述”页屏幕截图,其中显示了 Azure 门户中IoT 中心和设备

示例 A.获取所有设备信息属性

在此示例中,我们只是检索这两个命名空间中可用的所有设备信息。 在云解决方案或诊断方案中,应将此信息用作清单方案的一部分。

分步说明遵循屏幕截图

浏览到 OSConfig 模块孪生以查看设备信息

  1. 导航到所选设备的 OSConfig 孪生
    1. 在 Azure 门户中IoT 中心页中,导航到“设备管理>设备” (或设备管理 > IoT Edge(如果设备已安装IoT Edge)
    2. 单击设备 ID 列表中的设备名称
    3. 在“ 模块标识”下 ,单击 osconfig 模块 ID
    4. 单击“模块标识孪生
  2. 滚动以查看 下的 和 部分,并记下包括 、、tpmVersionosVersiontotalMemory、 等在内的可用信息。cpuTypeTpmproperties.reportedDeviceInfo

示例 B.跨设备生成 OS 和 CPU 信息的表格报告

对于此示例,仅填充 Bash/Cloud Shell大规模示例。 这显示了如何使用 IoT 中心 查询函数以及 Azure CLI --output table 的功能。 预期会将这些数据点集成到自己的云工作流中,并根据需要向解决方案操作员显示表。

不适用。 导航到“先决条件”以尝试本文档中的实时系统上的示例,然后选择“Bash /Cloud Shell”。

示例 C. 使用和不带 TPM 的设备计数

此示例将使用 Azure IoT 查询的 GROUP BY 运算符,该运算符通过 OSConfig 公开的 TPM 信息应用。

不适用,请参阅大规模 Azure 门户。

参考信息

对象模型说明

本部分介绍孪生体属性和相应行为。

提示

如果普通所需/报告的孪生视图点不同于 DTDL 增强的视点,则前者先在括号中指定后跟后者。

DeviceInfo
  • 路径properties.reported.DeviceInfo (DeviceInfo 组件)

  • 说明:设备范围的信息,例如 OS 名称、OS 版本、CPU 类型等。

  • 成员

    名称 类型 说明
    osName 字符串 OS 名称,如 Ubuntu、Debian 等。
    osVersion string OS 版本,如“20.04”等。
    cpuType 字符串 高级 ISA 标识符,如“aarch64”、“x86_64”等。
    cpuVendorId 字符串 供应商标识符,如“ARM”、“正版Intel”等。
    cpuModel 字符串 处理器标识符,如“Cortex-A72”等。
    totalMemory int 已安装的 RAM,如 OS 所示
    freeMemory int 服务开始时间 (可用 RAM) ¹,如 OS 所示
    kernelName 字符串 内核名称,如“Linux”
    kernelVersion 字符串 其他内核生成信息,如“#75-Ubuntu SMP PREEMPT Fri Jun 3 14:24:57 UTC 2022”
    kernelRelease 字符串 内核生成版本标识符,如“5.4.0-1065-raspi”
    productVendor 字符串 指设备的产品供应商上下文,例如“Contoso Systems, Inc”;通常为空
    productName string 设备产品名称,如“Raspberry Pi 4 型号 B Rev 1.4”
    productVersion 字符串 设备产品版本;通常为空
    systemCapabilities 字符串 lshw -c system
    systemConfiguration 字符串 lshw -c system
    osConfigVersion 字符串 表示设备的 OSConfig 代理的版本号

    ¹ 该 freeMemory 属性设计用于一般系统特性化,而不是动态监视。 因此,它仅在服务启动时更新值,避免不断更新此值而产生 CPU 和网络费用。 有关可用内存的持续监视,请参阅 Azure Monitor

  • 示例有效负载 (,如孪生) properties.reported 部分所示

    "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
  • 路径properties.reported.Tpm (Tpm 组件)

  • 说明:向 OS 公开的 TPM 的状态和状态

  • 成员

    名称 类型 说明
    tpmStatus ints 的枚举 0 (未知) ,1 (检测到) ,2 (未检测到)
    tpmVersion 字符串 TPM 接口版本,例如“2.0”
    tpmManufacturer 字符串 标识符,例如“IFX”
  • Example payload (as seen in twin's properties.reported section)

    "Tpm": {
         "__t": "c",
         "tpmStatus": 1,
         "tpmVersion": "2.0",
         "tpmManufacturer": "IFX"
    }
    

后续步骤

有关 OSConfig 方案和功能的概述,请参阅:

有关具体的实际示例,请参阅: