Slide 28
Slide 28 text
// Count is a go-restful filter that counts REST call statistics.
// It counts the following: request count, request round-trip time, response success count
// and rate, and response length.
func (lf *CounterFilter) Count(req *restful.Request, resp *restful.Response, c *restful.FilterChain) {
start := time.Now()
target := lf.getTarget(req)
// Record request duration
defer ctr.Time(makeReqTime(strOverall), start, Alert|Avg)
defer ctr.Time(makeReqTime(target), start)
// Count request sizes
ctr.Val(makeReqSize(strOverall), req.Request.ContentLength, Avg|Rate)
ctr.Val(makeReqSize(target), req.Request.ContentLength, Avg|Rate)
// Count request QPS
ctr.Event(makeReqEvent(strOverall), 1, Alert|Rate)
ctr.Event(makeReqEvent(target), 1)
c.ProcessFilter(req, resp)
// Count response codes
statusCode := resp.StatusCode()
ctr.Event(makeRespCode(strOverall, statusCode), 1)
ctr.Event(makeRespCode(target, statusCode), 1)