Cognos Analytics

Expand all | Collapse all

11.1.7 FP2 - Monitoring JVM externally (JMX activation)

  • 1.  11.1.7 FP2 - Monitoring JVM externally (JMX activation)

    Posted 28 days ago
    Hi All,

    I'm trying to use JMX access to monitor the activity of all Cognos's JVMs.
    Here is my Cognos environment:
    - Server A
    -> 1 Content Manager (CM1)
    -> 1 Application Tier (AT1)
    - Server B
    -> 1 Application Tier (AT2)

    Like the installation guide said (inst_cr_winux.pdf, page 247, Chapter 14. Performance Maintenance), in CM1 configuration, I enabled JMX port (29000) and JMX credentials.
    After restarting all the Cognos services on both servers, I'm testing in JVisualVM and JConsole (JDK 1.8.0_192) following JMX urls

    For monitoring AT1 ou CM1 JVM :
    service:jmx:rmi://[server A full name]/jndi/rmi://[server A full name]:29000/proxyserver

    or

    For monitoring AT2 JVM :
    service:jmx:rmi://[server A full name]/jndi/rmi://[server B full name]:29000/proxyserver

    Each time, I can add the JMX connexion in JMX tool. But when I open it, CPU, Memory, and other tabs are disabled and I've this message : "Not supported for this JVM"
    What I'm doing wrong ?

    Tech docs and guides don't give any another procedure.

    Note : I've tested old method (set JMX paramaters in bootstrap XML file) which I usually use.
    It works fine only in anonymous connection.

    Can you help me for finding the good setting to use JMX proxyserver ?

    Thanks
    Have a good day and a great week-end,
    David.

    ------------------------------
    DAVID MOULIN
    Analytics expert
    Micropole
    Levallois-Perret
    ------------------------------


  • 2.  RE: 11.1.7 FP2 - Monitoring JVM externally (JMX activation)

    Posted 27 days ago
    Hello David,

    I got a same kind of issue on 11.1.7 FP2

    In my understanding RMI registry is already started when you change to fill the login/password field and does not update value. We can see the following error in log files :

    INFO: Unable to start RMI registry
    java.io.IOException: Cannot bind to URL [rmi://devcognos:29001/server]: javax.naming.NameAlreadyBoundException: server [Root exception is java.rmi.AlreadyBoundException: server]
    at javax.management.remote.rmi.RMIConnectorServer.newIOException(RMIConnectorServer.java:838)
    at javax.management.remote.rmi.RMIConnectorServer.start(RMIConnectorServer.java:443)
    at com.cognos.pogo.monitoring.jmx.utils.PogoMBeanServerConnection.startConnector(PogoMBeanServerConnection.java:55)
    at com.cognos.pogo.monitoring.jmx.utils.PogoMBeanRMIServerConnection.startConnector(PogoMBeanRMIServerConnection.java:144)
    at com.cognos.pogo.monitoring.jmx.utils.PogoMBeanRMIServerConnection.startRMIConnector(PogoMBeanRMIServerConnection.java:112)
    at com.cognos.pogo.monitoring.jmx.utils.PogoMBeanRMIServerConnection.startRMIConnectorIfEnabled(PogoMBeanRMIServerConnection.java:100)
    at com.cognos.pogo.monitoring.jmx.utils.PogoMBeanRMIServerConnection.start(PogoMBeanRMIServerConnection.java:94)
    at com.cognos.pogo.monitoring.jmx.PogoMBeanServerJMX.startLocalRMIConnector(PogoMBeanServerJMX.java:125)
    at com.cognos.pogo.monitoring.jmx.PogoMBeanServerJMX.createMBeanServer(PogoMBeanServerJMX.java:63)
    at com.cognos.pogo.monitoring.jmx.PogoMBeanServer.getInstance(PogoMBeanServer.java:49)
    at com.cognos.pogo.monitoring.ReporterBase.<init>(ReporterBase.java:46)
    at com.cognos.pogo.monitoring.RequestReporter.<init>(RequestReporter.java:34)
    at com.cognos.pogo.monitoring.QueueableRequestReporter.<init>(QueueableRequestReporter.java:33)
    at com.ibm.cognos.camaaa.internal.LPS.LPSProcessManager.<init>(LPSProcessManager.java:82)
    at com.ibm.cognos.camaaa.internal.LPS.LPSProcessManager.<init>(LPSProcessManager.java:109)
    at com.ibm.cognos.camaaa.internal.LPS.LPSInstanceImpl.initialize(LPSInstanceImpl.java:196)
    at com.ibm.cognos.camaaa.internal.LPS.handler.LegacyProviderInstance.init(LegacyProviderInstance.java:167)
    at com.ibm.cognos.camaaa.internal.common.handler.HandlerFactoryImpl.initializeHandler(HandlerFactoryImpl.java:577)
    at com.ibm.cognos.camaaa.internal.common.handler.HandlerFactoryImpl.createHandler(HandlerFactoryImpl.java:324)
    at com.ibm.cognos.camaaa.internal.auth.handler.AuthHandler.populateHandler(AuthHandler.java:195)
    at com.ibm.cognos.camaaa.internal.auth.handler.AuthHandler.init(AuthHandler.java:146)
    at com.ibm.cognos.camaaa.internal.common.handler.HandlerFactoryImpl.initializeHandler(HandlerFactoryImpl.java:560)
    at com.ibm.cognos.camaaa.internal.common.handler.HandlerFactoryImpl.createHandler(HandlerFactoryImpl.java:324)
    at com.ibm.cognos.camaaa.internal.common.handler.HandlerChain.processHandlerChain(HandlerChain.java:296)
    at com.ibm.cognos.camaaa.internal.common.handler.HandlerChain.init(HandlerChain.java:214)
    at com.ibm.cognos.camaaa.internal.common.handler.HandlerFactoryImpl.initializeHandler(HandlerFactoryImpl.java:570)
    at com.ibm.cognos.camaaa.internal.common.handler.HandlerFactoryImpl.getHandlerChains(HandlerFactoryImpl.java:494)
    at com.ibm.cognos.camaaa.internal.common.handler.HandlerFactoryImpl.init(HandlerFactoryImpl.java:544)
    at com.ibm.cognos.camaaa.internal.common.handler.HandlerDispatcher.loadHandlerChains(HandlerDispatcher.java:273)
    at com.ibm.cognos.camaaa.internal.common.handler.HandlerDispatcher.init(HandlerDispatcher.java:267)
    at com.ibm.cognos.camaaa.internal.common.NamespaceInfo.initBinding(NamespaceInfo.java:162)
    at com.ibm.cognos.camaaa.internal.common.NamespaceManagerImpl.createNamespace(NamespaceManagerImpl.java:294)
    at com.ibm.cognos.camaaa.internal.common.NamespaceManagerForTest.init(NamespaceManagerForTest.java:80)
    at com.ibm.cognos.internal.camaaa.configtest.AAACnfgTask.run(Unknown Source)
    at com.cognos.crconfig.data.CnfgTask.run(CnfgTask.java:118)
    at com.cognos.crconfig.data.CnfgActionEngine$CnfgActionThread.run(CnfgActionEngine.java:394)
    Caused by: javax.naming.NameAlreadyBoundException: server [Root exception is java.rmi.AlreadyBoundException: server]
    at com.sun.jndi.rmi.registry.RegistryContext.bind(RegistryContext.java:169)
    at com.sun.jndi.toolkit.url.GenericURLContext.bind(GenericURLContext.java:240)
    at javax.naming.InitialContext.bind(InitialContext.java:436)
    at javax.management.remote.rmi.RMIConnectorServer.bind(RMIConnectorServer.java:655)
    at javax.management.remote.rmi.RMIConnectorServer.start(RMIConnectorServer.java:438)
    ... 34 more
    Caused by: java.rmi.AlreadyBoundException: server
    at sun.rmi.registry.RegistryImpl.bind(RegistryImpl.java:257)
    at sun.rmi.registry.RegistryImpl_Skel.dispatch(RegistryImpl_Skel.java:98)
    at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:486)
    at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:318)
    at sun.rmi.transport.Transport$1.run(Transport.java:212)
    at sun.rmi.transport.Transport$1.run(Transport.java:209)
    at java.security.AccessController.doPrivileged(AccessController.java:770)
    at sun.rmi.transport.Transport.serviceCall(Transport.java:208)
    at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:585)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:846)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:700)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler$$Lambda$466/00000000AD89C6E0.run(Unknown Source)
    at java.security.AccessController.doPrivileged(AccessController.java:704)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:699)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1160)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
    at java.lang.Thread.run(Thread.java:822)
    at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:315)
    at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:291)
    at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:392)
    at sun.rmi.registry.RegistryImpl_Stub.bind(RegistryImpl_Stub.java:73)
    at com.sun.jndi.rmi.registry.RegistryContext.bind(RegistryContext.java:167)
    ... 38 more


    After rebooting the computer (not only Cognos) I was able to connect with JConsole.
    However regarding your error message maybe the JRE version on Cognos side is not the same that the one is use by your JMX tools.

    Hope it help
    regards,

    ------------------------------
    Vivien
    ------------------------------



  • 3.  RE: 11.1.7 FP2 - Monitoring JVM externally (JMX activation)

    Posted 8 days ago
    Hi all,

    for those who would like to use JMX on 11.1.7 you could use this connexion string as workaround :

    service:jmx:rmi://Content_Manager_server/jndi/rmi://monitoring_server:port/server

    an APAR is already opened https://www.ibm.com/support/pages/apar/PH30864

    regards,

    ------------------------------
    Vivien
    ------------------------------