Technical Blog Post
Maximo Management Interface(MMI) Work Center Released!
Maximo Management Interface (MMI) Work Center is now available for download! It is available for versions 22.214.171.124, 126.96.36.199, 188.8.131.52, 184.108.40.206 and 220.127.116.11 (18.104.22.168 version is also used for 22.214.171.124).
With 126.96.36.199 and later not requiring a separate download, as it is included with the release.
You can find the downloads in the Maximo content library here. Navigate to the link below, in the left menu, expand Maximo Content Library, scroll down and select Maximo Management Interface (MMI).
The MMI in its raw json format has been accessible in Maximo since version 188.8.131.52. However with it being embedded in rest API, it wasn't always easy to access or display the available information. With the release of Maximo Work Centers in 184.108.40.206, it became possible to better leverage this display of data in a way that could be integrated with core Maximo and not require additional tools or licenses to view. The solution was to leverage the lightning UI and use its framework to provide an easier way to view and access the information. This was initiated by the serviceability community to be able to better see system level information about Maximo.
Here is an example of the opening screen showing the different JVMs associated with the Maximo instance. Note the below screenshots are from the 220.127.116.11 version.
Example of the type of information displayed within each JVM.
Example of comparing memory information on different JVMs.
Requirements for Installing
You can find the installation instructions included with the download of the MMI UI.
As the MMI Work Center is a work center, it requires that the maximo-x war be deployed, and the MMI package be installed (if installed after already being deployed, require redeployment). There can be some configuration considerations, so for more details I would recommend viewing my other blog on deploying Maximo work centers (/support/pages/node/1114023).
With the package added to maximo-x and deployed, there is also a database script that is needed to run to add the application to Maximo in order to grant a user (through groups) access to the work center.
Granting access to the application
If you are on Maximo 18.104.22.168, there are two places that permissions need to be set.
For your security group, you need to make sure that permission to the Application itself (MMIUI) is granted access.
Also make sure that under the Logging Application, the Monitor Environment Information sig option is granted.
Navigating the UI
After logging in and ending up on the main page (first screenshot displayed above). Each different card displayed will be a JVM from your Maximo environments. The technical side is these are populated from the serversession table. Each card will have a Gather Data button and a Compare checkbox. The Gather Data button does a number of calls against the JVM and takes you to a page of various collected information. The compare checkbox adds the specified JVM to be compared when selected the Compare Server button that appears after selecting multiple check boxes (2 or more).
Clicking on a card will bring you in to the information for the JVM that is clicked on. From here, the top bar (list of tabs) is click and drag-able. This is the easiest way to scroll throw the different titles.
Note that the data is collected when you click on the tab, which means some sections may take time to fetch the data and render in the page.
Details On Specific Sections
This only displays the information that is present in Maximo. This does not show the queue information from WebSphere (except connections to interfaces).
When click on the class information within certain sections will bring you to the Classinfo section.
The search option works through full class names only and is case sensitive. For example, if you wanted to look up the db2 driver class, you would enter: com.ibm.db2.jcc.DB2Driver and then click search. It will then display the class information below. The oracle driver would be: oracle.jdbc.OracleDriver. And the SQL Server driver would be: com.microsoft.sqlserver.jdbc.SQLServerDriver.
This section may not load for each JVM. Due to a known issue in 22.214.171.124 and earlier which accessing resources across different JVMs. The information displayed is a combination of database crontask tables. This does not show status of currently running crontasks.
Only available in 126.96.36.199 and 188.8.131.52. This requires Application Security (LDAP) to be enabled and that the LDAPSYNC01 crontask instance is set up correctly. The hostname and port must be correct. The Usermapping must point to the proper basedn, have a filter and have (some) attributes that match the directory. If the cron task is set up correctly, the user and group information will display when you select LDAP Search. Only tested with Active Directory, may not work with other directory types.
Crontasks information will only display when you select the current JVM you are logged in to. This is fixed in 184.108.40.206.
If information on the cards in the first page are not displaying, then there is either a problem with the RMI connection, or a permissions problem. This usually comes down to a problem with the MMI and rest API itself, where accessing information across servers fails due to a communication problem. When the requests are done manually, they will show a 400 error. Hoping for more scenarios and cases where this happens to investigate further and provide a workaround or fix. There are multiple causes for this to happen. If you look at the first screenshot above, you can see an example. The server name shows up, but the other information doesn't display. In the case above, this is due to the first JVM not being started. The different JVMs are populated from the serversession table.
This is always the case in 220.127.116.11, as there is a bug in the handler for communicating across servers. This is fixed in the MIF IFIX released after March 5th, 2018.
Information on pages cannot be copied. The best way to get information copied is to use the Gather Data function. This can be collected with ctrl-a and ctrl-c (select all and copy to clipboard). Then pasted in a text document for easy sharing.
Classinfo does not always display class information when clicked. This is due to the same class being selected twice in a row. Refresh the page or change the opened class, then load the original class again.
Direction and Plans for MMI Work Center
There will be continued development for the MMI UI with new topics and added functionality as time goes on. With more experience and situations, comes new ways to use the tools provided. There is also a goal of creating some self analysis on the data collected by the Work Center so that there can be KPI type graphics that can give you warnings when there is a problem or potential problem brewing. For example when memory has less that 500mb free, if there is a deadlock detected in threads, if MBO counts are too high for on particular object, an overall health assessment for user load and load balancing, and more. While it may not be able to fix the issue, it will become very valuable in helping to identify problems that may be occurring at the system level. As features get added to Maximo, the consideration of if that feature can be leveraged in MMI will be considered, and may in some ways be the primary method of display.
Feedback is always highly valued and I will do my best to reply and answer questions that arise about and when using MMI.
Examples of Troubleshooting with MMI
A big piece to leverage in MMI will be the displaying of classes and classpaths. Let's say you are going through a scenario where you recently added a library to your WebSphere class path, and now it is preventing an application from within Maximo from displaying. The log is showing you that there is an error coming from the a class file in the library that you just added. You look up the class in classinfo and see that the class path is now coming from the library you just updated, and is overriding the class that was being used by the base Maximo version. You can now adjust your classpath to fix where this library is loaded from.
During the day you are receiving alerts from users that there is very slow response times. It is coming from some users but not all. You look to see what JVM they are on and then log in to MMI to see if there are any problems. From there you can see that JVM has more than 70 users logged on to it, there is a deadlock in the threads, and memory is extremely high with less than 100mb free. This would let you know you need to adjust the load balancing on this JVM to lighten the load on the system resources. Adjust the load balancing and ask some users to log out and log back in.
When trying to export a record through the MIF, you notice it fails. However you want to reprocess the record after making some adjustments and correcting the error. You can go into queues and find the sqout queue, and from there you are able to view the message details and see the exact details of the message that was exported in XML format.
There are many more situations but I wanted to provide some examples of what information can be found quickly and easily when investigating or monitoring Maximo.
Thanks for reading and I hope you enjoy using MMI!