Add process.runtime.name / version describing executing runtime (#882)

* Add process.runtime.name / version to capture information about executing runtime.

* .NET core probably considered reference implementation going forward.

* Changelog

* Cleanups

* Fix go compiler

* Compiler

* Update specification/resource/semantic_conventions/process.md

Co-authored-by: Armin Ruech <armin.ruech@dynatrace.com>

* Java not constants

* Space

* Ecilpse:

* Add TODOs

* Avoid direct links

* Revert "Avoid direct links"

This reverts commit 7906c266570d993eaef28357d3cd25065be4d658.

* Try direct link

* Update Ruby

* Update specification/resource/semantic_conventions/process.md

Co-authored-by: Tristan Sloughter <t@crashfast.com>

* Consistency

* lint

* Android

Co-authored-by: Armin Ruech <armin.ruech@dynatrace.com>
Co-authored-by: Bogdan Drutu <bogdandrutu@gmail.com>
Co-authored-by: Tristan Sloughter <t@crashfast.com>
This commit is contained in:
Anuraag Agrawal 2020-09-23 03:25:07 +09:00 committed by GitHub
parent f6cd4c2e1a
commit cb368a7a64
1 changed files with 99 additions and 0 deletions

View File

@ -12,5 +12,104 @@
| process.command | 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` | See below | | process.command | 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` | See below |
| process.command_line | The full command used to launch the process. The value can be either a list of strings representing the ordered list of arguments, or a single string representing the full command. On Linux based systems, can be set to the list of null-delimited strings extracted from `proc/[pid]/cmdline`. On Windows, can be set to the result of `GetCommandLineW`. | Linux: `[ cmd/otecol, --config=config.yaml ]`, Windows: `cmd/otecol --config=config.yaml` | See below | | process.command_line | The full command used to launch the process. The value can be either a list of strings representing the ordered list of arguments, or a single string representing the full command. On Linux based systems, can be set to the list of null-delimited strings extracted from `proc/[pid]/cmdline`. On Windows, can be set to the result of `GetCommandLineW`. | Linux: `[ cmd/otecol, --config=config.yaml ]`, Windows: `cmd/otecol --config=config.yaml` | See below |
| process.owner | The username of the user that owns the process. | `root` | No | | process.owner | The username of the user that owns the process. | `root` | No |
| process.runtime.name | The name of the runtime of this process. For compiled native binaries, this SHOULD be the name of the compiler. | `OpenJDK Runtime Environment` | No |
| process.runtime.version | The version of the runtime of this process, as returned by the runtime without modification. | `14.0.2` | No |
| process.runtime.description | An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment. | `Eclipse OpenJ9 openj9-0.21.0` | No |
At least one of `process.executable.name`, `process.executable.path`, `process.command`, or `process.command_line` is required. At least one of `process.executable.name`, `process.executable.path`, `process.command`, or `process.command_line` is required.
`process.runtime.name` SHOULD be set to one of the values listed below, unless more detailed instructions are provided.
If none of the listed values apply, a custom value best describing the runtime CAN be used.
***Erlang Runtimes:***
TODO(<https://github.com/open-telemetry/opentelemetry-erlang/issues/96>): Confirm the contents here
- `process.runtime.name` - The name of the Erlang runtime being used. Usually will be BEAM.
- `process.runtime.version` - The ERTS (Erlang Runtime System) version. For BEAM this is found with `application:get_key(erts, vsn)`.
- `process.runtime.description` - The OTP version `erlang:system_info(otp_release)` and ERTS version combined.
Example:
| Name | `process.runtime.name` | `process.runtime.version` | `process.runtime.description` |
| --- | --- | --- | --- |
| beam | BEAM | 11.0.3 | Erlang/OTP 24 erts-11.0.3 |
***Go Runtimes:***
TODO(<https://github.com/open-telemetry/opentelemetry-go/issues/1181>): Confirm the contents here
| Value | Description |
| --- | --- |
| `gc` | Go compiler |
| `gccgo` | GCC Go frontend |
***Java runtimes:***
Java instrumentation should fill in the values by copying from system properties.
- `process.runtime.name` - Fill in the value of `java.runtime.name` as is
- `process.runtime.version` - Fill in the value of `java.runtime.version` as is
- `process.runtime.description` - Fill in the value of `java.vm.vendor`, followed by a space, followed by `java.vm.version`
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 11.0.8+10 |
| AdoptOpenJDK Eclipse J9 | OpenJDK Runtime Environment | 11.0.8+10 | Eclipse OpenJ9 openj9-0.21.0 |
| AdoptOpenJDK Hotspot | OpenJDK Runtime Environment | 11.0.8+10 | AdoptOpenJDK 11.0.8+10 |
| SapMachine | OpenJDK Runtime Environment | 11.0.8+10-LTS-sapmachine | SAP SE 11.0.8+10-LTS-sapmachine |
| Zulu OpenJDK | OpenJDK Runtime Environment | 11.0.8+10-LTS | Azul Systems, Inc Zulu11.41+23-CA |
| Android 11 | Android Runtime | 0.9 | The Android Project 2.1.0 |
***JavaScript runtimes:***
TODO(<https://github.com/open-telemetry/opentelemetry-js/issues/1544>): Confirm the contents here
| Value | Description |
| --- | --- |
| `nodejs` | NodeJS |
| `browser` | Web Browser |
| `iojs` | io.js |
| `graalvm` | GraalVM |
When the value is `browser`, `process.runtime.version` SHOULD be set to the User-Agent header.
***.NET Runtimes:***
TODO(<https://github.com/open-telemetry/opentelemetry-dotnet/issues/1281>): Confirm the contents here
| Value | Description |
| --- | --- |
| `dotnet-core` | .NET Core, .NET 5+ |
| `dotnet-framework` | .NET Framework |
| `mono` | Mono |
***Python Runtimes:***
TODO(<https://github.com/open-telemetry/opentelemetry-python/issues/1127>): Confirm the contents here
| Value | Description |
| --- | --- |
| `cpython` | CPython |
| `graalvm` | GraalVM |
| `ironpython` | IronPython |
| `jython` | Jython |
| `pypy` | PyPy|
| `pythonnet` | PythonNet |
***Ruby Runtimes:***
Ruby instrumentation should fill in the values by copying from built-in runtime constants.
- `process.runtime.name` - Fill in the value of `RUBY_ENGINE` as is
- `process.runtime.version` - Fill in the value of `RUBY_VERSION` as is
- `process.runtime.description` - Fill in the value of `RUBY_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] |