diff --git a/.chloggen/rrschulze_issue1687.yaml b/.chloggen/rrschulze_issue1687.yaml
new file mode 100644
index 0000000000..c1d41cf68f
--- /dev/null
+++ b/.chloggen/rrschulze_issue1687.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: new_component
+
+# The name of the area of concern in the attributes-registry, (e.g. http, cloud, db)
+component: mainframe, zos
+
+# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`).
+note: Add initial semantic conventions for mainframes
+
+# 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: [1687]
+
+# (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/.github/CODEOWNERS b/.github/CODEOWNERS
index ff2381b5fd..302416bafd 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -119,3 +119,9 @@
/templates/ @open-telemetry/specs-semconv-approvers @open-telemetry/weaver-approvers
/internal/ @open-telemetry/specs-semconv-approvers @open-telemetry/weaver-approvers
/docs/non-normative/code-generation.md @open-telemetry/specs-semconv-approvers @open-telemetry/weaver-approvers
+
+# Mainframe
+/docs/mainframe @open-telemetry/specs-semconv-approvers @open-telemetry/sig-mainframe-approvers
+/model/mainframe @open-telemetry/specs-semconv-approvers @open-telemetry/sig-mainframe-approvers
+/docs/zos @open-telemetry/specs-semconv-approvers @open-telemetry/sig-mainframe-approvers
+/model/zos @open-telemetry/specs-semconv-approvers @open-telemetry/sig-mainframe-approvers
\ No newline at end of file
diff --git a/.github/ISSUE_TEMPLATE/bug_report.yaml b/.github/ISSUE_TEMPLATE/bug_report.yaml
index 4edc8d9694..d355adde13 100644
--- a/.github/ISSUE_TEMPLATE/bug_report.yaml
+++ b/.github/ISSUE_TEMPLATE/bug_report.yaml
@@ -65,6 +65,7 @@ body:
- area:k8s
- area:linux
- area:log
+ - area:mainframe
- area:messaging
- area:network
- area:nodejs
@@ -93,6 +94,7 @@ body:
- area:v8js
- area:vcs
- area:webengine
+ - area:zos
# End semconv area list
- type: textarea
attributes:
diff --git a/.github/ISSUE_TEMPLATE/change_proposal.yaml b/.github/ISSUE_TEMPLATE/change_proposal.yaml
index b9e963a44b..d8c96455a5 100644
--- a/.github/ISSUE_TEMPLATE/change_proposal.yaml
+++ b/.github/ISSUE_TEMPLATE/change_proposal.yaml
@@ -57,6 +57,7 @@ body:
- area:k8s
- area:linux
- area:log
+ - area:mainframe
- area:messaging
- area:network
- area:nodejs
@@ -85,6 +86,7 @@ body:
- area:v8js
- area:vcs
- area:webengine
+ - area:zos
# End semconv area list
- type: textarea
attributes:
diff --git a/.github/ISSUE_TEMPLATE/new-conventions.yaml b/.github/ISSUE_TEMPLATE/new-conventions.yaml
index f1daf6eac4..f69efe22a9 100644
--- a/.github/ISSUE_TEMPLATE/new-conventions.yaml
+++ b/.github/ISSUE_TEMPLATE/new-conventions.yaml
@@ -14,6 +14,90 @@ body:
pull requests, issues, and questions in this area.
Creating a new issue here is a great first step to find others interested in collaborating.
+ - type: dropdown
+ id: area
+ attributes:
+ label: Area(s)
+ description: Which area(s) does your new conventions concern? If none fits, please select `area:new`
+ multiple: true
+ options:
+ - area:new
+ # NOTE: The list below is autogenerated using `make generate-gh-issue-templates`
+ # DO NOT manually edit it.
+ # Start semconv area list
+ - area:android
+ - area:artifact
+ - area:aspnetcore
+ - area:aws
+ - area:azure
+ - area:browser
+ - area:cassandra
+ - area:cicd
+ - area:client
+ - area:cloud
+ - area:cloudevents
+ - area:cloudfoundry
+ - area:code
+ - area:container
+ - area:cpu
+ - area:db
+ - area:deployment
+ - area:destination
+ - area:device
+ - area:disk
+ - area:dns
+ - area:dotnet
+ - area:elasticsearch
+ - area:enduser
+ - area:error
+ - area:exception
+ - area:faas
+ - area:feature-flag
+ - area:file
+ - area:gcp
+ - area:gen-ai
+ - area:geo
+ - area:go
+ - area:graphql
+ - area:hardware
+ - area:heroku
+ - area:host
+ - area:http
+ - area:jvm
+ - area:k8s
+ - area:linux
+ - area:log
+ - area:mainframe
+ - area:messaging
+ - area:network
+ - area:nodejs
+ - area:oci
+ - area:opentracing
+ - area:os
+ - area:otel
+ - area:peer
+ - area:process
+ - area:profile
+ - area:rpc
+ - area:security-rule
+ - area:server
+ - area:service
+ - area:session
+ - area:signalr
+ - area:source
+ - area:system
+ - area:telemetry
+ - area:test
+ - area:thread
+ - area:tls
+ - area:url
+ - area:user
+ - area:user-agent
+ - area:v8js
+ - area:vcs
+ - area:webengine
+ - area:zos
+ # End semconv area list
- type: textarea
attributes:
label: Propose new conventions
diff --git a/docs/attributes-registry/README.md b/docs/attributes-registry/README.md
index 629a46c242..d05d88fd12 100644
--- a/docs/attributes-registry/README.md
+++ b/docs/attributes-registry/README.md
@@ -77,6 +77,7 @@ Currently, the following namespaces exist:
- [K8s](k8s.md)
- [Linux](linux.md)
- [Log](log.md)
+- [Mainframe](mainframe.md)
- [Messaging](messaging.md)
- [Network](network.md)
- [NodeJS](nodejs.md)
@@ -105,5 +106,6 @@ Currently, the following namespaces exist:
- [V8js](v8js.md)
- [VCS](vcs.md)
- [Webengine](webengine.md)
+- [Zos](zos.md)
[developers recommendations]: ../general/naming.md#recommendations-for-application-developers
diff --git a/docs/attributes-registry/mainframe.md b/docs/attributes-registry/mainframe.md
new file mode 100644
index 0000000000..296d34b5f3
--- /dev/null
+++ b/docs/attributes-registry/mainframe.md
@@ -0,0 +1,12 @@
+
+
+
+# Mainframe
+
+## Mainframe LPAR attributes
+
+This document defines attributes of a Mainframe Logical Partition (LPAR).
+
+| Attribute | Type | Description | Examples | Stability |
+|---|---|---|---|---|
+| `mainframe.lpar.name` | string | Name of the logical partition that hosts a systems with a mainframe operating system. | `LPAR01` |  |
diff --git a/docs/attributes-registry/tps.md b/docs/attributes-registry/tps.md
new file mode 100644
index 0000000000..3dcdc2c6d7
--- /dev/null
+++ b/docs/attributes-registry/tps.md
@@ -0,0 +1,32 @@
+
+
+
+
+
+# Tps
+
+- [Transaction Processing System Attributes](#transaction-processing-system-attributes)
+- [IBM Information Management System (IMS) Attributes](#ibm-information-management-system-ims-attributes)
+
+## Transaction Processing System Attributes
+
+This group defines generic attributes for Transaction Processing Systems (TPS).
+
+| Attribute | Type | Description | Examples | Stability |
+|---|---|---|---|---|
+| `tps.program.name` | string | Program name executed by the task | `PROG123` |  |
+| `tps.region.id` | string | Runtime environment within the Transaction Processing System | `PRD1` |  |
+| `tps.system` | string | Type of Transaction Processing System | `jta`; `tuxedo`; `cics`; `ims`; `ztpf` |  |
+| `tps.task.id` | string | Identifier of the task created to run the transaction | `1554` |  |
+| `tps.transaction.id` | string | Identifier of the transaction initiated by a user or system request | `TRX1` |  |
+| `tps.transaction.owner` | string | Identifier of the user owning the transaction | `USER` |  |
+| `tps.unit_of_work.id` | string | Unit of work executed by the program | `DF308CBF385A3C05` |  |
+
+## IBM Information Management System (IMS) Attributes
+
+This group defines attributes for IBM Information Management System (IMS) for z/OS
+
+| Attribute | Type | Description | Examples | Stability |
+|---|---|---|---|---|
+| `tps.ims.commit_mode` | string | Determines the type of commit mode processing that IMS performs. | `0`; `1` |  |
diff --git a/docs/attributes-registry/zos.md b/docs/attributes-registry/zos.md
new file mode 100644
index 0000000000..2f834c42d0
--- /dev/null
+++ b/docs/attributes-registry/zos.md
@@ -0,0 +1,13 @@
+
+
+
+# Zos
+
+## z/OS attributes
+
+This document defines attributes of a z/OS resource.
+
+| Attribute | Type | Description | Examples | Stability |
+|---|---|---|---|---|
+| `zos.smf.id` | string | The System Management Facility (SMF) Identifier uniquely identified a z/OS system within a SYSPLEX or mainframe environment and is used for system and performance analysis. | `SYS1` |  |
+| `zos.sysplex` | string | The name of the SYSPLEX to which the z/OS system belongs too. | `SYSPLEX1` |  |
diff --git a/docs/resource/zos.md b/docs/resource/zos.md
new file mode 100644
index 0000000000..963384b4a3
--- /dev/null
+++ b/docs/resource/zos.md
@@ -0,0 +1,114 @@
+
+
+
+
+
+
+
+
+**Status:** 
+
+**type:** `zos.software`
+
+**Description:** A software resource running on a z/OS system.
+| Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability |
+|---|---|---|---|---|---|
+| [`os.type`](/docs/attributes-registry/os.md) | string | The operating system type. | `z_os` | `Required` |  |
+| [`process.command`](/docs/attributes-registry/process.md) | string | The command used to launch the process (i.e. the command name). On z/OS, SHOULD be set to the name of the job used to start the z/OS system software. | `CICSSTRT` | `Required` |  |
+| [`process.pid`](/docs/attributes-registry/process.md) | int | Process identifier (PID). [1] | `008A` | `Required` |  |
+| [`service.instance.id`](/docs/attributes-registry/service.md) | string | The string ID of the service instance. [2] | `CICSPROD` | `Required` |  |
+| [`service.name`](/docs/attributes-registry/service.md) | string | Logical name of the service. [3] | `CICS TS`; `Datacom`; `ADABAS` | `Required` |  |
+| [`service.namespace`](/docs/attributes-registry/service.md) | string | A namespace for `service.name`. [4] | `CICSPLX2` | `Required` |  |
+| [`service.version`](/docs/attributes-registry/service.md) | string | The version string of the service API or implementation. The format is not defined by these conventions. [5] | `5.6` | `Required` |  |
+| [`zos.smf.id`](/docs/attributes-registry/zos.md) | string | The System Management Facility (SMF) Identifier uniquely identified a z/OS system within a SYSPLEX or mainframe environment and is used for system and performance analysis. | `SYS1` | `Required` |  |
+| [`zos.sysplex`](/docs/attributes-registry/zos.md) | string | The name of the SYSPLEX to which the z/OS system belongs too. | `SYSPLEX1` | `Required` |  |
+| [`host.arch`](/docs/attributes-registry/host.md) | string | The CPU architecture the host system is running on. | `s390x` | `Recommended` |  |
+| [`host.name`](/docs/attributes-registry/host.md) | string | Name of the host. On z/OS, SHOULD be the full qualified hostname used to register the z/OS system in DNS. | `SYS1.DOMAIN.COM` | `Recommended` |  |
+| [`mainframe.lpar.name`](/docs/attributes-registry/mainframe.md) | string | Name of the logical partition that hosts a systems with a mainframe operating system. | `LPAR01` | `Recommended` |  |
+| [`os.version`](/docs/attributes-registry/os.md) | string | The version string of the operating system. On z/OS, SHOULD be the release returned by the command `d iplinfo`. | `3.1.0` | `Recommended` |  |
+| [`telemetry.sdk.language`](/docs/attributes-registry/telemetry.md) | string | The language of the telemetry SDK. | `cpp`; `dotnet`; `erlang` | `Recommended` |  |
+| [`telemetry.sdk.name`](/docs/attributes-registry/telemetry.md) | string | The name of the telemetry SDK as defined above. [6] | `opentelemetry` | `Recommended` |  |
+| [`telemetry.sdk.version`](/docs/attributes-registry/telemetry.md) | string | The version string of the telemetry SDK. | `1.2.3` | `Recommended` |  |
+| [`host.id`](/docs/attributes-registry/host.md) | string | Unique host ID. On z/OS, SHOULD be the concatenation of sysplex name and SMFID, separated by a dash | `SYSPLEX1-SYS1` | `Opt-In` |  |
+| [`os.description`](/docs/attributes-registry/os.md) | string | Human readable OS version information, e.g., as reported by command `d iplinfo`. | `IBM z/OS 3.1` | `Opt-In` |  |
+| [`os.name`](/docs/attributes-registry/os.md) | string | Human readable operating system name. | `z/OS` | `Opt-In` |  |
+| [`process.owner`](/docs/attributes-registry/process.md) | string | The username of the user that owns the process. [7] | `CICSUSR` | `Opt-In` |  |
+| [`process.runtime.description`](/docs/attributes-registry/process.md) | string | An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment. | `IBM Customer Information Control System (CICS) Transaction Server for z/OS Version 5.6` | `Opt-In` |  |
+| [`process.runtime.name`](/docs/attributes-registry/process.md) | string | The name of the runtime of this process. | `CICS Transaction Server z/OS Version 5.6` | `Opt-In` |  |
+| [`process.runtime.version`](/docs/attributes-registry/process.md) | string | The version of the runtime of this process, as returned by the runtime without modification. | `5.6` | `Opt-In` |  |
+
+**[1] `process.pid`:** On z/OS, SHOULD be set to the Address Space Identifier.
+
+**[2] `service.instance.id`:** For z/OS system software, SHOULD be set to the identifier representing the current instance of the the z/OS system software, e.g., the CICS region APPLID or IMS region IMSID.
+
+**[3] `service.name`:** For z/OS system software, SHOULD be set to an appreviated name of the z/OS system software.
+
+**[4] `service.namespace`:** For z/OS system software, SHOULD be set to the identifier representing of a grouping of the z/OS system software instances, e.g., the name of the CICSPLEX.
+
+**[5] `service.version`:** For z/OS system software, SHOULD be set to the version of the z/OS system software.
+
+**[6] `telemetry.sdk.name`:** The OpenTelemetry SDK MUST set the `telemetry.sdk.name` attribute to `opentelemetry`.
+If another SDK, like a fork or a vendor-provided implementation, is used, this SDK MUST set the
+`telemetry.sdk.name` attribute to the fully-qualified class or module name of this SDK's main entry point
+or another suitable identifier depending on the language.
+The identifier `opentelemetry` is reserved and MUST NOT be used in this case.
+All custom identifiers SHOULD be stable across different versions of an implementation.
+
+**[7] `process.owner`:** On z/OS, SHOULD be set to the user under which the z/OS system software is executed.
+
+---
+
+`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.
+
+| Value | Description | Stability |
+|---|---|---|
+| `amd64` | AMD64 |  |
+| `arm32` | ARM32 |  |
+| `arm64` | ARM64 |  |
+| `ia64` | Itanium |  |
+| `ppc32` | 32-bit PowerPC |  |
+| `ppc64` | 64-bit PowerPC |  |
+| `s390x` | IBM z/Architecture |  |
+| `x86` | 32-bit x86 |  |
+
+---
+
+`os.type` 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.
+
+| Value | Description | Stability |
+|---|---|---|
+| `aix` | AIX (Advanced Interactive eXecutive) |  |
+| `darwin` | Apple Darwin |  |
+| `dragonflybsd` | DragonFly BSD |  |
+| `freebsd` | FreeBSD |  |
+| `hpux` | HP-UX (Hewlett Packard Unix) |  |
+| `linux` | Linux |  |
+| `netbsd` | NetBSD |  |
+| `openbsd` | OpenBSD |  |
+| `solaris` | SunOS, Oracle Solaris |  |
+| `windows` | Microsoft Windows |  |
+| `z_os` | IBM z/OS |  |
+
+---
+
+`telemetry.sdk.language` 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.
+
+| Value | Description | Stability |
+|---|---|---|
+| `cpp` | cpp |  |
+| `dotnet` | dotnet |  |
+| `erlang` | erlang |  |
+| `go` | go |  |
+| `java` | java |  |
+| `nodejs` | nodejs |  |
+| `php` | php |  |
+| `python` | python |  |
+| `ruby` | ruby |  |
+| `rust` | rust |  |
+| `swift` | swift |  |
+| `webjs` | webjs |  |
+
+
+
+
+
diff --git a/model/mainframe/registry_lpar.yaml b/model/mainframe/registry_lpar.yaml
new file mode 100644
index 0000000000..d1d1deb5ba
--- /dev/null
+++ b/model/mainframe/registry_lpar.yaml
@@ -0,0 +1,11 @@
+groups:
+ - id: registry.mainframe.lpar
+ type: attribute_group
+ display_name: Mainframe LPAR attributes
+ brief: This document defines attributes of a Mainframe Logical Partition (LPAR).
+ attributes:
+ - id: mainframe.lpar.name
+ type: string
+ stability: experimental
+ brief: "Name of the logical partition that hosts a systems with a mainframe operating system."
+ examples: ["LPAR01"]
diff --git a/model/zos/registry.yaml b/model/zos/registry.yaml
new file mode 100644
index 0000000000..e8ca2735e1
--- /dev/null
+++ b/model/zos/registry.yaml
@@ -0,0 +1,17 @@
+groups:
+ - id: registry.zos
+ type: attribute_group
+ display_name: z/OS attributes
+ brief: >
+ This document defines attributes of a z/OS resource.
+ attributes:
+ - id: zos.smf.id
+ type: string
+ stability: experimental
+ brief: "The System Management Facility (SMF) Identifier uniquely identified a z/OS system within a SYSPLEX or mainframe environment and is used for system and performance analysis."
+ examples: ["SYS1"]
+ - id: zos.sysplex
+ type: string
+ stability: experimental
+ brief: "The name of the SYSPLEX to which the z/OS system belongs too."
+ examples: ["SYSPLEX1"]
diff --git a/model/zos/resources.yaml b/model/zos/resources.yaml
new file mode 100644
index 0000000000..bc5d2f8a12
--- /dev/null
+++ b/model/zos/resources.yaml
@@ -0,0 +1,74 @@
+groups:
+ - id: resource.zos.software
+ type: resource
+ stability: experimental
+ name: zos.software
+ brief: A software resource running on a z/OS system.
+ attributes:
+ - ref: service.name
+ note: For z/OS system software, SHOULD be set to an appreviated name of the z/OS system software.
+ examples: ['CICS TS', 'Datacom', 'ADABAS']
+ requirement_level: required
+ - ref: service.version
+ note: For z/OS system software, SHOULD be set to the version of the z/OS system software.
+ examples: '5.6'
+ requirement_level: required
+ - ref: service.instance.id
+ note: For z/OS system software, SHOULD be set to the identifier representing the current instance of the the z/OS system software, e.g., the CICS region APPLID or IMS region IMSID.
+ examples: 'CICSPROD'
+ requirement_level: required
+ - ref: service.namespace
+ note: For z/OS system software, SHOULD be set to the identifier representing of a grouping of the z/OS system software instances, e.g., the name of the CICSPLEX.
+ examples: 'CICSPLX2'
+ requirement_level: required
+ - ref: process.command
+ brief: 'The command used to launch the process (i.e. the command name). On z/OS, SHOULD be set to the name of the job used to start the z/OS system software.'
+ examples: 'CICSSTRT'
+ requirement_level: required
+ - ref: process.pid
+ note: 'On z/OS, SHOULD be set to the Address Space Identifier.'
+ examples: '008A'
+ requirement_level: required
+ - ref: process.owner
+ note: 'On z/OS, SHOULD be set to the user under which the z/OS system software is executed.'
+ examples: 'CICSUSR'
+ requirement_level: opt_in
+ - ref: process.runtime.description
+ examples: 'IBM Customer Information Control System (CICS) Transaction Server for z/OS Version 5.6'
+ requirement_level: opt_in
+ - ref: process.runtime.name
+ examples: 'CICS Transaction Server z/OS Version 5.6'
+ requirement_level: opt_in
+ - ref: process.runtime.version
+ examples: '5.6'
+ requirement_level: opt_in
+ - ref: os.type
+ examples: 'z_os'
+ requirement_level: required
+ - ref: os.description
+ brief: 'Human readable OS version information, e.g., as reported by command `d iplinfo`.'
+ examples: 'IBM z/OS 3.1'
+ requirement_level: opt_in
+ - ref: os.name
+ examples: z/OS
+ requirement_level: opt_in
+ - ref: os.version
+ brief: 'The version string of the operating system. On z/OS, SHOULD be the release returned by the command `d iplinfo`.'
+ examples: '3.1.0'
+ - ref: zos.sysplex
+ requirement_level: required
+ - ref: zos.smf.id
+ requirement_level: required
+ - ref: mainframe.lpar.name
+ - ref: host.name
+ brief: 'Name of the host. On z/OS, SHOULD be the full qualified hostname used to register the z/OS system in DNS.'
+ examples: 'SYS1.DOMAIN.COM'
+ - ref: host.arch
+ examples: 's390x'
+ - ref: host.id
+ brief: 'Unique host ID. On z/OS, SHOULD be the concatenation of sysplex name and SMFID, separated by a dash'
+ examples: 'SYSPLEX1-SYS1'
+ requirement_level: opt_in
+ - ref: telemetry.sdk.language
+ - ref: telemetry.sdk.name
+ - ref: telemetry.sdk.version