Status: Experimental

type: host

Description: A host is defined as a computing instance. For example, physical servers, virtual machines, switches or disk array.

The host.* namespace SHOULD be exclusively used to capture resource attributes. To report host metrics, the system.* namespace SHOULD be used.

AttributeTypeDescriptionExamplesRequirement LevelStability
host.archstringThe CPU architecture the host system is running on.amd64; arm32; arm64RecommendedExperimental
host.idstringUnique host ID. For Cloud, this must be the instance_id assigned by the cloud provider. For non-containerized systems, this should be the machine-id. See the table below for the sources to use to determine the machine-id based on operating system.fdbf79e8af94cb7f9e8df36789187052RecommendedExperimental
host.image.idstringVM image ID or host OS image ID. For Cloud, this value is from the provider.ami-07b06b442921831e5RecommendedExperimental
host.image.namestringName of the VM image or OS install the host was instantiated from.infra-ami-eks-worker-node-7d4ec78312; CentOS-8-x86_64-1905RecommendedExperimental
host.image.versionstringThe version string of the VM image or host OS as defined in Version Attributes.0.1RecommendedExperimental
host.namestringName of the host. On Unix systems, it may contain what the hostname command returns, or the fully qualified hostname, or another name specified by the user.opentelemetry-testRecommendedExperimental
host.typestringType of host. For Cloud, this must be the machine type.n1-standard-1RecommendedExperimental
host.ipstring[]Available IP addresses of the host, excluding loopback interfaces. [1]; fe80::abc2:4a28:737a:609eOpt-InExperimental
host.macstring[]Available MAC addresses of the host, excluding loopback interfaces. [2]AC-DE-48-23-45-67; AC-DE-48-23-45-67-01-9FOpt-InExperimental

[1]: IPv4 Addresses MUST be specified in dotted-quad notation. IPv6 addresses MUST be specified in the RFC 5952 format.

[2]: MAC Addresses MUST be represented in IEEE RA hexadecimal form: as hyphen-separated octets in uppercase hexadecimal form from most to least significant.

host.arch has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.

ppc3232-bit PowerPCExperimental
ppc6464-bit PowerPCExperimental
s390xIBM z/ArchitectureExperimental
x8632-bit x86Experimental

type: host.cpu

AttributeTypeDescriptionExamplesRequirement LevelStability
host.cpu.cache.l2.sizeintThe amount of level 2 memory cache available to the processor (in Bytes).12288000Opt-InExperimental
host.cpu.familystringFamily or generation of the CPU.6; PA-RISC 1.1eOpt-InExperimental
host.cpu.model.idstringModel identifier. It provides more granular information about the CPU, distinguishing it from other CPUs within the same family.6; 9000/778/B180LOpt-InExperimental
host.cpu.model.namestringModel designation of the processor.11th Gen Intel(R) Core(TM) i7-1185G7 @ 3.00GHzOpt-InExperimental
host.cpu.steppingstringStepping or core revisions.1; r1p1Opt-InExperimental
host.cpu.vendor.idstringProcessor manufacturer identifier. A maximum 12-character string. [1]GenuineIntelOpt-InExperimental

[1]: CPUID command returns the vendor ID string in EBX, EDX and ECX registers. Writing these to memory in this order results in a 12-character string.

Collecting from non-containerized systems

Non-privileged Machine ID Lookup

When collecting for non-containerized systems non-privileged lookups of the machine id are preferred. SDK detector implementations MUST use the sources listed below to obtain the machine id.

Linuxcontents of /etc/machine-idcontents of /var/lib/dbus/machine-id
BSDcontents of /etc/hostidoutput of kenv -q smbios.system.uuid
MacOSIOPlatformUUID line from the output of ioreg -rd1 -c "IOPlatformExpertDevice"-
WindowsMachineGuid from registry HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography-

Privileged Machine ID Lookup

The can be looked up using privileged sources. For example, Linux systems can use the output of dmidecode -t system, dmidecode -t baseboard, dmidecode -t chassis, or read the corresponding data from the filesystem (e.g. cat /sys/devices/virtual/dmi/id/product_id, cat /sys/devices/virtual/dmi/id/product_uuid, etc), however, SDK resource detector implementations MUST not collect from privileged sources. If privileged lookup of is required, the value should be injected via the OTEL_RESOURCE_ATTRIBUTES environment variable.