2

Say I have a series of request timings and and I want to score them and I have 2 thresholds, 4s and 12s. A request completed in 4s or less gets +1, between 4s and 12s gets +0, and over 12s gets -1. I want to sum up the scores and then divide them by the total count of the timings. How can I do this in Librato?

salmonthefish
  • 93
  • 1
  • 6

1 Answers1

4

Currently Librato doesn't offer an Apdex score, but there are ways to get an overview of the request timings.

One simple method would be to build a composite metric using the map() function. This would allow you to break out your metrics request time by host, and visualize the request rate per minute:

map({source:"*"},
  rate(s("query-api.rails.request.time", "&", { period: "60", function: "sum" }))
)

If you are wanting a Big Number chart that provides a general idea of the overall request times (as the Apdex score provides) then you could use the following composite metric to display the percentage of hosts reporting under 400 ms:

scale(
  divide([
  sum(
      map({source:"*"},
          divide([
              filter(s("query-api.rails.request.time", "&", { period:"60", function:"mean" }), {lt: "400", function: "mean"}),
              filter(s("query-api.rails.request.time", "&", { period:"60", function:"mean" }), {lt: "400", function: "mean"})
          ])
      )
  ),
  sum(
      map({source:"*"},
          divide([
              s("query-api.rails.request.time", "&", { period:"60", function:"mean" }),
              s("query-api.rails.request.time", "&", { period:"60", function:"mean" })
          ])
      )
  )
]),
{factor:"100"})

Both of these examples utilize the metric query-api.rails.request.time which comes from librato-rails, but you could substitute this metric with any metric that reports the request time (eg. the front-end collector librato-client).

Greg
  • 1,589
  • 9
  • 14