Process and Process Runtime Resources
Status: Experimental
Process
Status:
type: process
Description: An operating system process.
Attribute | Type | Description | Examples | Requirement Level | Stability |
---|---|---|---|---|---|
process.command | string | The command used to launch the process (i.e. the command name). On Linux based systems, can be set to the zeroth string in proc/[pid]/cmdline . On Windows, can be set to the first parameter extracted from GetCommandLineW . | cmd/otelcol | Conditionally Required [1] | |
process.command_args | string[] | All the command arguments (including the command/executable itself) as received by the process. On Linux-based systems (and some other Unixoid systems supporting procfs), can be set according to the list of null-delimited strings extracted from proc/[pid]/cmdline . For libc-based executables, this would be the full argv vector passed to main . | ["cmd/otecol", "--config=config.yaml"] | Conditionally Required [2] | |
process.command_line | string | The full command used to launch the process as a single string representing the full command. On Windows, can be set to the result of GetCommandLineW . Do not set this if you have to assemble it just for monitoring; use process.command_args instead. | C:\cmd\otecol --config="my directory\config.yaml" | Conditionally Required [3] | |
process.executable.name | string | The name of the process executable. On Linux based systems, can be set to the Name in proc/[pid]/status . On Windows, can be set to the base name of GetProcessImageFileNameW . | otelcol | Conditionally Required [4] | |
process.executable.path | string | The full path to the process executable. On Linux based systems, can be set to the target of proc/[pid]/exe . On Windows, can be set to the result of GetProcessImageFileNameW . | /usr/bin/cmd/otelcol | Conditionally Required [5] | |
process.linux.cgroup | string | The control group associated with the process. [6] | 1:name=systemd:/user.slice/user-1000.slice/session-3.scope ; 0::/user.slice/user-1000.slice/user@1000.service/tmux-spawn-0267755b-4639-4a27-90ed-f19f88e53748.scope | Recommended | |
process.owner | string | The username of the user that owns the process. | root | Recommended | |
process.parent_pid | int | Parent Process identifier (PPID). | 111 | Recommended | |
process.pid | int | Process identifier (PID). | 1234 | Recommended |
[1] process.command
: See Selecting process attributes for details.
[2] process.command_args
: See Selecting process attributes for details.
[3] process.command_line
: See Selecting process attributes for details.
[4] process.executable.name
: See Selecting process attributes for details.
[5] process.executable.path
: See Selecting process attributes for details.
[6] process.linux.cgroup
: Control groups (cgroups) are a kernel feature used to organize and manage process resources. This attribute provides the path(s) to the cgroup(s) associated with the process, which should match the contents of the /proc/
Selecting process attributes
At least one of the following attributes is required:
process.executable.name
process.executable.path
process.command
process.command_line
process.command_args
Between process.command_args
and process.command_line
, usually process.command_args
should be preferred.
On Windows and other systems where the native format of process commands is a single string,
process.command_line
can additionally (or instead) be used.
Process runtimes
Status:
type: process.runtime
Description: The single (language) runtime instance which is monitored.
Attribute | Type | Description | Examples | Requirement Level | Stability |
---|---|---|---|---|---|
process.runtime.description | string | An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment. | Eclipse OpenJ9 Eclipse OpenJ9 VM openj9-0.21.0 | Recommended | |
process.runtime.name | string | The name of the runtime of this process. | OpenJDK Runtime Environment | Recommended | |
process.runtime.version | string | The version of the runtime of this process, as returned by the runtime without modification. | 14.0.2 | Recommended |
How to set these attributes for particular runtime kinds is described in the following subsections.
In addition to these attributes, telemetry.sdk.language
can be used to determine the general kind of runtime used.
Erlang Runtimes
process.runtime.name
- The name of the Erlang VM being used, i.e.,erlang:system_info(machine)
.process.runtime.version
- The version of the runtime (ERTS - Erlang Runtime System), i.e.,erlang:system_info(version)
.process.runtime.description
- string | An additional description about the runtime made by combining the OTP version, i.e.,erlang:system_info(otp_release)
, and ERTS version.
Example:
process.runtime.name | process.runtime.version | process.runtime.description |
---|---|---|
BEAM | 11.1 | Erlang/OTP 23 erts-11.1 |
Go Runtimes
Go Runtimes SHOULD fill in the as follows:
process.runtime.name
- Fill in an interpretation of Go’sruntime.Compiler
constant, according to the following rule: If the value isgc
, fill ingo
. Otherwise, fill in the exact value ofruntime.Compiler
.This can be implemented with the following Go snippet:
import "runtime" func getRuntimeName() string { if runtime.Compiler == "gc" { return "go" } return runtime.Compiler }
process.runtime.version
- Fill in the exact value returned byruntime.Version()
, i.e.go1.17
.process.runtime.description
- Use of this field is not recommended.
Examples for some Go compilers/runtimes:
process.runtime.name | Description |
---|---|
go | Official Go compiler. Also known as cmd/compile . |
gccgo | gccgo is a Go front end for GCC. |
tinygo | TinyGo compiler. |
Java runtimes
Java instrumentation SHOULD fill in the values by copying from system properties.
process.runtime.name
- Fill in the value ofjava.runtime.name
as isprocess.runtime.version
- Fill in the value ofjava.runtime.version
as isprocess.runtime.description
- Fill in the values ofjava.vm.vendor
,java.vm.name
,java.vm.version
in that order, separated by spaces.
Examples for some Java runtimes
Name | process.runtime.name | process.runtime.version | process.runtime.description |
---|---|---|---|
OpenJDK | OpenJDK Runtime Environment | 11.0.8+10 | Oracle Corporation OpenJDK 64-Bit Server VM 11.0.8+10 |
AdoptOpenJDK Eclipse J9 | OpenJDK Runtime Environment | 11.0.8+10 | Eclipse OpenJ9 Eclipse OpenJ9 VM openj9-0.21.0 |
AdoptOpenJDK Hotspot | OpenJDK Runtime Environment | 11.0.8+10 | AdoptOpenJDK OpenJDK 64-Bit Server VM 11.0.8+10 |
SapMachine | OpenJDK Runtime Environment | 11.0.8+10-LTS-sapmachine | SAP SE OpenJDK 64-Bit Server VM 11.0.8+10-LTS-sapmachine |
Zulu OpenJDK | OpenJDK Runtime Environment | 11.0.8+10-LTS | Azul Systems, Inc OpenJDK 64-Bit Server VM Zulu11.41+23-CA |
Oracle Hotspot 8 (32 bit) | Java(TM) SE Runtime Environment | 1.8.0_221-b11 | Oracle Corporation Java HotSpot(TM) Client VM 25.221-b11 |
IBM J9 8 | Java(TM) SE Runtime Environment | 8.0.5.25 - pwa6480sr5fp25-20181030_01(SR5 FP25) | IBM Corporation IBM J9 VM 2.9 |
Android 11 | Android Runtime | 0.9 | The Android Project Dalvik 2.1.0 |
JavaScript runtimes
JavaScript instrumentation SHOULD fill in the values by copying from built-in runtime constants.
process.runtime.name
:- When the runtime is Node.js, fill in the constant value
nodejs
. - When the runtime is Web Browser, fill in the constant value
browser
.
- When the runtime is Node.js, fill in the constant value
process.runtime.version
:- When the runtime is Node.js, fill in the value of
process.versions.node
. - When the runtime is Web Browser, fill in the value of
navigator.userAgent
.
- When the runtime is Node.js, fill in the value of
Examples for some JavaScript runtimes
Name | process.runtime.name | process.runtime.version |
---|---|---|
Node.js | nodejs | 14.15.4 |
Web Browser | browser | Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36 |
.NET Runtimes
.NET instrumentation SHOULD fill in the values by following values:
process.runtime.name
- Fill in the value by the name of runtime.process.runtime.version
- Fill in the value ofSystem.Environment.Version
for .NET, determine version based on the registry values for .NET Frameworkprocess.runtime.description
- Fill in the values ofSystem.Runtime.InteropServices.RuntimeInformation.FrameworkDescription
.
process.runtime.name
has the following list of well-known values. If one of them applies, then the respective value SHOULD be used, otherwise a custom value SHOULD be used.
- .NET Framework
- .NET
- .NET Core
- .NET Native
Examples for some .NET runtimes
Name | process.runtime.name | process.runtime.version | process.runtime.description |
---|---|---|---|
.NET Framework | .NET Framework | 4.8 | .NET Framework 4.8.9195.0 |
.NET | .NET | 7.0.14 | .NET 7.0.14 |
Python Runtimes
Python instrumentation SHOULD fill in the values as follows:
process.runtime.name
- Fill in the value ofsys.implementation.name
process.runtime.version
- Fill in thesys.implementation.version
values separated by dots. Leave out the release level and serial if the release level equalsfinal
and the serial equals zero (leave out either both or none).This can be implemented with the following Python snippet:
vinfo = sys.implementation.version result = ".".join(map( str, vinfo[:3] if vinfo.releaselevel == "final" and not vinfo.serial else vinfo ))
process.runtime.description
- Fill in the value ofsys.version
as-is.
Examples for some Python runtimes:
Name | process.runtime.name | process.runtime.version | process.runtime.description |
---|---|---|---|
CPython 3.7.3 on Windows | cpython | 3.7.3 | 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 22:22:05) [MSC v.1916 64 bit (AMD64)] |
CPython 3.8.6 on Linux | cpython | 3.8.6 | 3.8.6 (default, Sep 30 2020, 04:00:38) [GCC 10.2.0] |
PyPy 3 7.3.2 on Linux | pypy | 3.7.4 | 3.7.4 (?, Sep 27 2020, 15:12:26) [PyPy 7.3.2-alpha0 with GCC 10.2.0] |
Note that on Linux, there is an actual newline in the sys.version
string,
and the CPython string had a trailing space in the first line.
Pypy provided a CPython-compatible version in sys.implementation.version
instead of the actual implementation version which is available in sys.version
.
Ruby Runtimes
Ruby instrumentation SHOULD fill in the values by copying from built-in runtime constants.
process.runtime.name
- Fill in the value ofRUBY_ENGINE
as isprocess.runtime.version
- Fill in the value ofRUBY_VERSION
as isprocess.runtime.description
- Fill in the value ofRUBY_DESCRIPTION
as is
Examples for some Ruby runtimes
Name | process.runtime.name | process.runtime.version | process.runtime.description |
---|---|---|---|
MRI | ruby | 2.7.1 | ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-darwin19] |
TruffleRuby | truffleruby | 2.6.2 | truffleruby (Shopify) 20.0.0-dev-92ed3059, like ruby 2.6.2, GraalVM CE Native [x86_64-darwin] |
Feedback
Was this page helpful?
Thank you. Your feedback is appreciated!
Please let us know how we can improve this page. Your feedback is appreciated!