Hello Everybody,
I am happy to announce release 0.3.3 of Hawkular Metrics. The release is anchored by three
major and notable changes: REST API reorganization, tenant id changes, and Docker +
Kubernetes work.
1) REST API reoganization
- The API has been reorganized to follow a more traditional REST structure.
- The numeric metrics have been renamed to Gauage. Going forward the term number will be
used for an overarching category of metrics (gauge, counter, histograms, etc.).
- The root of the project has been updated to be consistent with the rest of the Hawkular
projects. The new root is
http://host:port/hawkular/metrics
The attached pdf document has the comparison for the API changes between 0.3.1 and 0.3.3.
2) Tenant Id
The tenant id has been removed from the URL to either a header parameter or a query
parameter. The query parameter can be used in cases (such as curl) where setting a header
is not possible, difficult, or inconvenient.
The concept of tenant will be an integral part of the project going forward. But we wanted
more flexibility in the way the tenant id for a request is derived. So removing the tenant
id from the URL will give us permanent & consistent resource addresses (metrics and
metric data points); and will gain a lot of flexibility on the security side. In the
future, users could authenticate with a user/pass combo and the backend would transform
that into a tenant id. If the same user later decides to use the tenant id header, the URL
of the resources accessed with the user/pass combo would not change. Another expectation
is that tenant id is not sufficient, it is typically a combo of id + secret; so we would
have resorted to a header or query param for the second piece of information (the secret)
in the long run anyway.
Here is an example of the change:
Existing URL:
/{tenantId}/gauge/{metricId}/data
New URL:
/gauge/{metricId}/data
Tenant id set via:
1) header - tenantId
2) query parameter - tenantId
There are two exceptions to this rule, /tenants and /db/{tenantid}/series. The /tenants
end-point will be changed into something different in the upcoming releases since it is
mostly a management type API that does not belong in the same place with the regular
metrics endpoint. And /db/{tenantid}/series end-point is needed in this exact format for
compatibility with Influxdb compatible services.
The attached pdf document includes the removal of the tenant id from the URL.
3) Docker and Kubernetes
Thanks to the amazing work done by Matt Wringe, we now have a subproject in Hawkular
Metrics that can be used to create components to be run on Openshift/Fabric8
(
https://github.com/hawkular/hawkular-metrics/tree/master/containers).
This includes:
a) A customized Cassandra docker image which uses a seed provider to automatically detect
other nodes running behind the same service.
b) A standalone dockerized Hawkular Metrics image. This will startup a hawkular metrics
instance which will automatically detect and connect to the Cassandra service.
c) A kubernetes application for a single step install into OpenShift or Fabric8. The zip
can even be deployed via the drag-n-drop mechanism in the Fabric8 console!
This is the foundation for later integrations that would require the project package in
the form of containers.
Github Release:
https://github.com/hawkular/hawkular-metrics/releases/tag/0.3.3
JBoss Nexus Maven artifacts:
http://origin-repository.jboss.org/nexus/content/repositories/public/org/...
Jira release tracker:
https://issues.jboss.org/browse/HWKMETRICS/fixforversion/12326937
Hawkular Metrics 0.3.4 and Beyond
Here is a list of features and enhancements that we planned for 0.3.4 and beyond.
1) Gauge Aggregates - Long-term storage of numeric metrics at the expense of losing some
fidelity. The design has been already presented and discussed during 0.3.3 release cycle.
The task queue work has already been started by John. We expect at least an initial
implementation to land in 0.3.4.
3) Go client - will help with integrating with third party metrics collection framework.
This work is the foundation for a Heapster sink.
4) Public Java API - following the work done in 0.3.1 for the core, the goal is to
separate the implementation from a public API and make that available to clients
5) Update REST testing - while the current set of tests is a good gauge for regressions,
the overall coverage is still low. The plan for 0.3.2 is to increase coverage.
6) Improved docker and kubernetes support
A big "Thank you" goes to John Sanda, Thomas Segismont, Mike Thompson, Matt
Wringe, and Heiko Rupp for their project contributions. Special mentions go to Jeeva
Kandasamy, Jirka Kremser, and Michael Burman for their project help.
Thank you,
Stefan Negrea
Software Engineer