We are trying to deploy the Processes (Enhanced) monitoring profile but some of the robots do not display the list of processes and Operator Console page does not display any errors.
The mon_config_service log does not display any errors when issue is produced except for the error captured in the ..\Nimsoft\probes\service\wasp\nimmcs-ui-app.log located on the OC robot
WARN com.ca.uim.mcs.logging.SimpleLogFactory$DefaultLogger:log:52 [https-jsse-nio-443-exec-4] - RetryNimRequest.retryOnCommSessionError:99: Detected session error sending request. Unable to open a client session for %RobotIPAddress%:48009 Code 80
ERROR com.ca.uim.mcs.api.controller.CallbackController:sendCallbackEx:228 [https-jsse-nio-443-exec-4] - Unexpected error occurred.
com.ca.uim.mcs.api.exception.ServerErrorException: Failed to execute list_processes callback against processes.
at com.ca.uim.mcs.api.service.CallbackService.executeCallback(CallbackService.java:106)
at com.ca.uim.mcs.api.service.CallbackService$$FastClassBySpringCGLIB$$cea6da9a.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:668)
at com.ca.uim.mcs.api.service.CallbackService$$EnhancerBySpringCGLIB$$7145013c.executeCallback(<generated>)
at com.ca.uim.mcs.api.controller.CallbackController.sendCallbackEx(CallbackController.java:201)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:854)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:765)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:710)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:457)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:384)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:312)
at com.ca.uim.mcs.api.filter.SwaggerUIRedirectFilter.doFilter(SwaggerUIRedirectFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at com.firehunter.ump.auth.JWTVerificationFilter.doFilter(JWTVerificationFilter.java:164)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:667)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1707)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
Caused by: (80) Session error, Unable to open a client session for %RobotIPAddress%:48009: Connection timed out: connect
Release : Any version
Component : UIM OPERATOR CONSOLE - MCS UI
Communication on UIM ports is blocked between the Operator Console and robot servers
The solution is to deploy/enable the Configuration Service Options on primary hub robot which provides the ability to configure a Callback Proxy for MCS communication with robots.
Steps:
1. Select the Primary Hub in the OC Inventory and deploy the 'Configuration Service Options' Monitoring profile
Note: The Configuration Service Options requires the mon_config_service probe which is already installed
2. Enable both the 'Configure probes immediately' and 'Enable Callback Proxy' options
3. Select the Primary hub address in the 1st Callback Proxy Address
Example: /<domain>/<hub>/<robot_address>/mon_config_service
4. Select a secondary hub adress if applicable in the 2nd Callback Proxy Address field
Note: If you do not have a failover secondary Hub, leave the 2nd Callback Proxy Address field empty.
5. Validate that issue is resolved.
The Configuration Service Options profile is needed only in cases where the OC robot does not have access (e.g. due to firewall blocking) to the 'other' robots in the environment, but the primary hub does. Normally, OC tries to directly reach the robots (or use a tunnel if present.) If there is no tunnel, the OC robot tries to set the probe configurations directly and not use the mon_config_service probe. If a firewall prevents direct contact to the robots, then you can enable and configure the proxy callbacks which will cause the OC to use the MCS probe (mon_config_service) to reach/talk to the robots and not try to talk to them directly.
When mon_config_service_proxy_callback is ENABLED, OC will use the MCS probe to do its work. When it is NOT enabled the OC will do its work directly. In general, this has nothing to do with secondary/HA failover node really other than the fact that the mon_config_service probe can only be deployed on a primary or HA/failover hub. That is just one scenario of how it could be configured. Essentially its a communication workaround when firewalls are blocking OC's ability to reach target robots where MCS is trying to deploy profiles.