Jump to content

Alert Monitoring with 2 App servers


Recommended Posts

Hi Team, 
Per the documentation, we have configured alert monitoring in 1 of the 2 application servers. But the jobs are running fine in 1 out of 5 executions (probably when run through the server where it is configured). If it is executing through the other app server then it fails. 
We have turned off one of the app servers and scheduled the alerting job, which was executed successfully all the time. 

Please provide your inputs on the same.

Below is the error message:

Task 2 'Apply Rules' failed with: Spotfire.AlertingFramework.DataManager.DataManagerConfigurationException: Unable to contact Alerting Server at https://spotfirephodev.wdc.com/alerting at Spotfire.AlertingFramework.DataManager.DataManager.checkConnectivity() at Spotfire.AlertingFramework.DataManager.DataManager.GetBaseSubscriptions(List`1 sids) at Spotfire.AlertingFramework.Tasks.RulesTask.ExecuteCore(TaskExecutionContext context)

Link to comment
Share on other sites

Sorry, I missed the information.
Since Spotfire is under a load balancer, you should use that specific server name  (not the load balancer name) for the alerting URL. Indeed, all traffic redirected by the load balancer to the wrong server will fail. If for some convenience reasons, you want to keep the load balancer, note that some load balancers allow the health check or other rules that can be used to  direct the traffic to a good app server

  • Like 1
Link to comment
Share on other sites

  • 2 weeks later...

Hi Praveen,

To be clear, when you have one application server, it works fine. But in a clustered setup, it fails whenever the 'wrong' application server is being used to run the schedule.

What does the alerting.log mentions about the error403?

Can you also share a screenshot of the alerting.properties and the setup in the Analyst?

Kind regards,

David

Link to comment
Share on other sites

Hi David, 
The server URL with one of the app server host names is not working and throws a 403 error. 

http://xxx/spotfire/ I am trying this to validate, but it throws "http://xxx/spotfire/ui/error/error403". 

Can we replace the load balancer URL with this in the alerting properties and try again? do you think it may work?

Edited by Dave Leigh
Link to comment
Share on other sites

Hi Praveen,

The alerting properties should hold the url to the spotfire server, in your case that would probably be (or https if you use that):
alerting.spotfire.url=http://pbt-md-sfssxd01.ad.shared/spotfire

In the Analyst, you have to refer to the alerting server url (yours should be http://pbt-md-sfssxd01.ad.shared/alerting):
image.thumb.png.a2f989ac3dc7103198871f306832ea88.png

This may help you out, but if not, please share your alerting.log file, your alerting.properties as well as a screenshot of the Preferences.

Kind regards,

David

Link to comment
Share on other sites

Hi David, 

I have updated the alerting.properties and the alerting service URL. Got below issues

 

Automation Job error message:
 

Task 2 'Apply Rules' failed with: Spotfire.AlertingFramework.DataManager.DataManagerConfigurationException: Unable to contact Alerting Server at https://XXXX.wdc.com/alerting at Spotfire.AlertingFramework.DataManager.DataManager.checkConnectivity() at Spotfire.AlertingFramework.DataManager.DataManager.GetBaseSubscriptions(List`1 sids) at Spotfire.AlertingFramework.Tasks.RulesTask.ExecuteCore(TaskExecutionContext context)
 
 

Alerting Log:

2024-09-06 12:51:34.171 ERROR 6276 --- [scheduling-1] c.t.p.s.a.scheduler.RunLogScheduler      : 

com.tibco.psg.spotfire.alerting.services.SubscriptionNotFoundException: Subscription with ID:39f5d1f0-a00d-47a2-b149-47a5f7f92cf4 is not found.
    at com.tibco.psg.spotfire.alerting.services.SubscriptionNotFoundException.createExceptionForId(SubscriptionNotFoundException.java:28) ~[classes/:1.1.0]
    at com.tibco.psg.spotfire.alerting.services.AlertsService.updateRunLog(AlertsService.java:672) ~[classes/:1.1.0]
    at com.tibco.psg.spotfire.alerting.services.AlertsService$$FastClassBySpringCGLIB$$ba5ab02c.invoke(<generated>) ~[classes/:1.1.0]
    at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.3.31.jar:5.3.31]
    at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386) ~[spring-aop-5.3.31.jar:5.3.31]
    at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85) ~[spring-aop-5.3.31.jar:5.3.31]
    at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:703) ~[spring-aop-5.3.31.jar:5.3.31]
    at com.tibco.psg.spotfire.alerting.services.AlertsService$$EnhancerBySpringCGLIB$$1ffab9ff.updateRunLog(<generated>) ~[classes/:1.1.0]
    at com.tibco.psg.spotfire.alerting.scheduler.RunLogScheduler.updateStatus(RunLogScheduler.java:63) ~[classes/:1.1.0]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
    at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]
    at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:84) ~[spring-context-5.3.31.jar:5.3.31]
    at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) ~[spring-context-5.3.31.jar:5.3.31]
    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) ~[na:na]
    at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305) ~[na:na]
    at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) ~[na:na]
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[na:na]
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[na:na]
    at java.base/java.lang.Thread.run(Thread.java:833) ~[na:na]
 

Link to comment
Share on other sites

Hi Praveen,

Looking at the alerting log message, it seems that the subscription id is not found in the alerting database. Can you check that?
As the job fails at task two (the apply rules), it seems to me that the alerting server is working (otherwise it wouldn't have started at all).

Can you:
- create a new subscription, a simple one (just open an analysis file and send an email for instance);
- check in the database if the subscription is created properly (SUBSCRIPTIONS table);
- run the alert and check out if there are new entries in the RULE_RUN_LOG table;
- check the created .xml file for the alert and try to run it directly from the Automation Services job builder in the Analyst.

If this works, it might be that if you re-create the original subscription, it will then work.

Kind regards,

David

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...