hface icon indicating copy to clipboard operation
hface copied to clipboard

Is there a way to support Apache Ignite cluster?

Open dsetrakyan opened this issue 9 years ago • 4 comments

Would it be possible to reuse the same UI to monitor other clusters? For example Apache Ignite which also implements JCache (JSR 107) spec?

https://ignite.incubator.apache.org/

dsetrakyan avatar Jun 03 '15 03:06 dsetrakyan

Interesting question. I did play with GridGain (that is "Apache Ignite" now, right?) several years ago: https://github.com/tolitius/gridy-batch, it was fun :)

As to UI support, I don't see why it won't be possible. It won't be pluggable from the get-go, since hface uses stats sent from the server in the form of: https://github.com/tolitius/hface/blob/master/dash/test/resources/sample/stats.json i.e. Hazelcast specific + it adds up an aggregated portion: "per-node + aggregated".

I don't know whether Apache Ignite has same distributed object concepts as Hazelcast does (map, multimap, queue, list, set, topic, executor, etc..). Depending on whether it does or not, the UI can either be reused or will need to be split in two: Hazelcast and Ignite views.

I see two ways it can be done:

  1. Ignite creates stats in the current format hface can understand and digest with no change
  2. Ignite creates stats in a different format which hface can learn to understand

If you give a bit more details on which part of Ignite you are interested hface to cover, it'll become clear(er) which way to go.

tolitius avatar Jun 04 '15 04:06 tolitius

Anatoly, thanks for your response!

Apache Ignite was initially based on the GridGain open source edition, but the product and APIs significantly changed over several years. Specifically, Ignite is an implementation of the JCache (JSR 107) specification now. To my knowledge, Hazelcast also implements that specification, so many APIs will be similar. Ignite also significantly improved on its SQL querying and Streaming capabilities.

As far as metrics go, every node in Ignite has information about all other nodes. There is a concept in Ignite, called ClusterGroup, which provides aggregate metrics across a set of nodes. In this way you can get metrics for the whole Cluster quite easily.

If you are using JCache API to collect metrics, then you should have the same metrics in Ignite. Otherwise, I would suggest to use Ignite native metrics, as they have a lot more information.

If you can volunteer to contribute your code to the Apache Ignite project, the Ignite community will greatly appreciate it. Such a valuable contribution will significantly help the project. We also would love to have you as a committer to Apache Ignite, given your expertise in the area.

dsetrakyan avatar Jun 04 '15 22:06 dsetrakyan

Dmitriy,

The reason I recently started hface is simple and quite usual: I have a couple of paying projects where I use Hazelcast clusters. Hazelcast management center is free up to 2 nodes, and costs money for anything beyond. Which makes sense, not only because it is great, but also because Hazelcast itself is a great product and they need to make money. However there is no guarantee that customers would pay, but I still like to have a cluster wide visibility, hence "roll your own, and learn something new in the process", since I am not a front end guru.

Which makes the hface value to be not exactly its GUI piece, but the fact that it collects and aggregates cluster wide stats for any number of Hazelcast nodes.

I skimmed through Apache Ignite docs, it looks very polished and clean. I am not in a position to commit anything to it though. I casually hack on things at my spare time with no "commit"ment :) And mostly on things I need work related / personally, since it's the best motive.

But I am interested in making hface help in non Hazelcast universes. hface does not use JCache, since it needs more stats than just "cache": cluster / node, distributed objects / tasks specific, etc.

As a 5 minute exercise, I stood up a single Ignite node, loaded some data in, but was not able to connect to it via ignitevisorcmd.sh to look at stats. While I understand that I missed something, adopting hface to Ignite would work best against a live cluster:

  • Is there a dev/sample Ignite cluster I can connect to to gather stats?
  • Is there a documentation on how to get (non JCache) stats from a running Ignite cluster?
  • Docs (source is fine) on what stats represent?

tolitius avatar Jun 06 '15 20:06 tolitius

Anatoly, unfortunately there is no dev/sample Ignite cluster. However, you can easily access Ignite metrics from any Java program. Please take a look at the very simple metrics example provided here: http://apacheignite.readme.io/v1.1/docs/cluster-groups#cluster-group-metrics

dsetrakyan avatar Jun 09 '15 00:06 dsetrakyan