Skip to content

OTel working branch targeting OTel feature branch#4894

Open
janan07 wants to merge 46 commits intojanan07/otel-feature-branchfrom
janan07/OTel-feature-config-and-using
Open

OTel working branch targeting OTel feature branch#4894
janan07 wants to merge 46 commits intojanan07/otel-feature-branchfrom
janan07/OTel-feature-config-and-using

Conversation

@janan07
Copy link
Collaborator

@janan07 janan07 commented Jan 20, 2026

Describe your pull request here: This is the working branch for dev use that targets the OTel feature branch

List the file(s) included in this PR:

After creating the PR, follow the instructions in the comments.

Signed-off-by: Andrew Jandacek <andrew.jandacek@broadcom.com>
@github-actions
Copy link

😺 Thank you for creating this PR! To publish your content to Zowe Docs, follow these required steps.

  • Add the label review: doc.
  • Identify your content topic with a label. (Examples: area: apiml, area: cli, area: install and config, etc.)
  • Specify the major Zowe release(s) for your content. (Examples: release: V1, release: V2, release: V3)
    • If adding content that needs to be removed from V3 documentation, add the V3 N/A tag.
  • Select the master branch if your PR updates content that is on the live site. Select docs-staging if your PR updates content for a future release.
  • Notify the Doc Squad about this PR. If you don't know whom should review your content, message the #zowe-doc Slack channel. If you know which Doc Squad writer should approve your content, add that person as a reviewer.

Need help? Contact the Doc Squad in the #zowe-doc Slack channel.

@github-actions
Copy link

📁 The PR description is missing the file name(s) for the updated content. List all the files included in this PR so this information displays in our Zowe Docs GitHub Slack channel.

If you have addressed this issue already, refresh this page in your browser to remove this comment.

@janan07 janan07 requested a review from richard-salac January 20, 2026 10:26
@janan07 janan07 added area: apiml This issue is related to Zowe API Mediation Layer release: V3 Zowe V3 content review: sme Needs review by an SME labels Jan 20, 2026
@github-actions
Copy link

github-actions bot commented Jan 20, 2026

@github-actions github-actions bot temporarily deployed to pull request January 20, 2026 10:32 Inactive
Signed-off-by: Andrew Jandacek <andrew.jandacek@broadcom.com>
@github-actions github-actions bot temporarily deployed to pull request January 20, 2026 10:47 Inactive
Signed-off-by: Andrew Jandacek <andrew.jandacek@broadcom.com>
Signed-off-by: Andrew Jandacek <andrew.jandacek@broadcom.com>
@github-actions github-actions bot temporarily deployed to pull request January 20, 2026 16:05 Inactive
Signed-off-by: Andrew Jandacek <andrew.jandacek@broadcom.com>
@github-actions github-actions bot temporarily deployed to pull request January 21, 2026 10:52 Inactive
Signed-off-by: Andrew Jandacek <andrew.jandacek@broadcom.com>
@github-actions github-actions bot temporarily deployed to pull request January 21, 2026 13:20 Inactive
Signed-off-by: Andrew Jandacek <andrew.jandacek@broadcom.com>
@github-actions github-actions bot temporarily deployed to pull request January 22, 2026 09:53 Inactive
Copy link
Member

@balhar-jakub balhar-jakub left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

From the skeleton point of view, these are the only changes that would make the usage of the skeleton easier.

Let me know once the general explanation is available and I will review this part.

Signed-off-by: Andrew Jandacek <andrew.jandacek@broadcom.com>
@github-actions github-actions bot temporarily deployed to pull request January 22, 2026 10:56 Inactive
Signed-off-by: Andrew Jandacek <andrew.jandacek@broadcom.com>
@github-actions github-actions bot temporarily deployed to pull request January 22, 2026 11:12 Inactive
Signed-off-by: Andrew Jandacek <andrew.jandacek@broadcom.com>
@github-actions github-actions bot temporarily deployed to pull request January 22, 2026 13:46 Inactive
Signed-off-by: Andrew Jandacek <andrew.jandacek@broadcom.com>
Signed-off-by: Andrew Jandacek <andrew.jandacek@broadcom.com>
@github-actions github-actions bot temporarily deployed to pull request January 27, 2026 15:54 Inactive
Signed-off-by: Andrew Jandacek <andrew.jandacek@broadcom.com>
Signed-off-by: Andrew Jandacek <andrew.jandacek@broadcom.com>
@github-actions github-actions bot temporarily deployed to pull request January 27, 2026 16:22 Inactive
Signed-off-by: Andrew Jandacek <andrew.jandacek@broadcom.com>
@janan07 janan07 changed the base branch from docs-staging to janan07/otel-feature-branch January 28, 2026 10:50
@janan07 janan07 changed the title create skeleton of OTel OTel working branch targeting OTel feature branch Jan 28, 2026
Groups services into logical sets. Use this property value to distinguish between different installations, such as sysplex-a vs. sysplex-b, or north-datacenter vs. south-datacenter. `service.name` is expected to be unique within the same `namespace`.

* **service.instance.id** (The Unique Instance)
Identifies the specific running process or Address Space. Must be unique for each instance of `service.name` and `service.namespace` pair. On z/OS, this property is typically mapped to the Job Name or a unique UUID.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not true with jobname. Instance id must be globally unique. All instances on different lpars may have the same job name.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this better?

  • service.instance.id (The Unique Instance)
    Identifies a specific running process or Address Space. This value must be globally unique for every instance. As multiple z/OS systems can run identical Job Names, ensure that you combine the Job Name with a unique identifier (such as the LPAR name or a UUID) to ensure the instance can be isolated during troubleshooting.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unfortunately it is not. The general truth is "This value must be globally unique for every instance." - that's valid.

"Identifies a specific running process or Address Space." - Neither of them can be used as instance identifier. When apiml is restarted, new process id as well as address space id is created, so it creates a unique identification of every execution instead of instance.

"As multiple z/OS systems can run identical Job Names, ensure that you combine the Job Name with a unique identifier (such as the LPAR name or a UUID) to ensure the instance can be isolated during troubleshooting." - I am not sure this will work with 2 apiml instances installed on the same lpar.

I am more inclined to just describe the meaning at this point. We may update it with the first story finished.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does this rewritten definition make more sense?

service.instance.id (The Unique Instance)
A stable, unique identifier for a single instance of the service. Unlike a Process ID (PID) or Address Space ID (ASID)—which change every time a service restarts—this ID should remain constant across the lifecycle of the deployment.

To ensure global uniqueness across your enterprise:
Single Instance per LPAR: Use a combination of the System Name and the Job Name (e.g., SYS1-ZOWEAPIML).

Multiple Instances per LPAR: If you run multiple API ML instances on the same z/OS system, you must include a unique suffix or port number (e.g., SYS1-ZOWEAPIML-7443 and SYS1-ZOWEAPIML-8443) to ensure they are differentiated in your monitoring tools.

resource:
attributes:
service.name: "zowe-apiml"
service.namespace: "production-plex"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I suggest we put only examples of complete configuration instead of partial ones to specific attribute groups. For instance, here I would expect the 'production' to be set as deployment attribute

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are you suggesting then that we remove all configuration examples in this article or replace them with the complete configuration? If the latter, can you provide me with the complete configuration?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If we provide only the partial samples, can we be sure that the users will be able to navigate the docs to follow the right full sample? The use-case from the sysprog's perspective is to enable observability, not configure just some subset of attributes. They need to do it either all or nothing.

We do not have the configuration yet ad the implementation is still in progress.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's fine, we can remove all of the examples and have a sample when the implementation is completed.

* **resource.attributes**
A collection of key-value pairs used to identify the telemetry source. See the following sub-properties of `resource.attributes`:

* **service.name**
Copy link
Contributor

@richard-salac richard-salac Jan 28, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here we duplicate the explanation of service attributes that we have in a separate md file just for them. Similarly for the deployment. It will be difficult to keep them in sync over time.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If you think it's sufficient, I can link to the specific attribute article for these three resources. It just seems that if we have an article for enablement, the user should have an easy reference to what parms are being configured...

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You are right, but we do not have specific list now as some of the attributes are discovered automatically. The purpose of this PR is to create a skeleton to be updated once we get the issues implemented.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correct. This content is as a place-holder. I understand this could all change with the implementation.

Signed-off-by: Andrew Jandacek <andrew.jandacek@broadcom.com>
Signed-off-by: Andrew Jandacek <andrew.jandacek@broadcom.com>
Signed-off-by: Andrew Jandacek <andrew.jandacek@broadcom.com>
Signed-off-by: Andrew Jandacek <andrew.jandacek@broadcom.com>
Signed-off-by: Andrew Jandacek <andrew.jandacek@broadcom.com>
@github-actions github-actions bot temporarily deployed to pull request January 28, 2026 14:46 Inactive
Copy link
Collaborator

@iansergeant42 iansergeant42 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looking pretty good. Just a few things to address.

@@ -0,0 +1,96 @@
# Configure OpenTelemetry Service Attributes

Services are identified via the service.name, service.namespace, and service.instance.id properties. Together, these attributes create a unique identity for API ML instances across your enterprise.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

service.name, service.namespace, and service.instance.id? Trying to be consistent...


## z/OS Attribute Reference

The following attributes are captured during system discovery to describe the mainframe environment:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A couple of things:

  1. Can we describe what 'system discovery' means here? What actually populates the attributes? Our junior sys prog won't understand it.
  2. Given Richard's statement on process.pid not being configured by system discovery, does this move to another section?

Comment on lines 18 to 20
* **exporter.otlp.protocol**
The protocol is either `grpc` or `http/protobuf`.
**Default:** `grcp`
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To note here that if we do reinstate, we have a typo with grpc and grcp mentioned.

Signed-off-by: Andrew Jandacek <andrew.jandacek@broadcom.com>
@github-actions github-actions bot temporarily deployed to pull request January 29, 2026 10:28 Inactive
Signed-off-by: Andrew Jandacek <andrew.jandacek@broadcom.com>
Signed-off-by: Andrew Jandacek <andrew.jandacek@broadcom.com>
Signed-off-by: Andrew Jandacek <andrew.jandacek@broadcom.com>
Signed-off-by: Andrew Jandacek <andrew.jandacek@broadcom.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: apiml This issue is related to Zowe API Mediation Layer release: V3 Zowe V3 content review: sme Needs review by an SME

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants