2016-01-11 7 views
9

Ich habe folgende Kennzahlen:Summe mehrerer Metriken ohne Summierung über einen Platzhalter?

  • folsomite.<host>.cache.hit1
  • folsomite.<host>.cache.hit2
  • folsomite.<host>.cache.miss1
  • folsomite.<host>.cache.miss2
  • folsomite.<host>.cache.miss3

(Die Caching-Bibliothek ich benutze hat 2 Geschmack s des Treffers: erste Chance und zweite Chance und 3 Aromen von Miss)

Und ich möchte (hit1 + hit2)/(miss1 + miss2 + miss3) berechnen. Ich dachte, ich würde mit der Berechnung (hit1 + hit2) beginnen, aber wenn ich sumSeries als sumSeries(folsomite.*.cache.hit*) verwende, dann summiert es sich auch über die <host> Werte.

Wie summiere ich mehrere Metriken über einige Wildcards, ohne über andere Wildcards zu summieren? Oder wie füge ich speziell zwei (oder mehr Metriken) hinzu, während die Platzhalter beibehalten werden?

Und nachdem ich das getan habe, kann ich ein (summiertes) Ergebnis durch ein anderes teilen?

Bearbeiten: Ich benutze tatsächlich Grafana, um die Grafiken zu rendern. Macht das einen Unterschied?

Antwort

10

Hinweis Ich habe das nicht gelöst, aber Informationen könnten hilfreich sein. Nehmen wir an, es gibt unter Daten in Graphit

folsomite.A.cache.hit1 
folsomite.B.cache.hit1 
folsomite.A.cache.hit2 
folsomite.C.cache.hit1 
folsomite.B.cache.hit2 
folsomite.A.cache.miss1 
folsomite.B.cache.miss1 
folsomite.A.cache.miss2 
folsomite.A.cache.miss3 
folsomite.C.cache.miss2 
folsomite.B.cache.miss2 

Zur Gruppe durch eine Wildcard, sollten Sie groupByNode so

groupByNode(folsomite.*.cache.hit*, 1, 'sumSeries') 

ausgeben wird Metriken A, B, C mit summierten Treffern verwenden. Da groupByNode on miss die gleichen metrischen Namen zurückgibt, sollten wir sie irgendwie unterscheiden. Verwenden Sie aliasSub. So, jetzt haben wir:

aliasSub(groupByNode(folsomite.*.cache.hit*, 1, 'sumSeries'), '(.*)', '\1.hit') 
aliasSub(groupByNode(folsomite.*.cache.miss*, 1, 'sumSeries'), '(.*)', '\1.miss') 

und metrisch wir bekommen sind A.hit, B.hit, C.hit, A.miss, B.miss, C.miss.

Als nächstes könnten wir versuchen reduceSeries (das funktioniert nicht für mich, ich vermisse etwas :)). erwarten Liste der Serie seit reduzieren zu arbeiten, muss es sein, kombinieren, indem group oder mapSeries, so

group(
    aliasSub(groupByNode(folsomite.*.cache.hit*, 1, 'sumSeries'), '(.*)', '\1.hit'), 
    aliasSub(groupByNode(folsomite.*.cache.miss*, 1, 'sumSeries'), '(.*)', '\1.miss') 
) 

ausgeben wird gänzlich vermissen und Hit-Serie. Jetzt reduzieren

reduceSeries(
    group(
    aliasSub(groupByNode(folsomite.*.cache.hit*, 1, 'sumSeries'), '(.*)', '\1.hit'), 
    aliasSub(groupByNode(folsomite.*.cache.miss*, 1, 'sumSeries'), '(.*)', '\1.miss') 
    ), 'divideSeries', 1, 'hit', miss') 

Das ist alles. Vielleicht werde ich später einen anderen Ansatz versuchen, aber ... ich hoffe es wird zumindest einen Hinweis geben.

Und seit Grafana haben die Möglichkeit, Vorlagen mit Variablen zu setzen, ist es möglich, aber ich würde in diese Funktion eintauchen müssen.