Open bitprophet opened 11 years ago
TRUTH_DB_URI=http://clusto.prod:9998
TRUTH_DB_HOSTNAME_LIST=/ua/search/prod.json
servers()
, services()
etc
scaleToSeconds(nonNegativeDerivative($METRIC),1)
and then can toss random shit into it - such as regular Metric objects..Count
". That could technically be done in a Graphite function too, but violates the normal spirit of "we work on the metric you give us"."%(foo)s
interpolation#{foo}
?Digging into specifics:
Need to figure out:
targets
method since that seems to be what's used in the URL builder? Maybe use a wrapper because targets
is used elsewhere too I think, like for saving back to the webapp.constructGraphUrl
actually expects a slightly different object type/hash (yay? sigh) and this is constructed ad-hoc in a bunch of spots, not always coming from a Graph either. So I need to modify constructGraphUrl
itself. Nbd.Have basic interpolation working \o/ and it does indeed seem to work everywhere.
Now running into:
Also don't see a way to set aliases easily via Descartes, which is another reason the legend is so enormous for my above graph. Torn between it being a Descartes responsibility and being something I should stuff into Graphite (so now this mythical function combines nonNegativeDerivative, scaleToSeconds and aliasByNode).
Revisiting this. Outstanding issues:
The problem
Use case is to "plug in" external values when generating graphs or dashboards, instead of only working with 100% literal/static metric paths.
For example, say you have a cluster of servers
s01
,s02
,s03
ands04
and you want all of their load averages in one graph.Currently one must load up the Metrics screen, filter for the metric(s) you want, and add to the in-progress graph until you're happy. So in the above example, to build a graph of your cluster's 5-minute load average, you would:
servers.s01.loadavg
, click onservers.s01.loadavg.05
servers.s02.loadavg
, click onservers.s02.loadavg.05
servers.s03.loadavg
, click onservers.s03.loadavg.05
servers.s04.loadavg
, click onservers.s04.loadavg.05
Scales real poorly for nontrivial cluster sizes, is annoying at best for trivial ones.
Alternately:
servers.s01.loadavg
, click onservers.s01.loadavg.05
s01
with e.g.s0[1-4]
or{s01,s02,s03,s04}
.Scales better for individual clusters, but requires its own annoying song and dance & thus doesn't scale when you need to manage many clusters.
Possible solutions
servers.$cluster01.loadavg.05
, the parse step looks in a config file or talks to an API, and expands$cluster01
intoso[1-4]
.servers.<server>.loadavg.05
, then Descartes loads up that path and shows you the graphs with all existing Cluster or Host values plugged in.