SMF reports for MQ with JSON format

Turn MQ SMF data into JSON for simple consumption and analytics. Use a free open source tool for Windows and Linux to process your mainframe statistics.

On z/OS, MQ produces a lot of information about its usage through SMF records. One tool I published on GitHub a couple of years ago was designed to take collected SMF data and process it into a more consumable format. The goal was to create something that did nothing more than format the data, rather than try to analyse it in the manner of SupportPac MP1B. The analysis would be done using independent tools.

The comma-separated-value format is ideal for importing into spreadsheets and databases. Many of our z/OS customers have been helped by reports created from their data, and analysed through SQL queries.

While I didn’t write about it in a blog post then, I did publish a short video showing it in action. And since the original release, I’ve made regular updates to the code. Mostly these have been to simplify the SQL processing.

I’ve now updated the program to give a further output format option. It is intended to make it easy to feed SMF information to other analytics tools, many of which work with JSON structures. Other aspects of MQ administration can now be done with JSON-format data – the error logs on Distributed platforms, an event formatter (which is also available in MQ V9.0.5), the REST APIs for administration and messaging – and this is one further piece of a consistent story.

Read more about formatting MQ SMF as JSON

This post was last updated on November 25th, 2019 at 09:48 am

MQ JMS application development with Spring Boot

Application developers who are working in Java, using the JMS interface, often choose to work with the Spring Framework. Spring can simplify the coding of new applications by providing templates for common patterns, and has been successfully used for many
years
with the MQ JMS classes. The JmsTemplate class in Spring is the key interface here, but it still relies on having dependencies and configurations defined or coded.

The Spring Framework includes several modules for different capabilities. One of these components is Spring Boot. Spring
Boot starters conveniently pull in all the dependencies and auto-configuration libraries required to use a particular technology. This makes it very easy to get going with a new application and technology, faster than working directly with classes like JmsTemplate. So how can we enable this easy access for MQ applications?

In this post I described how MQ’s Java classes are available for direct download from Maven Central Repository. And we have now exploited that to create a Spring Boot Starter for MQ. You can download full source code for the module from GitHub.

Getting started with MQ Spring Boot

This post was last updated on November 20th, 2019 at 09:14 pm

Developing Java applications for MQ just got easier with Maven

Introduction

This post talks about a simpler way to develop Java applications for MQ, using a Maven repository to automatically install dependencies.

Application development for MQ requires access to the language-specific interfaces, libraries, headers, DLLs etc. You write an application and, depending on the language, the MQ-provided components are used within the IDE while you are writing code, checked during build processes, or referenced at runtime. If you want to make your application available to other people, then they will need access to at least the runtime MQ interfaces.

We made it much easier to distribute applications with the release of the MQ Redistributable Client packages.

And now we’ve also made it easier to write Java applications, so that you do not need to explicitly install anything before using MQ’s interfaces.

See more about setting up dependencies for your Java program

This post was last updated on February 9th, 2021 at 12:13 pm

IBM MQ and Node.js

A new way to develop MQ programs running in Node

MQ has always supported a wide range of API styles, languages and environments to enable applications to be written in whichever way a developer feels at home. There is the full-function procedural API, often called from C or Cobol programs; object-oriented varieties of that interface such as for Java and C#; and there is the JMS model.

One of my previous projects involved creation of a  Go binding for MQ. There are client APIs and protocols with simpler interfaces that can also connect to MQ, such as MQ Light and MQTT. And there are more than just these examples – the new REST messaging API is yet another. One environment where a lot of new applications are developed is Node.js, with JavaScript being the associated programming language.

And so, as part of making it easy for people to access MQ from Node, I’ve now published a JavaScript API implementation on github.

Continue reading “IBM MQ and Node.js”

This post was last updated on November 23rd, 2019 at 12:07 am

Adding resource statistics to your applications

MQ V9 added resource monitoring statistics that you can subscribe to. In this post I’m going to show how you can generate similar statistics from your own applications using the same model. For example, you may want to track how many successful and how many failed messages are being processed.

See how to add statistics generation to your applications

This post was last updated on November 19th, 2019 at 07:41 pm

IBM MQ and Salesforce messaging

IBM and Salesforce recently announced a partnership to deliver various solutions based around the different companies products.

As part of that initiative, MQ is now shipping a component that enables MQ applications to receive events caused by updates to Salesforce data, or driven by applications running in the Salesforce environment.

This new bridge, an optionally installable element of MQ V9.0.2 on the x64 Linux product, listens for these events and republishes them to MQ topics. Any MQ application using the normal publish/subscribe programming interfaces can get these messages, and then take action based on the contents. One of those MQ applications could be IIB, which has a node for Salesforce integration, allowing further work with that Salesforce data to be triggered through a message flow.

Along with this re-publication, the bridge program also contributes monitoring data to show how much traffic is being processed. The MQ Console can show this in its graph widgets:

There is an accompanying demo video to go with this post that shows the whole thing working

This post was last updated on November 24th, 2019 at 08:54 pm

MQ on Linux comes of age!

In something a bit different, I’ve decided to look back in time. That’s because, while digging through some old files recently, I realised that IBM MQ on Linux is

21 years old today.

SupportPac MA57, as far as I can find, made MQ the first IBM product to have any kind of public support for Linux and was released on 1 Feb 1996. There might have been some research projects or tools before then, and there were certainly other products considering options, (my email archives suggest that several corporate lawyers rapidly got involved, as IBM got to grips with GPL and other open source licenses) but I don’t remember anything else officially released at the time.
Read about SupportPac MA57

This post was last updated on November 19th, 2019 at 10:50 pm

Formatting MQ Events as JSON

IBM MQ has always been able to generate event messages when something “interesting” has occurred in the queue manager. These events could be showing that a queue is full, or that there has been an authorisation failure; someone needing an audit trail might want to capture the command and configuration events. These events are written as MQ messages to well-known queues, using PCF structures which can be decoded to give the full description of the event.

See how these events can now be fed to JSON-aware processors

This post was last updated on November 22nd, 2019 at 09:08 pm

Calling IBM MQ from Go applications

Go is a language created at Google and made available as an open-source project. Although originally designed for building reliable large-scale distributed applications, its general-purpose nature and the collection of interface packages provided in the core language and from other projects has helped it become popular for a much broader set of applications.

In this article, I’ll show how Go programs can make use of IBM MQ, permitting Go applications access to the services provided by MQ-enabled applications, with an API that is more natural for Go programmers than some of the elements in MQ’s C API.

Find out how to use the MQI bindings for Golang

This post was last updated on November 19th, 2019 at 05:51 pm

IBM MQ – Using Active Directory for authorisation in Unix queue managers

Permissions for accessing MQ functions have traditionally relied on using operating system definitions for users and groups. That could mean you having a requirement to define those users and groups on each system individually, which is challenging enough in a static topology, but becomes even worse in a dynamic environment such as a cloud where systems may be being defined and deleted regularly. And so some central definition of the identities becomes essential.
Continue reading “IBM MQ – Using Active Directory for authorisation in Unix queue managers”

This post was last updated on November 24th, 2019 at 08:37 pm