How to utilize jeemanagement-1.1 performance statistics in openliberty

57 Views Asked by At

We're migration a legacy software from WebSphere traditional to OpenLiberty.

Just recently we have been extracting Performance Data based on the jeemanagement specification which says:

JSR77.6.1 Performance Data Framework

The Performance Data Framework consists of the StatisticsProvider model, which any managed object may implement, the Stats interfaces, which specify standard performance attribute semantics for each managed object type, and the Statistic interfaces which provide specific interfaces for representing the common performance data types.

unfortunately only our own Performance implementations are still working all JMX beans that used to provide statistics on open liberty no longer do.

E.g. the JVM JMX Bean used to have a stats attribute that could be queried and returned a Stats object, with various Statistics. On OpenLiberty there is a JVMStats JMX Bean, but that has only attributes and no CountStatisic or whatsoever - the way the specification requests it.

As it seems we are back to square one and the whole Performance Monitoring based on the old specification seems to have been dropped.

Is that true or did we miss something? The docs for the feature unfortunately say nothing that one can query for those statistics but only that the feature provides access to the specified interfaces. That would mean it's just there but dead, while the old PMI stuff can still be enabled.

Any suggestions if we might have missed a configuration option to enable that Performance Framework again would be appreciated. We need to keep the application working on the new and the old application server for quiet some time until the migration to the mpMonitoring is possible.

1

There are 1 best solutions below

0
On

I recently had a similar problem and investigated.

I found if you set , the Perf MBean appears (although the existing query recommended for WAS won't find it, as the type attribute is no longer set in the name).

WebSphere:type=Perf

However it is not the same as in WAS. If you compare the available API to WAS9

https://www.ibm.com/docs/api/v1/content/SSEQTJ_9.0.5/com.ibm.websphere.javadoc.doc/web/mbeanDocs/Perf.html

There are only around 10 methods available, all of the methods that took ObjectName have been removed. So you cannot lookup stats by ObjectName any more.

> WebSphere:type=Perf

Attribute: StatisticSet   of Type : java.lang.String

Attribute: CustomSetString   of Type : java.lang.String

Operation: java.lang.String  
  queryAllStatsAsString()

Operation: [Lcom.ibm.websphere.pmi.stat.StatLevelSpec;  
  getInstrumentationLevel(p1:com.ibm.websphere.pmi.stat.StatDescriptor  p2:java.lang.Boolean)

Operation: void  
  appendCustomSetString(p1:java.lang.String  p2:java.lang.Boolean)

Operation: [Lcom.ibm.websphere.pmi.PmiModuleConfig;  
  getConfigs(p1:java.util.Locale)

Operation: [Lcom.ibm.websphere.pmi.stat.StatDescriptor;  
  listStatMembers(p1:com.ibm.websphere.pmi.stat.StatDescriptor  p2:java.lang.Boolean)

Operation: void  
  setInstrumentationLevel(p1:[Lcom.ibm.websphere.pmi.stat.StatLevelSpec;  p2:java.lang.Boolean)

Operation: [Lcom.ibm.websphere.pmi.stat.WSStats;  
  getStatsArray(p1:[Lcom.ibm.websphere.pmi.stat.StatDescriptor;  p2:java.lang.Boolean)

Operation: void  
  setCustomSetString(p1:java.lang.String  p2:java.lang.Boolean)

Operation: com.ibm.websphere.pmi.PmiModuleConfig  
  getConfig(p1:java.lang.String)

There is a new method getStatsAsString which returns the list of available stats, which seems much less that what WAS had. Seems setCustomSetString has no effect either.

Overall the takeaway is that there is something there, but it is a far cry from what was available in WAS, and the Liberty Perf bean is not API compatible with the WAS Perf bean.

I raised https://github.com/OpenLiberty/open-liberty/issues/22483 to see if the OL folks can help.