Hi,
1 - Aliasing metrics.
This is something we're also missing. Graphite and InfluxDB have the feature, and we deliberately kept the Grafana logic as close to KairosDB features. The feature in kairosDB would be nice to have (aliasing the metric in the query), since all other clients would benefit from it.
Maybe another feature request?
2 - Limiting group_by tag values.
I also agree on this one. This can be worked-around by defining filters, but building the query becomes too complicated.
The question is what do you have in mind: Top N metrics :
- using number of series using the same tag?
- using number of points in each group?
- using values of points in each groups?
- or another idea?
For example, we have a custom version of KairosDB on which we implemented what we named "vertical aggregators", those aggregators permit to perform calculations between distinct groups (existing aggregators in KairosDB are the equivalent of OpenTSDB downsampling aggregators). It is perfectly possible to imagine a vertical aggregator names TOP or BOTTOM that'd take the top or bottom : by value, or by tag cardinality.
3 - Converting to pure time-series.
Also a nice catch. We have done that by implemeting two custom aggregators.
- One is "interpolation": it does linear interpolation if a point is missing in a "bucket".
- Another is "drops": it inserts nulls values when there is no value in a "bucket" (unfortunately with the currrent design they cannot be chained together in a useful way).
- A "bucket" being defined by the sampling rate provided ot the aggregators.
- I have published the drops aggregator on my github, feel free to reuse it. I Can also send a PR if you like.
This is something we mostly use for some data analysis by getting a normalized sampling rate. It is also useful to get stacked charts working in Grafana (Grafana requires aligned sampling rates to stack charts).
Otherwise the regular behaviour of KairosDB that doesn't impose any sampling rate is the best fit for 90% of our use cases.
4 - Feed-back / other ideas ?It's goot to have this discussion opened to share about use cases and best choices or implementations.
We can contribute back some (or maybe all of them if my boss is OK) of our customized features to the community.
Loic