[infinispan-dev] Health check use cases
Tristan Tarrant
ttarrant at redhat.com
Thu Jul 28 09:05:19 EDT 2016
We are a bit more complex than either ES and SA :)
First of all this needs to work for both standalone and domain modes, as
well as support multiple cache containers. I believe it is possible to
register an io.undertow.server.HttpHandler in the ManagementHttpServer
to handle additional request types and have convenient aliases for the
queries below.
Tristan
On 28/07/16 14:09, Sebastian Laskawiec wrote:
> Hi Tristan!
>
> I've been investigating the possibility of integrating with WF
> monitoring endpoint and I found this article: [1].
>
> If I understand the Infinispan and Wildfly integration bits correctly
> - all we need to do is to implement additional resources in [2]. This
> should make the new API available through CLI as well as through REST [1].
>
> The biggest advantage of this solution is that one implementation
> solves both REST and CLI use cases at the same time. However there are
> some drawbacks too - we won't be able to support any custom queries
> (we are limited only to queries supported by WF bits) and the REST api
> will be a bit complicated to consume:
>
> * Imaginary examples based on [1]:
> o curl
> http://localhost:9990/management/subsystem=datagrid-infinispan/cache-container=local?operation=health&recursive=true&json.pretty=1
> o curl
> http://localhost:9990/management/subsystem=datagrid-infinispan/cache-container=local/local-cache=default?operation=health&json.pretty=1
> * An example what ElasticSearch does [3]:
> o curl 'http://localhost:9200/_cluster/health?pretty=true'
> * An example what Spring Actuator does [4]:
> o curl 'http://localhost:8080/health'
> o curl 'http://localhost:8080/metrics'
>
> If I'm right - we will need to document this feature correctly since
> those URLs are not very intuitive. WDYT?
> Thanks
> Sebastian
>
> [1] https://docs.jboss.org/author/display/WFLY10/The+HTTP+management+API
> [2]
> https://github.com/infinispan/infinispan/tree/master/server/integration/infinispan/src/main/java/org/jboss/as/clustering/infinispan/subsystem
> [3]
> https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-health.html
> [4] https://spring.io/guides/gs/actuator-service/
>
> On Tue, Jul 26, 2016 at 10:34 AM, Tristan Tarrant <ttarrant at redhat.com
> <mailto:ttarrant at redhat.com>> wrote:
>
> On 26/07/16 10:24, Sebastian Laskawiec wrote:
> > Hey Tristan!
> >
> > Comments inlined.
> >
> > Thanks
> > Sebastian
> >
> > On Tue, Jul 26, 2016 at 9:50 AM, Tristan Tarrant
> <ttarrant at redhat.com <mailto:ttarrant at redhat.com>
> > <mailto:ttarrant at redhat.com <mailto:ttarrant at redhat.com>>> wrote:
> >
> > On 26/07/16 07:10, Sebastian Laskawiec wrote:
> > > Dear Community,
> > >
> > > I'd like to ask you for help. I'm currently sketching a
> design for a
> > > REST health check endpoint for Infinispan and I'm trying
> to imagine
> > > possible use cases.
> > The health-check should be implemented as an MBean
> initially, with the
> > ability to expose it via alternative implementations later.
> The server
> > RESTful endpoint should be registered with the management
> > interface via
> > a special handler.
> >
> >
> > Yes, I think it's a good idea. We could even use tools like Jolokia
> > [1] to expose MBeans through REST interface (it can be added to
> > standalone.conf to the bootstrap classpath). Alternatively we could
> > use JDK embedded HTTP Server [2].
>
> No, for server we would not use Jolokia but rely on the management
> HTTP
> server (the one that handles port 9990 already).
>
> >
> > A cache and cachemanager's health is determined by a
> combination of
> > parameters and we probably should allow for a user-pluggable
> > checker. We
> > already expose a number of statuses already, although
> obviously this
> > would be an aggregate.
> >
> >
> > Could you please elaborate more on that? How do we expose this
> > information? Are you referring to Infinispan Stats [3]?
> >
> > I also though about supporting queries somehow. An imaginary example
> > from the top of my head could look like the following:
> >
> >
> http://$ISPN/_health?cluster.nodes=3&MyCacheManager.MyCache.status=DEGRADED
> > //<-- This would return 200 OK if we have 3 nodes and given cache is
> > in degraded mode.
> >
> http://$ISPN/_health?cluster.nodes=3&MyCacheManager.rebalance=IN_PROGRESS
> > //<-- Checks if we have 3 nodes and rebalance is in proress
> >
> > [3]
> >
> https://github.com/infinispan/infinispan/tree/8.2.x/core/src/main/java/org/infinispan/stats
> >
> >
> > >
> > > Could you please give me a hand and tell me what
> functionalities are
> > > important for you? Would you like to be able to check status
> > per-cache
> > > or maybe a red (not healthy), green (healthy), yellow
> (healthy,
> > > rebalance in progress) cluster status is sufficient? What
> kind of
> > > information do you expect to be there?
> > I wouldn't want this to be overly complex: a simple OK, KO
> should be
> > sufficient. Additional detail may be optionally present, but
> not a
> > requirement.
> >
> >
> > I think we will need at least a 3rd state - yellow or something like
> > this. This would mean that a rebalance is in progress of a node is
> > joining/leaving. In other words - the cluster accepts requests but
> > don't touch the nodes!
> Agreed.
>
> Tristan
> _______________________________________________
> infinispan-dev mailing list
> infinispan-dev at lists.jboss.org <mailto:infinispan-dev at lists.jboss.org>
> https://lists.jboss.org/mailman/listinfo/infinispan-dev
>
>
>
>
> _______________________________________________
> infinispan-dev mailing list
> infinispan-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/infinispan-dev
More information about the infinispan-dev
mailing list