Host

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 Level
host.archstringThe CPU architecture the host system is running on.amd64Recommended
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.fdbf79e8af94cb7f9e8df36789187052Recommended
host.image.idstringVM image ID or host OS image ID. For Cloud, this value is from the provider.ami-07b06b442921831e5Recommended
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-1905Recommended
host.image.versionstringThe version string of the VM image or host OS as defined in Version Attributes.0.1Recommended
host.ipstring[]Available IP addresses of the host, excluding loopback interfaces. [1][192.168.1.140, fe80::abc2:4a28:737a:609e]Opt-In
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-9F]Opt-In
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-testRecommended
host.typestringType of host. For Cloud, this must be the machine type.n1-standard-1Recommended

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

ValueDescription
amd64AMD64
arm32ARM32
arm64ARM64
ia64Itanium
ppc3232-bit PowerPC
ppc6464-bit PowerPC
s390xIBM z/Architecture
x8632-bit x86

type: host.cpu

AttributeTypeDescriptionExamplesRequirement Level
host.cpu.cache.l2.sizeintThe amount of level 2 memory cache available to the processor (in Bytes).12288000Opt-In
host.cpu.familyintNumeric value specifying the family or generation of the CPU.6Opt-In
host.cpu.model.idintModel identifier. It provides more granular information about the CPU, distinguishing it from other CPUs within the same family.6Opt-In
host.cpu.model.namestringModel designation of the processor.11th Gen Intel(R) Core(TM) i7-1185G7 @ 3.00GHzOpt-In
host.cpu.steppingintStepping or core revisions.1Opt-In
host.cpu.vendor.idstringProcessor manufacturer identifier. A maximum 12-character string. [1]GenuineIntelOpt-In

[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 host.id from non-containerized systems

Non-privileged Machine ID Lookup

When collecting host.id 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.

OSPrimaryFallback
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 host.id 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 host.id from privileged sources. If privileged lookup of host.id is required, the value should be injected via the OTEL_RESOURCE_ATTRIBUTES environment variable.