Hawkular Metrics is a scalable, asynchronous, multi tenant, long term metrics storage engine that uses
Cassandra as the data store and REST as the primary interface. This section
provides an overview of some of the key features of Hawkular Metrics. The following sections provide in-depth
discussions on these as well as other features.
Hawkular Metrics is all about scalability. You can run a single instance backed by a single Cassandra node. You can
also scale out Cassandra to multiple nodes to handle increasing loads. The Hawkular Metrics server employs a stateless
architecture, which makes it easy to scale out as well.
This diagram illustrates the various deployment options made possible with Hawkular Metrics' scalable architecture. The
upper left shows the simplest deployment with a single Cassandra node and single Hawkular Metrics node.
The bottom right picture shows that it is possible to run more Hawkular Metrics nodes than Cassandra nodes. In reality
this scenario may be somewhat unlikely; however, this example. The Cassandra node is running on a machine with long
term persistent storage, but the Hawkular Metrics nodes are running in containers that can come or go at any time.
Running multiple nodes provides fault tolerance.
The upper right picture has a single Hawkular Metrics node with multiple Cassandra nodes. As load increases and there
is a need to scale out from the simple deployment in the upper left, this is the next logical step. Because of its
asynchronous, stateless design, a single Hawkular Metrics node can handle large numbers of requests. As the Cassandra
cluster expands that single Hawkular Metrics instance will be able to handle a larger load because it distributes the
requests across Cassandra nodes.
The bottom right picture has multiple Cassandra nodes as well as multiple Hawkular Metrics nodes. Multiple Hawkular
Metrics nodes are deployed in order to distribute load and to provide fault tolerance. Note that Hawkular Metrics
itself does not provide load balancing. A separate load balance would have to be put in front of the Hawkular Metrics
JSON over REST is the primary interface of Hawkular Metrics. This makes it easier for users to get started and also
makes integration easier since REST+JSON is widely used and easily understood.
a rich, growing set of features that includes:
Hawkular Metrics provides virtual multi tenancy. All data is mapped to a tenant, but the data on disk is not
physically partitioned by tenant. From an API perspective though, everything is partitioned by tenant. All requests,
both reads and writes, must include a tenant id.
Hawkular Metrics supports common metric types including:
Hawkular Metrics provides flexible tagging support that makes it easy to organize and group data. Tagging can also be
used to provide additional information and context about data.
Hawkular Metrics offers a rich set of features around querying that are ideal for rendering data in graphs and in
charts. This includes:
Filtering and grouping with tags
Searching metric definitions
Downsampling and aggregation
Limit and order results
Automatic Data Removal
Each metric or time series can be thought of as a continuous stream of data. In systems like this, deleting and purging
data presents some challenges due to the potentially unbounded data growth. Hawkular Metrics makes it much more
manageable by providing automatic data deletion and removal.