diff --git a/.chloggen/add_process_cgroup.yaml b/.chloggen/add_process_cgroup.yaml new file mode 100755 index 0000000000..5f32a6ac9c --- /dev/null +++ b/.chloggen/add_process_cgroup.yaml @@ -0,0 +1,22 @@ +# Use this changelog template to create an entry for release notes. +# +# If your change doesn't affect end users you should instead start +# your pull request title with [chore] or use the "Skip Changelog" label. + +# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix' +change_type: 'enhancement' + +# The name of the area of concern in the attributes-registry, (e.g. http, cloud, db) +component: linux + +# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`). +note: Add linux.process.cgroup attribute + +# Mandatory: One or more tracking issues related to the change. You can use the PR number here if no issue exists. +# The values here must be integers. +issues: [1357] + +# (Optional) One or more lines of additional information to render under the primary note. +# These lines will be padded with 2 spaces and then inserted directly into the document. +# Use pipe (|) for multiline entries. +subtext: diff --git a/docs/attributes-registry/process.md b/docs/attributes-registry/process.md index 994792206c..31ef1a611a 100644 --- a/docs/attributes-registry/process.md +++ b/docs/attributes-registry/process.md @@ -7,6 +7,7 @@ # Process - [Process Attributes](#process-attributes) +- [Process Linux Attributes](#process-linux-attributes) - [Deprecated Process Attributes](#deprecated-process-attributes) ## Process Attributes @@ -72,6 +73,16 @@ An operating system process. | `major` | major | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | `minor` | minor | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +## Process Linux Attributes + +Describes Linux Process attributes + +| Attribute | Type | Description | Examples | Stability | +|---|---|---|---|---| +| `process.linux.cgroup` | string | The control group associated with the process. [4] | `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` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | + +**[4] `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//cgroup](https://man7.org/linux/man-pages/man7/cgroups.7.html) file. + ## Deprecated Process Attributes Deprecated process attributes. diff --git a/docs/resource/process.md b/docs/resource/process.md index ba90335671..9f50e0e6b7 100644 --- a/docs/resource/process.md +++ b/docs/resource/process.md @@ -42,6 +42,7 @@ | [`process.command_line`](/docs/attributes-registry/process.md) | 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] | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | [`process.executable.name`](/docs/attributes-registry/process.md) | 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] | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | [`process.executable.path`](/docs/attributes-registry/process.md) | 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] | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| [`process.linux.cgroup`](/docs/attributes-registry/process.md) | 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` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | [`process.owner`](/docs/attributes-registry/process.md) | string | The username of the user that owns the process. | `root` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | [`process.parent_pid`](/docs/attributes-registry/process.md) | int | Parent Process identifier (PPID). | `111` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | [`process.pid`](/docs/attributes-registry/process.md) | int | Process identifier (PID). | `1234` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | @@ -56,6 +57,8 @@ **[5] `process.executable.path`:** See [Selecting process attributes](#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//cgroup](https://man7.org/linux/man-pages/man7/cgroups.7.html) file. + diff --git a/model/process/registry.yaml b/model/process/registry.yaml index 5220f72867..ebcd9012e8 100644 --- a/model/process/registry.yaml +++ b/model/process/registry.yaml @@ -239,3 +239,20 @@ groups: value: 'minor' stability: experimental stability: experimental + # process.linux* attribute group + - id: registry.process.linux + type: attribute_group + brief: "Describes Linux Process attributes" + attributes: + - id: process.linux.cgroup + type: string + stability: experimental + brief: The control group associated with the process. + examples: ["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"] + note: > + 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//cgroup](https://man7.org/linux/man-pages/man7/cgroups.7.html) + file. diff --git a/model/process/resources.yaml b/model/process/resources.yaml index 3c015d607e..3b3155439f 100644 --- a/model/process/resources.yaml +++ b/model/process/resources.yaml @@ -23,6 +23,7 @@ groups: requirement_level: conditionally_required: See [Selecting process attributes](#selecting-process-attributes) for details. - ref: process.owner + - ref: process.linux.cgroup - id: resource.process.runtime type: resource