5

I have data in graphite in following format:

app.service.method_*.m1_rate (rate of calls per minute)
app.service.method_*.avg_time (avg response time per minute)

I would like to get graph with total estimated time given method is running per minute. In other words - multiply rate by avg time so I can learn from one graph what calls are taking most. If I can get it going I can then limit this (I know how :) ) to top N results of such multiplication.

Neither rate itself does not give me that information (high rate of very fast calls is not a problem) nor avg time (high average time on a service called once per 5 minutes is also not a problem).

Any suggestions?

wciesiel
  • 558
  • 5
  • 14

2 Answers2

1

This can be done with multiplySeriesWithWildcards

multiplySeriesWithWildcards(app.service.method_*.{m1_rate,avg_time}, 3)

zlace
  • 595
  • 3
  • 13
-4

May be multiplySeries could help you.

  • 1
    I've seen this function, the problem is that it is not too well documented... it is easy to multiply two series like: app.service.method_readData.rate by app.service.method_readData.avg_time I need to multiply two lists of series by matching wildcard (I have lists of metrics like above for a dozen different methods). – wciesiel Apr 23 '15 at 16:09
  • In this case, may be it will be easy to multiply metrics before graphite using some scripts, and only then store it in graphite like single metric. – Dmitry Shihovtsev Apr 24 '15 at 03:11
  • I am facing the same issue. I need to multliply a list of series by different series. Can't find an easy way with Graphite/Grafana. multiplySeries multiplies them all together which is not what I would expect. Did you manage to find a solution @wciesiel? – Tom Raganowicz Jan 02 '17 at 12:36