Search code examples
web-servicesmonitoringjmxfacade

Monitoring and logging strategy for a "facade webservice"?


I'm working on a "facade webservice" and I need to rethink part of it.

The context - my webservice (let's call it "FacadeWebservice") is an internal webservice developed to hide other webservices complexity from my system:

  • My FacadeWebservice calls ExternalWebserviceA, ExternalWebserviceB and will soon need to call ExternalWebserviceC.
  • ExternalWebserviceA, ExternalWebserviceB and ExternalWebserviceC are external webservices; they're subject to change and downtime.

Complexity is getting higher and higher, and I need to rethink the way I'm monitoring my FacadeWebservice and the external webservices. I need:

  • a complete view of my application status (number of calls, error codes sent)
  • a good idea of what's going on with external webservices (external webservices downtime, reponse codes received by my webservice - for example, one of them often go "technical error / readonly" for some time)
  • basically, a simple view/tool that shows the overall status.
  • service availability is pretty much covered (so I don't need apps like Nagios), I want to know what's going on at application level.

I was thinking about using JMX within my FacadeWebservice - this could provide me some ineresting graphs and statisics.

Is it the way to go? Or a good logging strategy is plenty enough for this task (even if external changes is a big part of my problem)?

Any advice or experience on the subject?


Solution

  • It is quite a complex requirement but you can try JavaMelody, http://javamelody.googlecode.com

    • "application status (number of calls, error codes sent)" : yes, via number of http calls and http errors
    • "external webservices" statistics: yes, it can be done with JavaMelody via interceptors if you use EJB3 or Spring
    • JavaMelody does monitoring at application level and it has "graphs and statistics": see screenshots