[Hawkular-dev] Labeling needs ?
Michael Burman
miburman at redhat.com
Tue Nov 1 03:08:45 EDT 2016
On 10/31/2016 11:59 PM, Matt Wringe wrote:
> hmm, interesting, we can list all the values values of a key, but not
> get the list of the key itself?
No one has asked for such feature (or created a ticket) ;)
Very simple to do though:
return (SELECT DISTINCT tenant_id, tname FROM metrics_tags_idx)
.filter(r -> tenantId.equals(row.getString(0))
.map(r -> r.getString(1))
.distinct()
.toList()
.map(HashSet<T>::new); // Technically redundant, distinct uses a Set already
And there you have it. Now go code ;)
> But the more important tag we want to keep track of is labels, and in
> this case the value is an array of key:value pairs, which doesn't work
> too nicely. We store this as a comma separated string and its possible
> to use regex in this case, but it starts to be really messy to write
> and is prone to errors. Its really not a great solution and looks
> really bad when people have to write these complex queries which
> should be really easy.
For quick fix, we could use a workaround like some applications that
have had this feature introduced later in the life-cycle: Use some
non-visible Unicode to separate the labels. Then just recreate them as
an array when returning the values.
This is simple to do and regexp matching is easy to fix without any user
visibility (we split the value before doing the matching).
> This feels like an 'event' what could be marked. I don't know if it
> needs to be applied to a datapoint directly, or stored in a separate
> list, or if it even needs to be stored in Hawkular Metrics.
I'd store it separately and then just in the reading phase enrich the
data with this. Such as event "deployment started", "deployment ended"
in the strings metrics (or something like it) and then merge that with
the datapoints fetched.
> The main thing I think is to be able to query the list of events which have occurred over a specific time frame.
And the previous suggestion answers this one.
> OpenShift has a lot of events it can gather, it could be really cool if we could display these events as marks in the graphs. I don't know if we can use Hawkular Metric string metrics to store these, or something in Alerts to do it. Heapster has a component to gather these events for us (https://github.com/kubernetes/heapster/tree/master/events).
I think we discussed this year or so ago, but nothing ever happened to
it (I think I even asked if I should implement the events part of
Heapster, but no one needed it at that point).
Actually, I discussed this first time when I sent the original mail to
Google guys if we can create the integration to Hawkular from Heapster.
> We may want to keep track of historic changes to tags. I know in OpenShift we store values in tags which can change at any point in time but I don't believe we can query what the values was at time X.
This will require some changes to the data storage, the previous
suggestions do not. This is a snapshot feature, but we don't have that
in Cassandra (unlike Accumulo has for example).
More information about the hawkular-dev
mailing list