🎉Celebrating fantastic new capabilities🎉
We build mainframe-inclusive observability support by focusing on application integration use cases so that our users gain significant and immediate observability value. This release delivers observability for requests from JMS applications via IBM MQ to a CICS transaction on z/OS.
Unveiling how digital requests from distributed and cloud applications are processed by MQ and CICS on z/OS:
- extends the visibility of service dependencies,
- exposes how workload fluctuations for these subsystems is driven by upstream client applications and
- reveals how MQ and CICS performance contribute to the enterprise’s digital end-user experience.
Below is an annotated screenshot of an OpenTelemetry trace in Jaeger that is composed of spans from applications hosted on Linux as well as z/OS. Application spans from MQ and CICS are created and linked by z/IRIS.
What you see below culminates from all the features made available in this release. In summary, these are: MQ for z/OS and CICS transaction spans using the OpenTelemetry framework and an extension of the z/IRIS Workflow Tracing capability to correlate spans from the same logical transaction.
Figure 1: Distributed MQ to CICS observability with z/IRIS 1.12
🥳New z/IRIS Spans
OpenTelemetry (OTEL) defines Spans as a representation of a unit of work or operation and the building blocks for Traces. z/IRIS adheres to the OpenTelemetry Trace specification and attribute semantics. Trace attributes created by z/IRIS for z/OS applications depict performance like CPU and zIIP utilization, latency or wait time incurred and additional identifiers from z/OS subsystems that may be useful in specialized analysis tooling. In addition to trace attributes, resource attributes describe the entities, e.g. CICS region and z/OS LPAR that processed the transaction.
Attributes are vital context used to analyze performance and are ingested by AIOps engines to find underlying correlative data between requests and anomalies that the user would not be able to detect through manual searching.
CICS Transaction Spans
Each CICS span from z/IRIS represents a CICS Transaction processed on z/OS. The span provides the transaction identifier, the duration and the status of the transaction.
Figure 2: CICS Transaction span in Jaeger
Refer to the CICS Transaction Spans documentation for documentation about span semantics and a full list of CICS attributes provided by z/IRIS.
MQ for z/OS Spans
The compound MQ for z/OS span is designed as follows:
A parent span identifies the MQ task or thread and provides the duration of the task.
Figure 3: MQ for z/OS parent span in Jaeger
One or many child spans represent the MQ objects (i.e. Queues or Topics) that the task connected to for message processing.
Figure 4: MQ for z/OS child span in Jaeger
Refer to MQ for z/OS Span for detailed documentation on the span semantics and a full list of MQ attributes provided by z/IRIS.
MQ spans supplements our existing MQ Metrics and Dashboards, totaling 2 Telemetry Signals by z/IRIS regarding MQ for z/OS observability.
⛓ New Workflow Tracing Support
What would Spans be without that additional relationship context that correlates one span to another to provide traces? Well, they definitely wouldn’t be as valuable as they currently are to enterprise-wide observability. z/IRIS correlates mainframe spans to depict the workflow of a request that is processed on z/OS and appends these to existing traces created from the upstream (non-mainframe) client applications.
Distributed MQ to MQ for z/OS
Users want to be able to track how MQ messages flow from client applications on distributed or cloud platforms to z/OS. To accomplish this, z/IRIS provides a new MQ API Interceptor to extract Trace context from these message so that MQ for z/OS spans will be appended to the relevant traces. This correlation satisfies user requirements to track MQ message processing into z/OS.
Below is a representation of a Trace that depicts a message request that originates from a front-end web-based application, is then processed by a Java Messaging Service application, followed by a Linux Queue Manager that is connected to a Queue Manager on z/OS via channel. The request message triggers a CICS request that opens QUEUE1 for processing.
Figure 5: Representation of a distributed MQ to MQ for z/OS trace
In the following screenshot shows MQ for z/OS Spans created by z/IRIS, appended to an OpenTelemetry trace in Jaeger.
Figure 6: MQ for z/OS Spans appended by z/IRIS to an OpenTelemetry Trace in Jaeger
MQ for z/OS to CICS Transaction
Because MQ messages are processed by applications, and CICS is one of the most popular transaction and application managers on z/OS, z/IRIS now correlates CICS transaction spans to MQ for z/OS spans. This reveals which CICS transactions work with MQ services and resources.
Figure 7: Representation of MQ for z/OS Spans and CICS Spans appended to a Distributed Trace
In Figure 1 above, we showed you the result of all this work – tracking MQ messages from distributed applications to CICS transactions.
😏 What’s next you ask?
We ❤️ context!! So next up is additional correlation context to depict more z/OS application workflows. This includes the following:
- Correlating CICS Spans to z/OS Connect Spans from the same API request.
- Correlating MQ Spans to z/OS Connect Spans from the same API request
- Correlating Db2 Spans to CICS Spans from the same logical transaction.
😀 As always, we look forward to receiving your feedback or questions.