[infinispan-dev] Health check use cases

Sebastian Laskawiec slaskawi at redhat.com
Thu Jul 28 08:09:01 EDT 2016


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]:
      - curl
      http://localhost:9990/management/subsystem=datagrid-infinispan/cache-container=local?operation=health&recursive=true&json.pretty=1
      - 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]:
      - curl 'http://localhost:9200/_cluster/health?pretty=true'
      - An example what Spring Actuator does [4]:
      - curl 'http://localhost:8080/health'
      - 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>
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>> 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
> https://lists.jboss.org/mailman/listinfo/infinispan-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/infinispan-dev/attachments/20160728/b338238f/attachment.html 


More information about the infinispan-dev mailing list